Página 1 de 1

MENU

Enviado: 14 Mar 2007 09:52
por Netavin
Bom dia amigos !

Primeiramente, quero pedir desculpas aos Moderadores! Verão que, inadvertidamente, postei uma mensagem em lugar errado.(Fontes). Sorry!!
Tenho um menu em cascata, simples e tradicional, como todo principiante e aprendiz faz(creio).
Gostaria que, ao teclar <ESC>, ele se fechasse na ordem em foi abrindo.
Podem me dar uma dica ?
Obrigado!!

[]´s

Netavin.

Enviado: 14 Mar 2007 10:51
por Grings
Coloca o fonte para podermos ajudar.

MENU

Enviado: 14 Mar 2007 13:03
por Netavin
E aí Grings, blz ?

Olha, eu "enxuguei" bastante a rotina só para postar.
Mas th certeza q dá p entender. Atenha-se ao item "Gerência de Estoque" que terá uma boa idéia do que acontece.

Código: Selecionar todos

clear screen
DO WHILE .T.
    SETCANCEL(.F.)
    SET DATE BRIT
    SET SCORE OFF
    SET CONFIRM ON
    SET CENTURY ON
    SET EPOCH TO 2000
    SET DELETE On
    SET UNIQ ON
    SET CURSOR OFF
    SET MESSAGE TO 48 CENTER
    SET WRAP ON
    SET COLOR TO G
    OP=1
    L=11
    C=30
    @ 06,26 SAY "M E N U   G E R E N C I A L"
    SET COLOR TO R
    @ 05,01 SAY REPLICATE("Ä",78)
    @ 07,01 SAY REPLICATE("Ä",78)
    SETCOLOR("B/W,W/B")
    @ 48,02 clear to 48,77     
    dispbox(09,25,19,50,chr(219),"bg/w")
    @ 10,26 CLEAR TO 18,49   
    @ L,C-3    PROMPT "Angenda de Telefones"
    @ L+1,C-3  PROMPT "Gerˆncia de Estoque "
    @ L+2,C-3  PROMPT "RH                  "
    @ L+3,C-3  PROMPT "Setor Comercial     "
    @ L+4,C-3  Prompt "Backup              "
    @ L+5,C-3  PROMPT "Finalizar           "
    MENU TO OP
    SETCOLOR("W/N")
    DO CASE
    CASE OP=1
        Loop
    CASE OP=2
        Save Screen to t_menu
        ESTO()
        Rest Screen from t_menu
    CASE OP=3
        Loop
    CASE OP=4
        Loop
    CASE OP=5
        Alert("...tô fazendo...")
        Rest Screen from t_menu
        Loop
    Case OP=6
        TONE(1100,1)
        TONE(1400,1)
        TONE(900,1)
        Opc:=Alert("Confirma?",{"Sim","NÆo"},"W/B")
        If Opc = 1
            CLOSE ALL
            EXIT
            If opc = 2 
                Loop
            endif
        Endif
    ENDCASE
ENDDO

