Menus configurables en el SYSMENU de una ventana

Post Reply
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Menus configurables en el SYSMENU de una ventana

Post 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

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
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post 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
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Post 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
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

JM,

Añadir lo puedes hacer así:

Code: Select all

function Anadir() 

   oWnd:oSysMenu:Add( TMenuItem():New( Time(),,,, { || MsgInfo( "click" ) } ) )
   	
return nil   	
En cuanto a quitar, cual quieres quitar ? El último añadido ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Post by JmGarcia »

Antonio Linares wrote:Añadir lo puedes hacer así:

Code: Select all

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).
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Post Reply