Menu

13 de julio de 2006

Menús con múltiples columnas

Con el diseñador de menús, o haciendo nuestros menús por código, podemos crear menús con múltiples columnas o submenús horizontales. Solo debemos anteponer la barra invertida "\" seguida del caracter "|" (CHR(124)) al inicio del ítem del menú que deseamos iniciar como una nueva columna. Los ítems sucesivos se colocaran en la misma columna hasta encontrar otro ítem que comience con "\|".

Por ejemplo si deseamos iniciar una nueva columna con el ítem "Imprimir", debemos definir nuestra barra con:
DEFINE BAR 3 OF MiPopup PROMPT "\|Imprimir"
Ejecutando el siguiente código de ejemplo, veremos en la primera opción, un menú con múltiples columnas como lo muestra la Figura 1


Figura 1

La segunda opción del menú nos muestra el submenú horizontal de la Figura 2.


Figura 2

SET SYSMENU TO
SET SYSMENU AUTOMATIC
DO MenuHorizontal
READ EVENTS
SET SYSMENU TO DEFAULT
*---
PROCEDURE MenuHorizontal
  DEFINE PAD PadArchivo OF _MSYSMENU ;
    PROMPT "\<Archivo" KEY ALT+A
  DEFINE PAD PadEdicion OF _MSYSMENU ;
    PROMPT "\<Edicion" KEY ALT+E
  ON PAD PadArchivo OF _MSYSMENU ;
    ACTIVATE POPUP PopArchivo
  ON PAD PadEdicion OF _MSYSMENU ;
    ACTIVATE POPUP PopEdicion
  *---
  DEFINE POPUP PopArchivo MARGIN RELATIVE SHADOW
  DEFINE BAR 1 OF PopArchivo ;
    PROMPT "\<Nuevo" PICTRES _MFI_NEW
  DEFINE BAR 2 OF PopArchivo ;
    PROMPT "\<Abrir" PICTRES _MFI_OPEN
  DEFINE BAR 3 OF PopArchivo ;
    PROMPT "\<Salir" PICTRES _MFI_QUIT
  DEFINE BAR 4 OF PopArchivo ;
    PROMPT "\|\<Guardar" PICTRES _MFI_SAVE
  DEFINE BAR 5 OF PopArchivo ;
    PROMPT "Guardar \<como" PICTRES _MFI_SAVAS
  DEFINE BAR 6 OF PopArchivo ;
    PROMPT "Guardar como \<HTML" PICTRES _mfi_saveashtml
  DEFINE BAR 7 OF PopArchivo ;
    PROMPT "\|\<Vista preliminar" PICTRES _MFI_PREVU
  DEFINE BAR 8 OF PopArchivo ;
    PROMPT "\<Imprimir" PICTRES _mfi_sysprint
  DEFINE BAR 9 OF PopArchivo ;
    PROMPT "\<Enviar" PICTRES _MFI_SEND
  ON SELECTION BAR 3 OF PopArchivo CLEAR EVENTS
  *---
  DEFINE POPUP PopEdicion MARGIN RELATIVE SHADOW
  DEFINE BAR 1 OF PopEdicion ;
    PROMPT "\|\<Copiar" PICTRES _MED_COPY
  DEFINE BAR 2 OF PopEdicion ;
    PROMPT "\|Cor\<tar" PICTRES _MED_CUT
  DEFINE BAR 3 OF PopEdicion ;
    PROMPT "\|\<Pegar" PICTRES _MED_PASTE
  DEFINE BAR 4 OF PopEdicion ;
    PROMPT "\|\<Deshacer" PICTRES _MED_UNDO
  DEFINE BAR 5 OF PopEdicion ;
    PROMPT "\|\<Rehacer" PICTRES _MED_REDO
ENDPROC
*---

Luis María Guayán

1 comentario:

  1. Hola Luis María; estuve analizando el código que publicó relacionado a dar color a líneas en un control Listbox utilizando archivos, aparte que me parece bastante interesante y de utilidad, me salto la siguiente duda:

    ¿Cómo obtener, en este caso, el valor de 'CODIGO' o 'NOMBRE' deseado, luego de ejecutar, ya sea el evento DblClick o Enter, en dicho control, ya que el DEFINE BAR señala todo el registro como un solo dato?

    Agradezco me de luz con esta duda.
    Saludos cordiales.

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.