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]
    cContainerPosition especifica 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.

    cObjectPosition especifica la ubicación del título de menú en la barra de menús de un contenedor de documento activo.

    Los valores de 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.

    Observe que sólo puede haber un título de menú RIGHT en el documento activo de la aplicación. Si especifica más de un título de menú RIGHT, todos los títulos de menú se situarán a la izquierda del 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:

    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 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

    Para obtener más información acerca de los esquemas y las parejas de colores, vea el tema Introducción a los colores.

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