Ajuda na LLIBG!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Paulosoft
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 11 Jul 2007 17:35
Localização: Divinopolis

Ajuda na LLIBG!

Mensagem por Paulosoft »

Criei um menu (usando o PROMPT) no meu sistema (com a LLIBG), mas o ESC não abandona o prompt (vide fonte abaixo). Ja coloquei Set Escape ON e tb não deu certo. Uso Clipper 5.3 com Exospace. Alguem ja passou por isso?

Código: Selecionar todos

#include 'llibg.ch' 
#include 'llibgtoo.ch' 
#include 'inkey.ch' 

Local lMouseVisible, PgtGetList := GetList, xtelpgt:=SAVESCREEN(,,,),; 
oLLPgt:= Nil, vpodesair:=.t. 

If sUtl <> "S" 
Alert ("USUARIO SEM LIBERACAO PRA UTILITARIOS") 
Close All 
Return .T. 
Endif 

oLLPgt := LLWindow():New( 6, 3, 28, 76,'', "Utilitarios") 

oLLPgt:Open() 

gframe(32,109,608,130,7,15,8,3,3,3,3,LLG_MODE_SET,LLG_FRAME) // frame da Quantidade 
lMouseVisible := mSetCursor(.T.) 

@ 07,10 PROMPT " Manutencao " 
@ 07,60 PROMPT " FIM " 
Set Escape ON 
MENU TO mp 
If Lastkey()=K_ESC 
///Aqui não esta entrando... 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 
Endif 
DO CASE 
CASE mp=1 
oLLSen := LLWindow():New( 07,03,13,35,'', "MANUTENCAO") 
oLLSen:Open() 
SetCursor(1) 

OP=1 
@ 08,04 PROMPT "1.Gera Backup Geral dos Dados" 
@ 09,04 PROMPT "2.Restaura Backup de Dados " 
@ 10,04 PROMPT "3.Manuten‡Æo De Senha " 
@ 11,04 PROMPT "4.Rotina de Cria‡Æo Empresas " 
@ 12,04 PROMPT "5.Cria/Atualiza Indices Geral" 

TELA04 = SAVESCREEN (00,00,23,79) 
MENU TO OP 
If Lastkey() = K_ESC 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 
Endif 
DO CASE 
CASE OP=1 
CASE OP=2 
CASE OP=3 
CASE OP=4 
CASE OP=5 
ENDCASE 

CASE mp=2 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 

ENDCASE 
RESTSCREEN(,,,,xTelpgt) 
RETU
Dércio_Luiz_Zanatta
Usuário Nível 3
Usuário Nível 3
Mensagens: 153
Registrado em: 11 Jan 2006 15:37
Localização: Ibirubá - RS

Mensagem por Dércio_Luiz_Zanatta »

Pode parecer besteira, mas tente usar 27 no lugar de K_ESC..
Paulosoft
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 11 Jul 2007 17:35
Localização: Divinopolis

Mensagem por Paulosoft »

Já tentei... e não deu. O mais estranho é que a quantidade de Esc que eu pressiono no prompt é acionada logo após eu fecha-lo. Ex: se aperto ESC duas vezes no prompt e escolho uma opção qualquer ele usa ESC duas vezes na opção escolhida. :-o
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Amigo, faço da maneira abaixo e tem funcionado a contento.

Código: Selecionar todos


mOp = 0

li := 06
ci := 03 
lf := 20
cf := 32

JAN(li,ci,lf,cf,'MENU PRINCIPAL')

DO while .t.

   set wrap on

   @ li+02,ci+01 PROMPT "LANCAMENTO DE VENDAS      "
   @ li+03,ci+01 PROMPT "CADASTRA PRODUTOS         "
   @ li+04,ci+01 PROMPT "CADASTRA PRAZO DE VENDA   "
   @ li+05,ci+01 PROMPT "CADASTRA SUB-GRUPO PRODUTO"
   @ li+06,ci+01 PROMPT "CADASTRA CLIENTE          "
   @ li+07,ci+01 PROMPT "CADASTRA CIDADE           "

   aMENU_PRI := SAVENV() 
   menu to mop

   DO CASE
   CASE LASTKEY() = 27 
      RSTENV(aSAV_GERAL)
      GfntSet(aFonte[1])
      RETURN .T.
   CASE mop = 1
      S03LPED1()
   CASE mop = 2
      S03CPRD1()
   CASE mop = 3
      S03CPRZ1()
   CASE mop = 4
      S03CSGP1()
   CASE mop = 5
      P16CCLI1()
   CASE mop = 6 
      P16CCID1()
   ENDCASE
