Creación de un CanalFive Menú

Para la creación directa de un Menú disponemos de los siguientes comandos:


DEFINICIÓN DE UN C5MENU

C5MENU oObjMenu    POPUP 
BITMAP  cBitmap     
LOGO  cBmpLogo     
COLOR  nClrText , nClrPane  
COLORSEL  nClrTxtSel ,   nClrSelect
COLORDISA  nClrDisa
COLORBOX  nClrBox
WIDTH  nWidth
HEIGHT  nHItem
CHECK  cBmpChk
FONT  oFont
SELECT 3D
NO CHECKS
SOUND  cSound1

 

 

C5MENU oObjMenu    POPUP 

Comando para crear un menú. Mediante el mismo damos nombre al objeto para poder referirnos posteriormente a él. En el caso de que deseemos un menú POPUP deberemos especificarlo en este momento y al finaliar de definirlo utilizar la cláusula ACTIVATE C5MENU oObjMenu

BITMAP  cBitmap     

Esta cláusula nos permite definir un fichero de imágen para el fondo del menú tanto vertical como horizontal. Las imagenes pueden ser BMPs tanto en ficheros como en recursos sin necesidad de especificarlo. La clase reconoce automáticamente si se trata de ficheros o de imágenes en recursos, no sucediendo así para los C5MENUITEMS. Igualmente se pueden utilizar los ficheros de imágen soportados por la librería que incorpora FiveWin para otro tipo de formato de imágen: JPG, GIF, TGA, PCX, etc. Para ello será necesario incluir la librería NVIEWLIB.DLL  o NVIEWL16.DLL en el directorio donde se vaya a hacer funcionar el programa o en el directorio SYSTEM de Windows.

LOGO  cBmpLogo     

Mediante este comando podremos incluir una imágen vertical en el lado izquierdo de los menús de despliegue vertical. Igualmente podremos utilizar los formatos propios de Windows. Para ver un ejemplo pulsar el botón de Inicio de Windows y observar el "logo vertical" en el menú siempre que se esten viendo los iconos en formato grande..

COLOR  nClrText , nClrPane  

Color para todos los elementos del menú para el texto y el fondo. No se utilizará el color de fondo si se ha especificado una imágen de fondo. Es necesario especificarlo para cada definición de menú, osea habrá que indicarlo en cada C5MENU si queremos que todos tengan un mismo color.

COLORSEL  nClrTxtSel ,   nClrSelect

Color de fondo y texto para la opción seleccionada.

COLORDISA  nClrDisa

Color para opción deshabilitada.

COLORBOX  nClrBox

La opción seleccionada puede mostrarse como un bloque relleno de color o como un rectángulo sin fondo. nClrBox es el color del rectángulo que indica la opción de menú seleccionada. 

WIDTH  nWidth

Ancho del menú. De no especificar un ancho para el menú (solo en menús verticales) el menú calculará el ancho en función de la máxima cadena de texto a representar.

HEIGHT  nHItem

Altura de los diferentes elementos del menú. Para viariar las alturas de los elementos del menú independientemente tendríamos que modificar la variable de instancia del menuitem "nHeight" por el valor deseado. Ejemplo: oMenuItem1:nHeight := 17

Para cambiar la altura del menú horizontal deberemos crear un C5MENUITEM que sea un dibujo de la altura deseada. Así la definición del primer item del menú horizontal sería:

C5MENUITEM FILE "ejemplo.bmp"

CHECK  cBmpChk

Imágen para sustituir la pequeña marca que aparece en los menús cuando un item esta definido como CHECKED

FONT  oFont

Objeto FONT que sirve para dotar a todos los elementos de un menú vertical u horiontal con un tipo de letra determinado.

SELECT 3D

La selección de las diferentes opciones vendrá representada por un rectangulo sin rellenar en lugar de por un bloque de color. Podemos modificar el valor por defecto 3D por un color concreto indicandolo con la cláusula COLORBOX

NO CHECKS

Si indicamos esta cláusula, el menú no computará el espacio de las marcas CHECKED para calcular el ancho del menú. Solo en los menús verticales.

