RESPUESTA A LA PREGUNTA 823 Sintaxis @ SAY [FUNCTION ] [PICTURE ] [SIZE , ] [FONT [, ] [COLOR SCHEME | COLOR ] Comentarios Utilice este comando para mostrar la salida con formato en el escritorio de FoxPro para MS-DOS, la ventana principal de FoxPro en Windows o una ventana definida por el usuario. También puede usarse para dar formato a la salida que se envía a la impresora. Si utiliza el Generador de pantallas para crear sus pantallas de entrada de datos puede que no necesita usar @ ... SAY. El Generador de pantallas genera automáticamente los comandos @ ... SAY. Es posible combinar @ ... SAY y @ ... GET en un solo comando. Si se incluyen a la vez las cláusulas SAY y GET, deberá incluirse un solo conjunto de coordenadas que especifique dónde empieza la salida de @ ... SAY. Entre las regiones de salida de @ ... SAY y de edición de @ ... GET se inserta automáticamente un espacio en blanco. Si emite el comando SET DEVICE TO SCREEN, la salida de @ ... SAY aparecerá en el escritorio, la ventana principal de FoxPro o una ventana activa definida por el usuario. SET DEVICE TO SCREEN es la opción de inicio predeterminada. Si emite SET DEVICE TO PRINTER, la salida se dirigirá a la impresora. Cláusulas Fila y columna son expresiones numéricas con valores de 0 o mayores que 0. El número de la primera fila es 0 en el escritorio, la ventana principal de FoxPro o en una ventana definida por el usuario. En FoxPro para MS-DOS, la fila 0 es la fila que ocupa la barra de menús del sistema de FoxPro. Consulte SET SYSMENU para obtener información acerca de la manipulación de la barra de menús del sistema para poder situar la salida en la línea 0. En FoxPro para Windows, la fila 0 es la fila que se encuentra inmediatamente por debajo de la barra de menús del sistema. Las filas se numeran de arriba a abajo. Para las impresoras, la primera línea es la 1 y el tamaño físico de la página y el número de líneas por página determinan el número máximo de línea. La primera columna es la número 0 en el escritorio, la ventana principal de FoxPro o una ventana definida por el usuario. Las columnas se numeran de izquierda a derecha. Para las impresoras, la primera columna es la 1 y el tamaño físico de la página determina el número máximo de columna. Cuando la salida de @ ... SAY se dirige a una ventana definida por el usuario, las coordenadas fila y columna son relativas a la ventana definida por el usuario, no al escritorio, en FoxPro para MS-DOS, ni a la ventana principal de FoxPro en FoxPro para Windows. En FoxPro para Windows, una posición en la ventana principal de FoxPro o en una ventana definida por el usuario está determinada por la fuente de la ventana principal de FoxPro o de la ventana definida por el usuario. La mayoría de las fuentes que usa Microsoft Windows pueden mostrarse en una amplia variedad de tamaños y algunas están espaciadas proporcionalmente. Una fila corresponde al alto de la fuente actual; una columna corresponde al ancho medio de una letra en la fuente actual. Consulte Fuentes para obtener información adicional acerca de fuentes. Para facilitar el ajuste preciso de la posición de salida en la ventana principal de FoxPro o en una ventana definida por el usuario, en FoxPro para Windows es posible usar fracciones decimales para las coordenadas de fila y columna. En FoxPro para MS-DOS, las fracciones decimales de las coordenadas de fila y columna se redondean al valor entero más próximo. se evalúa y se muestra o se imprime empezando en . Puede ser una función definida por el usuario (FDU). FUNCTION | PICTURE Es posible incluir la cláusula FUNCTION, la cláusula PICTURE o ambas para controlar cómo se muestra o se imprime . Los códigos FUNCTION pueden incluirse en una cláusula PICTURE. En este caso, la cláusula PICTURE debe empezar con @. Una cláusula PICTURE puede contener códigos FUNCTION, códigos PICTURE o ambos. Como la cláusula FUNCTION afecta a la expresión completa sólo puede contener códigos FUNCTION. Códigos de función Propósito B Justifica a la izquierda los datos numéricos dentro de la región de visualización. C Muestra CR después de los números positivos para indicar crédito. Sólo puede usarse con datos numéricos. D Usa el formato SET DATE actual. E Edita los datos tipo fecha como fechas en formato BRITISH. T Elimina los espacios en blanco iniciales y finales de . X Muestra DB después de los números negativos para indicar débito. Sólo puede usarse con datos numéricos. Z Muestra como espacios vacíos si su valor numérico es 0. Sólo puede usarse con datos numéricos. ( Encierra los valores negativos entre paréntesis. Sólo puede usarse con datos numéricos. ! Convierte los caracteres alfabéticos en mayúsculas. Sólo puede usarse con datos de cadena. ^ Muestra los datos numéricos usando notación científica. Sólo puede usarse con valores numéricos. $ Muestra los datos en formato de moneda. El símbolo de moneda aparece antes o después del valor dependiendo de la configuración de SET CURRENCY. Sólo puede usarse con datos numéricos. Una expresión PICTURE puede incluir cualquier carácter, pero sólo los caracteres que se listan más abajo participan en la visualización y la impresión. Códigos PICTURE Propósito X Permite cualquier carácter. Y Permite sólo los caracteres lógicos "Y", "y", "N", "n". Convierte los caracteres "y" y "n" a "Y" y "N", respectivamente. ! Convierte las letras minúsculas a mayúsculas. $ Muestra el símbolo de moneda actual especificado por SET CURRENCY. Como opción predeterminada, el símbolo se muestra inmediatamente antes o después del campo. Sin embargo, es posible cambiar el símbolo de moneda y su ubicación (SET CURRENCY), el carácter separador (SET SEPARATOR) y el carácter decimal (SET POINT). * Muestra asteriscos delante del valor numérico. Especifica la posición del punto decimal. , Se usa para separar los dígitos a la izquierda del punto decimal. El siguiente ejemplo combina dos códigos FUNCTION para dar formato a un valor numérico. Los códigos $$ crean un signo flotante de dólar y la C añade CR después del número. CLEAR @ 2, 2 SAY 1.15 FUNCTION 'C$$' SIZE , La cláusula SIZE permite controlar la longitud y la altura de una región @ ... SAY de visualización o de impresión. FoxPro crea una región de una línea de altura como opción predeterminada. Es posible incluir la cláusula opcional SIZE para crear una región de más de una línea de altura. La altura de la región en líneas está especificada por y el ancho en columnas por . L28 de @ ... SAY se ajusta automáticamente por líneas al ancho especificado por por filas. En FoxPro para Windows, la fuente de @ ... SAY determina el tamaño de la región de edición. La fuente de @ ... SAY se especifica con la cláusula FONT. Si se omite la cláusula FONT, la salida de @ ... SAY utilizará la fuente de su ventana madre (la ventana principal de FoxPro o una ventana definida por el usuario). FONT [, ] La expresión alfanumérica es el nombre de la fuente y la expresión numérica es el tamaño de la fuente. Por ejemplo, el siguiente comando muestra el texto de @ ... SAY usando la fuente Roman de 16 puntos: @ 2, 2 SAY 'Ejemplo de la cláusula FONT' FONT 'ROMAN', 16 Si se incluye la cláusula FONT pero se omite el tamaño de la fuente , su utilizará una fuente de 10 puntos. Si la fuente especificada no está disponible, Windows la sustituirá por otra fuente de características similares. La cláusula FONT se ignora en FoxPro para MS-DOS. STYLE En FoxPro para Windows es posible incluir la cláusula STYLE para especificar un estilo de fuente para la salida de @ ... SAY. Windows determina qué estilos están disponibles para cada fuente. Si el estilo de fuente especificado no está disponible, Windows lo sustituirá por otro de similares características. El estilo de fuente está especificado por . Si se omite la cláusula STYLE se usará el estilo de fuente estándar. Carácter Estilo de fuente B Negrita I Cursiva N Normal O Contorno Q Opaco S Sombreado - Tachado T Transparente U Subrayado Es posible incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el siguiente comando especifica negrita cursiva: @ 2, 2 SAY 'Ejemplo de cláusula FONT' STYLE 'BI' La cláusula STYLE se ignora en FoxPro para MS-DOS. COLOR SCHEME | COLOR Si no se incluye la cláusula COLOR, el color de la salida de @ ... SAY estará determinada por el esquema de color del escritorio o la ventana principal de FoxPro; si se dirige la salida de @ ... SAY a una ventana definida por el usuario, el esquema de color de la ventana determinará el color de la salida de @ ... SAY. Sólo el primer par de colores de un esquema de color o de una lista de pares de colores afecta a la salida de @ ... SAY. El color de la salida de @ ... SAY puede especificarse incluyendo el número de un esquema de color existente en la cláusula COLOR SCHEME o un conjunto de pares de colores en la cláusula COLOR. Un esquema de color es un conjunto de 10 pares de colores predefinidos. Los pares de colores de un esquema de color pueden cambiarse con SET COLOR OF SCHEME. En FoxPro para MS-DOS los pares de colores de un esquema de color pueden cambiarse también en el Selector de colores. Un par de colores es un conjunto de dos letras separadas por una barra (/). La primera letra de color especifica el color del primer plano y la segunda especifica el color del fondo. Por ejemplo, este par de colores especifica un primer plano rojo sobre un fondo blanco: R/W Para ver una lista de colores y sus correspondientes letras de color, consulte los comandos SET COLOR o el tema Tabla: pares de colores en esta utilidad de Ayuda en pantalla. Un par de colores puede especificarse también con un conjunto de 6 valores de color RGB (Rojo Verde Azul) separados por comas. Los primeros 3 valores de color especifican el color del primer plano y los segundos 3 valores de color especifican el color del fondo. Los valores de colores deben estar en el intervalo de 0 a 255. El par de colores R/W del ejemplo anterior puede especificarse también con este par de colores RGB: RGB(255,0,0,255,255,255) Por ejemplo: @ 2, 2 SAY 'Esto es rojo sobre blanco' COLOR R/W @ 4, 2 SAY 'Este es el Esquema de color 16' COLOR SCHEME 16 IF _WINDOWS && FoxPro para Windows @ 6, 2 SAY 'Esto es rojo sobre blanco' COLOR RGB(255,0,0,255,255,225) ENDIF Gerardo Ramírez simantec@cantv.net