Teclas Aceleradoras En Submenu


Objetivo: Teclas Aceleradoras En Submenu
Hola, estoy intentando hacer un Menu por codigo, el cual se crea en una clase, que llaman los formularios al abrir y que añaden este menu al formulario que la instancia. Todo funciona menos las teclas de acceso a las opciones tipo <ctrl+Home>. Es la propiedad shortcut de los menus, pero no se como se representa cada tecla.

Alguien habra creado un menu asi y sabra como se debe codificar, Verdad?.

Agradecido de antemano, un abrazo a todos.

Capa, muchas gracias por acordarte del cumple. Realmente casi nadie no mi cercano, se acuerda por las fechas que son. Cuando cumples el 31 de Diciembre, todo el mundo te felicita la navidad y el año nuevo, pero el cumple.....

Perfil MP  
Objetivo: Re: Teclas Aceleradoras En Submenu
De lo de los Shortcuts no puedo ayudarte, pero quería felicitarte aunque fuera con retraso!

Salu2, crack, y felicidades de nuevo!

Perfil MP  
Objetivo: Re: Teclas Aceleradoras En Submenu
Me respondo, para que sirva a alguien.
He buscado en los fuentes de Gambas2, y en el diseñador de menus esta este codigo:

PRIVATE SUB LoadShortcut()

DIM iInd AS Integer

cmbShortcut.Add("(None)")

FOR iInd = Asc("A") TO Asc("Z")
cmbShortcut.Add(Chr$(iInd))
NEXT

FOR iInd = 1 TO 12
cmbShortcut.Add("F" & CStr(iInd))
NEXT

cmbShortcut.Add("Backspace")
cmbShortcut.Add("Del")
cmbShortcut.Add("Down")
cmbShortcut.Add("End")
cmbShortcut.Add("Enter")
cmbShortcut.Add("Esc")
cmbShortcut.Add("Home")
cmbShortcut.Add("Ins")
cmbShortcut.Add("Left")
cmbShortCut.Add("Pause")
cmbShortcut.Add("PgDown")
cmbShortcut.Add("PgUp")
cmbShortcut.Add("Return")
cmbShortcut.Add("Space")
cmbShortcut.Add("Right")
cmbShortcut.Add("Up")

END

Lo puedes encontrar en
/usr/src/gambas2-2.17.0/app/src/gambas2/FMenu.class

Tirando del hilo y haciendo pruebas, es tan sencillo como

PUBLIC SUB Form_Open()
DIM op AS Menu
DIM subop1 AS Menu
DIM subop2 AS Menu
DIM subop3 AS Menu
DIM subsep AS Menu
ME.Center
ME.Title = "Formulario de prueba para MENU"
op = NEW Menu(ME)
op.Caption = "&Navegacion"
subop1 = NEW Menu(op) AS "abrir"
subop1.Text = "&Abrir"
subop1.Shortcut = "F6"
subop2 = NEW Menu(op) AS "editar"
subop2.Text = "&Editar"
subop2.Shortcut = "F2"
subsep = NEW Menu(op) AS "sep"
subsep.Text = ""
subop3 = NEW Menu(op) AS "salir"
subop3.Text = "&Cerrar aplicacion"
subop3.Shortcut = "F3"
Label1.Caption = "No se ha pulsado todavia ninguna opcion del menu"

END

Si queremos usar combinaciones de teclas hay que usar 'Alt+ , 'Shift+ ,'Ctrl+ , y la tecla que queramos sin espacios entre el + y la tecla elegida.
En lugar que el anterior codigo encontramos la clase CMenu.class con este codigo:

PUBLIC SUB SetShortcut(sShortcut AS String)

DO

IF UCase(Left$(sShortcut, 5)) = "CTRL+" THEN
Ctrl = TRUE
sShortcut = Mid$(sShortcut, 6)
CONTINUE
ENDIF

IF UCase(Left$(sShortcut, 6)) = "SHIFT+" THEN
Shift = TRUE
sShortcut = Mid$(sShortcut, 7)
CONTINUE
ENDIF

IF UCase(Left$(sShortcut, 4)) = "ALT+" THEN
Alt = TRUE
sShortcut = Mid$(sShortcut, 5)
CONTINUE
ENDIF

Shortcut = sShortcut
RETURN

LOOP

END

No he probado todas las posibles teclas que se puedan ocurrir, no obstante es cuestion de acertar con el String adecuado. Las mas normales ya veis que son faciles.

Un saludo para todos.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4113s (PHP: -81% SQL: 181%)
Consultas SQL: 44 - Debug off - GZIP Activado