Para el calculo habitual del ancho del menú se utiliza: el espacio de los logos, el espacio de estas marcas, el espacio de los dibujos de cabecera de opción, la longitud de las cadenas de texto y la marca de submenu.

SOUND  cSound1

Nombre de un sonido WAV que sonará cada vez que se seleccione una opción de menú. La clase detecta automáticamene si se trata de un fichero o de un sonido almacenado en recursos.

Para almacenar un sonido en recursos en el EXE mediante un fichero RC lo nombraremos como sigue:

misonido WAVE "fichero.wav"

Luego en <cSound1> indicaremos: SOUND misonido

Todas las definiciones C5MENU deben terminar con un C5ENDMENU

DEFINICIÓN DE UN C5MENUITEM

C5MENUITEM    [oMenuItem PROMPT]     cPrompt
MESSAGE  cMsg     
CHECK, CHECKED, MARK
ENABLED, DISABLED
FILE, FILENAME, DISK   cBmpFile
RESOURCE, RESNAME, NAME   cResName     
ACTION  uAction
BLOCK  bAction
OF, MENU, SYSMENU   oMenu
ACCELERATOR  nState ,   nVirtKey 
HELP     
HELP ID, HELPID   nHelpId    
WHEN  uWhen
BREAK    
COLOR  nClrText
FONT oFont     
LEFT, CENTER, RIGHT
DISAFILE  cDisaBmp
DISARES  cDisaRes
ICON  cIcon     
CURSOR  oCursor
LINK

 

C5MENUITEM    [oMenuItem PROMPT]     cPrompt

Definimos (opcionalmente) el objeto para su posterior uso y la cadena de texto de la opción de menú. En caso de estar definiendo el menú horizontal deberemos de prescindir de la cadena de texto en caso de querer definir la altura del citado menú vertical mediante la inclusión de una imágen que dé la altura al menú.

MESSAGE  cMsg     

Mensaje que aparecerá en la barra de mensajes de la ventana cuando esté seleccionada esta opción.

CHECK, CHECKED, MARK

Hacer que aparezca la marca en el menúitem. En CanalFive menú se puede definir una imágen para que sustituya la marca standard de Windows para las opciones marcadas. Esta imágen se indicará en la definición del C5MENU.

ENABLED, DISABLED

Habilita o deshabilita la opción. Con los menús de CanalFive podemos definir los colores para las opciones deshabilitadas en la definición del C5MENU. Igualmente podemos definir ficheros de imágen disable con la opción DISAFILE o DISARES

FILE, FILENAME, DISK   cBmpFile

Nombre de la imágen que se mostrará en la parte izquierda del C5MENUITEM. En los CanalFive Menús esta imágen puede ser BMP o cualquiera de los tipos soportados por la librería NVIEWLIB.DLL. Igualmente podemos indicar que la imágen sea un icono utilizando la opción ICON

RESOURCE, RESNAME, NAME   cResName     

Nombre de la imágen BMP almacenada en recursos que se mostrará en la parte izquierda del C5MENUITEM.

ACTION  uAction

Acción a realizar para esta opción de menú

BLOCK  bAction

Codeblock que se evaluará cuando se seleccione esta opción de menú

OF, MENU, SYSMENU   oMenu

Especifica que menú es el propietario de esta opción.

ACCELERATOR  nState ,   nVirtKey 

Combinación de teclas que activarán la correspondiente acción.

HELP     

Al indicar que la opción de menú es del tipo HELP indicamos que esta opción se alineará en la parte derecha del menú horizontal.

HELP ID, HELPID   nHelpId    

Identificador de la ayuda para esta opción de menú.

WHEN  uWhen

Función que se evaluará al entrar en esta opción de menú regresando verdadero o falso.

BREAK    

Esta opción hace que el menú vertical divida en varias columnas la presentación del mismo.

COLOR  nClrText

Color del texto para esta opción en particular.

FONT oFont     