/* ESTOQUE */
Function Esto()
Do While Lastkey() # 27
    Set Cursor off
    Set Wrap on
    SAIR:=Space(1)
    L =11
    C =30
    OP=1
    Setcolor("r+/n")
    @ 46,53 Say "<F6>"
    Setcolor("w/n")
    @ 46,58 Say "Pesquisa especial"
    Setcolor("B/W,W/B")
    Dispbox  (L+2,C+11,L+11,C+23,chr(219),"BG/W")
    @ L+3,C+12 Clear to L+10,C+22
    @ L+4,C+13  Prompt "InclusÆo "
    @ L+5,C+13  Prompt "Consulta "
    @ L+6,C+13  Prompt "Baixa    "
    @ L+7,C+13  Prompt "ExclusÆo "
    @ L+8,C+13  Prompt "Relat¢rio"
    @ L+9,C+13  Prompt "Altera‡Æo"
    Menu to OP
    Do Case
    Case OP=1
        Dispbox(L+5,C+15,L+11,C+26,chr(219),"BG/W")
        @ L+6,C+16 Clear to L+10,C+25
        @ L+7,C+17 Prompt "submenu " 
        @ L+8,C+17 Prompt "submenu "
        @ L+9,C+17 Prompt "submenu "
        Menu to OP_I
        Do Case
        Case OP_I=1
            Alert("teste")
            Loop
        Case OP_I=2
            Alert("Teste")
            Loop
        Case OP_I=3
            Alert("Teste")
            rest screen from t_menu
            Loop
        Endcase
    Case OP=2
        Setcolor("B/W,W/B")
        Dispbox  (L+6,C+14,L+13,C+26,chr(219),"BG/W")
        @ L+7,C+15 Clear to L+12,C+25
        @ L+08,C+16 Prompt "Menu 1   "
        @ L+09,C+16 Prompt "Menu 2   "
        @ L+10,C+16 Prompt "Menu 3   "
        @ L+11,C+16 Prompt "Menu 4   "
        Menu to PO
        Setcolor("W,N")
        Do Case
        Case PO=1
            Alert("teste")
            Loop
        Case PO=2
            Setcolor("B/W,W/B")
            Dispbox(L+10,C+16,L+15,C+29,chr(219),"BG/W")
            @ L+11,C+17 Clear to L+14,C+28
            @ L+12,C+18 Prompt "Submenu   "
            @ L+13,C+18 Prompt "Submenu   "
            Menu to PO_1
            Do Case
            Case PO_1=1
                Alert("teste")
                Loop
            Case PO_1=2
                Alert("teste")      
                Rest screen from t_menu
                Loop
            Endcase
        Case PO=3
            Alert("Teste")
            rest screen from t_menu
            Loop
        Case PO=4
            Setcolor("B/W,W/B")
            Dispbox(L+12,C+16,L+17,C+29,chr(219),"BG/W")
            @ L+13,C+17 Clear to L+16,C+28
            @ L+14,C+18 Prompt "Submenu   "
            @ L+15,C+18 Prompt "Submenu   "
            Menu to C_ro
            Do Case
            Case C_RO = 1
                Alert("Teste")             
                Rest Screen From t_menu
                Loop
            Case C_RO = 2                  
                Setcolor("B/W,W/B")
                Dispbox(L+16,C+21,L+22,C+32,chr(219),"BG/W")
                @ L+17,C+22 Clear to L+21,C+31
                Setcolor("n/bg")
                @ L+17,C+22 Say " Ordem de "
                Setcolor("B/W,W/B")
                @ L+19,C+23 Prompt "Menu 1  " 
                @ L+20,C+23 Prompt "Menu 2  " 
                Menu to C_ro1
                Do Case
                Case C_ro1 = 1
                    Alert("teste")
                    Rest Screen From t_menu
                    Loop
                Case C_ro1 = 2
                    Alert("teste")
                    Rest Screen From t_menu
                    Loop
                Endcase
            Endcase
        Endcase
    Case OP=3
        Loop                     
    Case OP=4
        Setcolor("B/W,W/B")
        Dispbox(L+08,C+14,L+15,C+26,chr(219),"BG/W")
        @ L+09,C+15 Clear to L+14,C+25
        @ L+10,C+16 Prompt "Submenu  " 
        @ L+11,C+16 Prompt "Submenu  " 
        @ L+12,C+16 Prompt "Submenu  " 
        @ L+13,C+16 Prompt "Submenu  " 
        Menu to OP4
        Do Case
        Case OP4=1
            Set Cursor off
            Loop                    
        Case OP4=2
            Set Cursor off
            Loop                
        Case OP4=3
            Loop
        Case OP4=4
            Set Cursor off
            Loop                
        Endcase
    Case OP=5                       
        Setcolor("B/W,W/B")
        Dispbox(L+9,C+14,L+15,C+26,chr(219),"BG/W")
        @ L+10,C+15 Clear to L+14,C+25
        @ L+11,C+16 Prompt "Menu     " 
        @ L+12,C+16 Prompt "Menu     " 
        @ L+13,C+16 Prompt "Menu     " 
        Menu to OP5
        Do Case
        Case OP5=1
            Dispbox(L+12,C+18,L+18,C+29,chr(219),"BG/W")
            @ L+13,C+19 Clear to L+17,C+28
            @ L+14,C+20 Prompt "Submenu " 
            @ L+15,C+20 Prompt "Submenu " 
            @ L+16,C+20 Prompt "Submenu " 
            Menu to OP5_A
            Do Case
            Case OP5_A=1
                Dispbox(L+16,C+15,L+22,C+32,chr(219),"BG/W")
                @ L+17,C+16 Clear to L+21,C+31
                @ L+18,C+17 Prompt "Submenu        "  
                @ L+19,C+17 Prompt "Submenu        " 
                @ L+20,C+17 Prompt "Submenu        " 
                Menu to OP_S
                Do Case
                Case OP_S=1
                    Loop              
                Case OP_s=2
                    Rest screen from t_menu
                    Loop
                Case Op_s=3
                  Rest Screen from t_menu 
                  Loop  
                Endcase
            Case OP5_A=2
                Dispbox(L+16,C+21,L+21,C+32,chr(219),"BG/W")
                @ L+17,C+22 Clear to L+20,C+31
                @ L+18,C+23 Prompt "submenu "  
                @ L+19,C+23 Prompt "submenu " 
                Menu to OP5A_1
                Do Case
                Case OP5A_1=1
                    loop
                Case OP5A_1=2
                    Dispbox(L+20,C+24,L+25,C+35,chr(219),"BG/W")
                    @ L+21,C+25 Clear to L+24,C+34
                    @ L+22,C+26 Prompt "submenu " 
                    @ L+23,C+26 Prompt "submenu "
                    Menu to OP5A1
                    Do Case
                    Case OP5A1=1
                        loop
                    Case OP5A1=2
                        loop
                    Endcase
                Endcase
            Case OP5_A=3
                Dispbox(L+17,C+24,L+22,C+32,chr(219),"BG/W")
                @ L+18,C+25 Clear to L+21,C+31
                @ L+19,C+26 Prompt "subme"  
                @ L+20,C+26 Prompt "subme"
                Menu to OP_E
                Do Case
                Case OP_E=1
                    Loop
                Case OP_E=2
                    Rest Screen from t_menu
                    loop
                Endcase
                rest screen from t_menu
            Endcase
        Case OP5=2
            Rest screen from t_menu
            loop
        Case OP5=3
             loop
        Endcase
    Case OP=6
        Dispbox(L+10,C+14,L+17,C+26,chr(219),"BG/W")
        @ L+11,C+15 Clear to L+16,C+25
        @ L+12,C+16 Prompt "menu     " 
        @ L+13,C+16 Prompt "menu     " 
        @ L+14,C+16 Prompt "menu     " 
        @ L+15,C+16 Prompt "menu     " 
        Menu to OP6
        Do Case
        Case OP6=1
            Rest screen from t_menu
            loop
        Case OP6=2
            Rest screen from t_menu
            loop
        Case OP6=3
            Rest screen from t_menu
            loop
        Case OP6=4
            Rest Screen from t_menu
            loop
        Endcase
    Otherwise
        Close All
        Rest Screen FROM T_menu
        Exit
    Endcase                                        
    Rest Screen FROM T_menu
Enddo
Obrigado ! Grato!
[]´s

Netavin.

Enviado: 14 Mar 2007 15:36
por Grings
Netavin,

Pela rápida olhada que dei reparei que vc salva a tela antes de chamar a primeira função e depois recupera-a dentro da função e novamente quando o controle volta para o do case. O que vc tem que fazer é salvar a tela ou parte dela no início da função e quando termina restaura. Quando chamar uma função de dentro de outra o processo é o mesmo, vc tem que salvar várias telas para formar o menu em cascata. Dê uma olhada em SaveScreen(xx,xx,xx,xx,var) e RestScreen(xx,xx,xx,xx,var).

MENU

Enviado: 14 Mar 2007 16:58
por Netavin
Valeu Grings !!
Vou por em prática.
Grato pela atenção !

[]´s

Netavin.