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.....
Teclas Aceleradoras En Submenu
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!
Salu2, crack, y felicidades de nuevo!
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.
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.
Página 1 de 1
No puede crear mensajesNo 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