Hola a todos.
Tengo un programa en modo consola, en el cual tengo creado un menú principal:
DIARIOS FICHEROS INFORMES CIERRES SERVICIOS EMPRESAS TERMINAR
Por cada opción del menú principal hay otras opciones. Por ejemplo en CIERRES hay cuatro submenús, a saber:
Mensual
Trimestral IVA
Cierre Anual
Creación Año Nuevo
Al entrar y después salir de cada submenú, desaparece el menú con los cuatro submenús y solo se ve el menú principal, posicionándose en CIERRES.
Este sería el código del menú CIERRES:
// Crea el menú CIERRES en el menú principal (oPorUp)
oPopUp := PopUp()
oPopUp :ColorSpec:= "b/w,gr+/rb,r/w,g/rb,n+/w,w+/b"
oTopBar:AddItem( MenuItem ( "&CIERRES",oPopUp, K_CTRL_C, "Mensual Asesoría, Trimestral IVA, Cierre Anual y Creación Año Nuevo.") )
// Agrega elementos de menú para el menú emergente CIERRES
oItem :=MenuItem( "&Mensual" ,{|| AsiMensL(03,32) }, K_CTRL_M, "Asiento Mensual Asesoría.")
oPopUp:AddItem( oItem)
// Agrega elementos de menú para el menú emergente CIERRES
oItem :=MenuItem( "&Trimestral IVA" ,{|| CiTrIVAL(04,32) }, K_CTRL_T, "Cierre Trimestral IVA.")
oPopUp:AddItem( oItem)
// Agrega elementos de menú para el menú emergente CIERRES
oItem :=MenuItem( "Cierre &Anual" ,{|| Ci_Anual(05,32) }, K_CTRL_A, "Asiento de Excplotación (Pérdidas y Ganancias).")
oPopUp:AddItem( oItem)
// Agrega elementos de menú para el menú emergente CIERRES
oItem :=MenuItem( "&Creación Año Nuevo" ,{|| Cr_Ano_N(06,32) }, K_CTRL_C, "Cierre por Creación de Año Nuevo.")
oPopUp:AddItem( oItem)
La pregunta es:
¿Qué puedo hacer para que cuando salga de cada submenú, me quede posicionado en este submenú del que acabo de salir?
Por ejemplo si he entrado en el submenú “Mensual”, que se quede posicionado en dicho submenú de “Mensual” al salir.
Saludos cordiales.
Consulta sobre menú en modo consola
Moderator: Rathinagiri
Re: Consulta sobre menú en modo consola
Hola Abinfra, espero ayudarte con esto ...
Code: Select all
*---------------------------*
PROC MODULOS
CLEA
DO WHILE .T.
@ 00,00 PROM "DIARIOS"
@ 00,10 PROM "FICHEROS"
@ 00,20 PROM "INFORMES"
@ 00,30 PROM "CIERRES"
@ 00,40 PROM "SERVICIOS"
@ 00,50 PROM "EMPRESAS"
MENU TO ABINFRA
IF ABINFRA = 0
EXIT && TERMINAR
elseif ABINFRA = 1
DO DIA
elseif ABINFRA = 2
DO FICH
elseif ABINFRA = 3
DO INFO
elseif ABINFRA = 4
DO CIERRE && <--- EJECUTAMOS
elseif ABINFRA = 5
DO SERV
elseif ABINFRA = 6
DO EMP
ENDIF
ENDDO
CLOS ALL
RETU
*---------------------------*
PROC CIERRE
@ 1,0 CLEA TO 42,132
priva a,b,c ... etc
DO WHILE .T.
@ 2,00 PROM " M E N S U A L "
@ 2,20 PROM " TRIMESTRAL "
@ 2,40 PROM " A N U A L "
@ 2,60 PROM " NUEVO AÑO "
MENU TO ABI1
IF ABI1 = 0
EXIT
ELSE
DO ABI2
ENDIF
ENDDO
CLOS ALL
RETU
*---------------------------*
PROC ABI2
@ 3,0 CLEA TO 42,132
DO WHILE .t.
IF ABI1 = 1
@ 3,0 TO 7,19 DOUB
@ 4,1 PROM " PROGRAMA A "
@ 5,1 PROM " PROGRAMA B "
@ 6,1 PROM " PROGRAMA C "
elseif ABI1 = 2
@ 3,20 TO 7,39 DOUB
@ 4,21 PROM " PROGRAMA A "
@ 5,21 PROM " PROGRAMA B "
@ 6,21 PROM " PROGRAMA C "
elseif ABI1 = 3
@ 3,40 TO 7,59 DOUB
@ 4,41 PROM " PROGRAMA A "
@ 5,41 PROM " PROGRAMA B "
@ 6,41 PROM " PROGRAMA C "
elseif ABI1 = 4
@ 3,60 TO 7,79 DOUB
@ 4,61 PROM " PROGRAMA A "
@ 5,61 PROM " PROGRAMA B "
@ 6,61 PROM " PROGRAMA C "
ENDIF
MENU TO ABI3
IF ABI3 = 0
EXIT
ENDIF
IF ABI1 = 1
IF ABI3 = 1
DO A1
elseif ABI3 = 2
DO B1
elseif ABI3 = 3
DO C1
ENDIF
elseif ABI1 = 2
IF ABI3 = 1
DO A2
elseif ABI3 = 2
DO B2
elseif ABI3 = 3
DO C2
ENDIF
elseif ABI1 = 3
IF ABI3 = 1
DO A3
elseif ABI3 = 2
DO B3
elseif ABI3 = 3
DO C3
ENDIF
elseif ABI1 = 4
IF ABI3 = 1
DO A4
elseif ABI3 = 2
DO B4
elseif ABI3 = 3
DO C4
ENDIF
ENDIF
ENDDO
RETU
Re: Consulta sobre menú en modo consola
Hola Louis, gracias por responder.
La estructura de código que me pasas, mas o menos es como la que utilicé en su día (1992) para crear el menú en mi aplicación que hice con Clipper.
Pero al pasarme a HMG, para compilar y enlazar los .PRG que tenía, he utilizado el código que pongo en mi post inicial, pero al salir de un procedimiento o función no se queda en el menú de donde partió.
Dándole vueltas, lo único que se me ha ocurrido, es que al salir del procedimiento o función, a través KEYBOARD CHR..., me posiciono en la parte del menú donde entré para ejecutar el procedimiento o función que acabo de ejecutar.
Saludos cordiales.
La estructura de código que me pasas, mas o menos es como la que utilicé en su día (1992) para crear el menú en mi aplicación que hice con Clipper.
Pero al pasarme a HMG, para compilar y enlazar los .PRG que tenía, he utilizado el código que pongo en mi post inicial, pero al salir de un procedimiento o función no se queda en el menú de donde partió.
Dándole vueltas, lo único que se me ha ocurrido, es que al salir del procedimiento o función, a través KEYBOARD CHR..., me posiciono en la parte del menú donde entré para ejecutar el procedimiento o función que acabo de ejecutar.
Saludos cordiales.
Re: Consulta sobre menú en modo consola
Hola Abinfra, en todo caso lo que trate de decir es que entrando los menus o sub-menus dentro de un Do While, siempre permanecen hasta que Tú des la orden de salir, debiendo regresar al menu o While anterior.
Saludos.
Saludos.
Re: Consulta sobre menú en modo consola
Gracias Louis por el interés mostrado.
Saludos cordiales.
Saludos cordiales.