Page 1 of 1

Menus configurables en el SYSMENU de una ventana

PostPosted: Sun Feb 17, 2008 6:27 pm
by JmGarcia
Dependiendo de cierta configuración desearía poder modificar en tiempo de ejecución el SysMenu de una ventana.
El SysMenu es el que sale pinchando en el icono de la ventana (arriba a la izquierda).
Añadir, quitar, etc... menús items.
Gracias.

Code: Select all  Expand view
DEFINE WINDOW oWnd
REDEFINE SYSMENU OF oWnd
   SEPARATOR
   MENUITEM oMenuItem1 PROMPT "&Añadir" ACTION Anadir()
   MENUITEM oMenuItem2 PROMPT "&Quitar"  ACTION Quitar()
   SEPARATOR
// Aqui desea añadir o no opciones del menu
ENDSYSMENU
ACTIVATE WINDOW oWnd

function Anadir()
// ¿ Que hacer ?
return nil

function Quitar()
// ¿ Que hacer ?
return nil

PostPosted: Sun Feb 17, 2008 6:55 pm
by horacio
Yo lo hago de la siguiente manera. Defino distintas funciones con las opciones de menu que necesito y de acuerdo a las opciones que elige el usuario las cargo con oWnd : SetMenu( OpcionElegida() ). Espero te sirva

PostPosted: Sun Feb 17, 2008 7:58 pm
by JmGarcia
horacio wrote:SetMenu( OpcionElegida() )
Pero OpcionElegida() que devuelve una cadena un array...
Por otro lado estoy con el SYSMENU, no con el menú de la ventana.
Mi ventana NO tiene menú como tal.

Image

PostPosted: Sun Feb 17, 2008 8:57 pm
by horacio
Perdón, no leí bien pero de todas maneras creo que el funcionamiento es el mismo. Lo que devuelve la llamada a la funcion es el objeto Menu.

PostPosted: Mon Feb 18, 2008 11:58 am
by Antonio Linares
JM,

Añadir lo puedes hacer así:
Code: Select all  Expand view
function Anadir()

   oWnd:oSysMenu:Add( TMenuItem():New( Time(),,,, { || MsgInfo( "click" ) } ) )
      
return nil      

En cuanto a quitar, cual quieres quitar ? El último añadido ?

PostPosted: Mon Feb 18, 2008 9:01 pm
by JmGarcia
Antonio Linares wrote:Añadir lo puedes hacer así:
Code: Select all  Expand view
function Anadir()
   oWnd:oSysMenu:Add( TMenuItem():New( Time(),,,, { || MsgInfo( "click" ) } ) )
return nil
A parte de esto lo quiero hacer en un SUBmenu.
Por ejejmplo dentro del menuitem "Seleccionar ventanas"
Image

Antonio Linares wrote:En cuanto a quitar, cual quieres quitar ? El último añadido ?
Quiero quitar si ningún orden, es decir el que me marquen o me venga bien segun lo programado.
De todas formas ¿ Como se quita el ultimo ?, con ese truco podria regenerar de nuevo el menú. Borrando-borrando-borrando hasta vaciar y añadiendo despues todos menos uno (el que no quiero).