ENDDO
RETURN .t.
Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Ajuda na LLIBG!

Mensagem por sygecom »

Paulosoft escreveu:Criei um menu (usando o PROMPT) no meu sistema (com a LLIBG), mas o ESC não abandona o prompt (vide fonte abaixo). Ja coloquei Set Escape ON e tb não deu certo. Uso Clipper 5.3 com Exospace. Alguem ja passou por isso?

Código: Selecionar todos

#include 'llibg.ch' 
#include 'llibgtoo.ch' 
#include 'inkey.ch' 

Local lMouseVisible, PgtGetList := GetList, xtelpgt:=SAVESCREEN(,,,),; 
oLLPgt:= Nil, vpodesair:=.t. 

If sUtl <> "S" 
Alert ("USUARIO SEM LIBERACAO PRA UTILITARIOS") 
Close All 
Return .T. 
Endif 

oLLPgt := LLWindow():New( 6, 3, 28, 76,'', "Utilitarios") 

oLLPgt:Open() 

gframe(32,109,608,130,7,15,8,3,3,3,3,LLG_MODE_SET,LLG_FRAME) // frame da Quantidade 
lMouseVisible := mSetCursor(.T.) 

@ 07,10 PROMPT " Manutencao " 
@ 07,60 PROMPT " FIM " 
Set Escape ON 
MENU TO mp 
If Lastkey()=K_ESC 
///Aqui não esta entrando... 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 
Endif 
DO CASE 
CASE mp=1 
oLLSen := LLWindow():New( 07,03,13,35,'', "MANUTENCAO") 
oLLSen:Open() 
SetCursor(1) 

OP=1 
@ 08,04 PROMPT "1.Gera Backup Geral dos Dados" 
@ 09,04 PROMPT "2.Restaura Backup de Dados " 
@ 10,04 PROMPT "3.Manuten‡Æo De Senha " 
@ 11,04 PROMPT "4.Rotina de Cria‡Æo Empresas " 
@ 12,04 PROMPT "5.Cria/Atualiza Indices Geral" 

TELA04 = SAVESCREEN (00,00,23,79) 
MENU TO OP 
If Lastkey() = K_ESC 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 
Endif 
DO CASE 
CASE OP=1 
CASE OP=2 
CASE OP=3 
CASE OP=4 
CASE OP=5 
ENDCASE 

CASE mp=2 
RESTSCREEN(,,,,xTelpgt) 
Return .T. 

ENDCASE 
RESTSCREEN(,,,,xTelpgt) 
RETU
Tche, em uma olhada rapida percebi que falta um do while .T.

Veja abaixo um exemplo simples:

Código: Selecionar todos

do while .T.
    Menu1(02,02,16,18,) // MONTA TELA
    set color to gn/w
    @ 02,02   say  "   ENTRADAS    "
    set color to
    set color to gr+/nw,w+/b
    @ 04,02 prompt " 1 - Expedicao  "
    @ 05,02 prompt " 2 - Impressao  "
    @ 06,02 prompt " 3 - Exclusao   "
    menu to opc
    if lastkey() = K_ESC
       exit
    endif

    tela_ant=SaveScreen(00,00,24,79)
    do case
       case opc = 1
          do exp()     // CHAMA A FUNCAO
       case opc = 2
          do sis3()     // CHAMA A FUNCAO
       case opc = 3
          do sis4()     // CHAMA A FUNCAO
       endcase
    endif

    RestScreen(00,00,24,79,tela_ant)
enddo
Qualquer coisa prende o grito....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

OLá,

Ao invés de testar a tecla após o prompt, use direto no case...

DO CASE
CASE mp=1
....
CASE mp=2
...
OTHERWHISE
aqui sim os comandos após o ESC
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Paulosoft
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 11 Jul 2007 17:35
Localização: Divinopolis

Mensagem por Paulosoft »

Resolvido. Era um setkey com k_esc no meu fonte principal. Obrigado a todos pela boa vontade. :D
Responder