Tipo de letra para esta opción particular. En el caso de que se haya definido una FONT general para el menú, con esta cláusula podremos modificar la presentación del texto de esta opción de menú.

LEFT, CENTER, RIGHT

Alineación del texto en el menú. Esta puede ser izquierda (por defecto), centrada o derecha. En el caso de que deseemos mostrar varias líneas en un solo item, deberemos separar las diferentes líneas con CRLF.

Ejemplo: "Primera línea" + CRLF + "Segunda línea" + CRLF + "Tercera línea"

DISAFILE  cDisaBmp

Imágen almacenada en un fichero que se mostrará si "deshabilitamos la opción"

DISARES  cDisaRes

Imágen almacenada en recursos que se mostrará si "deshabilitamos la opción"

ICON  cIcon     

CanalFive Menú ofrece la posibilidad de que las imágenes de las opciones de menú sean ¡¡ICONOS!! Para ello solo tendremos que indicar el nombre de un fichero .ICO o de un icono en recursos. La distinción la hace automáticamente la clase.

CURSOR  oCursor

Cursor que aparecerá cuando seleccionemos la opción. Si el cursor se asocia a una opción de menú horizontal o a una opción de menú de la que sale un submenú, el cursor no podrá verse ya que automáticamente Windows despliega el submenú haciendo que la opción activa sea la del submenú desplegado.

LINK

Usamos esta cláusula cuando queremos que aparezca el cursor "HAND" (mano) y que el texto apareca subrayado y en azul. Esta presentación es la típica de los enlaces en el lenguaje HTML. Si deseamos que el efecto "enlace" sea el abrir una página o enviar un correo electónico deberemos hacer que la acción sea como sigue: WinExec( "start " + "http://www.arrakis.es/~canal_five" , 0) o la dirección que queramos.

 

DEFINICIÓN DE UN C5SEPARATOR

Para separar las opciones de menú simplemente pondremos la palabra C5SEPARATOR.

REDEFINICIÓN DEL MENÚ DE SISTEMA

REDEFINE C5SYSMENU   oMenu   
OF, WINDOW, DIALOG   oWnd    
BITMAP  cBitmap    
LOGO  cBmpLogo   
COLOR  nClrText ,  nClrPane    
HEIGHT  nHItem    
CHECK  cBmpChk    
FONT  oFont    


REDEFINE C5SYSMENU   oMenu   

Redefinir el menú del sistema. Solo se puede modificar las opciones de menú de sistema que nosotros añadamos, por lo tanto no podremos pintar un bitmap de fondo en las opciones de menú no definidas por nosotros, y con los logos sucede otro tanto.

OF, WINDOW, DIALOG   oWnd    

Propietario del menú ( ventana o diálogo )

BITMAP  cBitmap    

Imágen de fondo para el menú de sistema. Solo afecta a las opciones de menú redefinidas por nosotros.

LOGO  cBmpLogo   

Logo para el menú de sistema. Solo afecta a las opciones de menú redefinidas por nosotros.

COLOR  nClrText ,  nClrPane    

Color de texto y fondo para las opciones de menú de sistema redefinidas por nosotros.

HEIGHT  nHItem    

Altura de las opciones redefindas por nosotros.

CHECK  cBmpChk    

Imágen para sustituir la pequeña marca que aparece en los menús cuando un item esta definido como CHECKED

FONT  oFont    

Objeto FONT que sirve para dotar a todos los elementos de un menú vertical u horiontal con un tipo de letra determinado.

Cada vez que redefinamos un menú de sistema deberemos terminar con un ENDSYSC5MENU

 

ACTIVAR UN MENÚ POPUP

ACTIVATE C5MENU  oMenu 
AT  nRow ,  nCol  
OF, WINDOW, DIALOG   oWnd

 

ACTIVATE C5MENU  oMenu 

Siempre que definamos un menú como POPUP deberemos terminar con una activación del menú.

AT  nRow ,  nCol  

Fila y columna expresada en Pixels referidos al propietario del menú.

OF, WINDOW, DIALOG   oWnd

Propietario del menú oMenu.