Cancelar Operação

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Cancelar Operação

Mensagem por microvolution »

Eolo escreveu:O ReadExit(), que quer dizer “SairdoRead” e cujo default é .T. (ou seja, SIM)
Ops... estão corretos, só estão confundindo uma coisa:
O default é (.f.) .

Bom, dentro do assunto de "cancelar operação", descobri algo estranho no meu código.
No módulo onde é feito os orçamentos (por cliente [à prazo ou à vista] ou à vista sem cliente), com a compilação com visual (percebi isso tanto usando a HMG quanto a GTWVG)...
o "tal estranho" é o seguinte:
no à vista quando é terminado o cadastro de produtos, a função PEDE_OPÇÃO que é pra gravar ou não o orçamento, não é apresentado e tudo é cancelado, como se fosse pressionado um ESC. Vejam a imagem abaixo no momento em que é perguntado se é pra confirmar os produtos, e, sempre usei o ESC para sair desses GETs que são dentro dos GETs iniciais:
confirma produtos
confirma produtos
A imagem acima, é para finalizar a função CAD_PRODUTOS() que é acionada no GET mPERDES (% Desconto).
Agora, vou mostrar uma tela de um orçamento à prazo, onde após a confirmação dos produtos, é apresentada as opções de (G)ravar ou (D)esistir. Vejam:
orçamento à prazo
orçamento à prazo
Tudo isso ocorre na função CAD_PRODUTOS (como já disse) que é acionada dentro do GET (PERDES), então, vejam os 3 códigos:
1º - local de todos os GETs da tela - exceto do cadastro de produtos no orçamento.

Código: Selecionar todos

...
static function TRATA_DADOS ()
...
@ lVR_PERDES,cVR_PERDES get mVR_PERDES picture pVR_PERDES valid fVR_PERDES ()
...
return
2º - dentro da função fVR_PERDES():

Código: Selecionar todos

static function fVR_PERDES ()
...
          if lastkey () <> K_UP
               CAD_PRODUTOS ()
               // ?'após encerrar orçamento a vista FIM',FIM
               // wait
          endif                        
return
3º - agora dentro da função CAD_PRODUTOS():

Código: Selecionar todos

static function CAD_PRODUTOS ()
      local   ARQUIVO := select ()
      LOCAL bSetKey // acrescentado p/ recuperar a funcionalidade do ESC 29/12/15w.
      bSetKey := Setkey( K_ESC, NIL ) // isto salva a configuração do ESC e volta o ESC ao normal 29/12/15w.
      Priva   lCONF_DADOS := .f.

      private GETLIST := {}
      private nLinGet := 12 // pctoledo em 9/3/15w.
...
      do while .t.
...
           mIND := achoice (12,01,16,77,mLINHA,.T.,'fACH_001',mIND) 
           if lastkey () = 27 // () = K_F10 // 27
               if .not. CONFIRMA3 ('Confirma Produtos Inseridos', 6 ,'SiCCA v3.6 - Conclusão do Orçamento') == 1
                     loop
               endif
               SetKey( K_ESC, bSetKey ) // isto devolve a configuração do ESC que estava antes 29/12/15w.
               exit
           elseif lastkey () = 13
                @ 12 + nLinGet,01 get mCDPRODUTO picture pCDPRODUTO  when empty (mCDPRODUTO)      valid fCDPRODUTO ()  // modificado pela linha abaixo, pois na migração do clipper/harbour o cursor na hora de cadastrar um produto aparece 6 linhas abaixo do lugar correto 6/3/15w. // pctoledo novamente em 9/3/15w.
                @ row(),48 get mCD_GRADE  picture pCD_GRADE       when .not. EXISTE_PRD  valid fCD_GRADE () // modificado o nome de EXISTE_PROD e EXISTE_PRODUTO p/ EXISTE_PRD e EXISTE_PRDUTO, pois está gerando conflito com a função EXISTE_PROGRAMA q pertence ao arquivo ROTINAS.PRG (e seus derivados, no caso ROTINAS5.PRG). 02-11-11w.
                private mQT_ESTOQ2 := nil         // Acrescentado para que qd§ o estoque estiver zerado, pe‡a senha para liberara‡Æo. Walcledson 09/09/02.
                @ row(),51 get mQT_VENDA  picture pQT_VENDA   valid fQT_VENDA () // Modificado p/Walcledson em 27/01/03 p/func. mt,cm,kg.
                read
           endif
      enddo
...
      // ?'FIM' , FIM
      // wait
return
Bom, só postei os locais onde achei realmente necessário, para não ficar muito grande, pois todas essas linhas, estão já no início deste ou de outros posts.
Observem que existem na última função acima, bem como na penúltima, 2 linhas comentadas, que repito:

Código: Selecionar todos

      // ?'FIM' , FIM
      // wait
ou

Código: Selecionar todos

               // ?'após encerrar orçamento a vista FIM',FIM
               // wait
Então prezados professores, se eu habilitar (liberá-las) no código, a opção de gravar/desistir (simulação de botões no clipper antigo).
Já tentei de tudo pra barrar esse ESC (que parece que está causando todo esse estrago), acrescentado individual ou em conjunto, as seguintes funções/comandos:

Código: Selecionar todos

keyboard "" ou keyboard "G"
setkey(0)
clear typeahead
Nem sei mais o que tentar, mas, o sistema só apresenta os botões num orçamento à vista se for colocado um wait para forçar a paralisação do programa.
Observem que existe uma variável do tipo lógica que chama-se FIM, que se ela estiver em .f. os botões são acionados. A função que os chama está nos 2 códigos abaixo, que antecedem a tudo e que ficam em loop e só são cancelados se a variável FIM estiver em .T., e, como ela está em .f. o sistema deveria apresentar o PEDE_OPCAO(). Vejam as 2 partes do código que faltam:

Código: Selecionar todos

do while .not. (FIM)
     INICIALIZA_CAMPOS ()
     TELA_ENTRADA ()
     TRATA_CAMPOS ()
     // ? FIM, 'FIM antes do if'
     // wait
     if .not. FIM
     // if FIM
         // ? FIM , 'FIM dentro do if'
         // wait
          PEDE_OPCAO ()
     endif
     // ? FIM , 'FIM após o if'
     // wait
enddo
Observem que no código acima (é o meu jeito de debugar, pois nunca soube usar o debug do clipper), coloquei linhas (atualmente estão comentadas) para verificar o estado da variável FIM no momento de se chamar a função que cria os botões PEDE_OPCAO(). Se o conteúdo dela for .f. os botões são chamados.
Isso é um controle, pois antes de colocar o método ponto chave deste tópico ("cancelar operação") já funcionava corretamente, até antes de começar a colocar os botões e mensagens gráficas (da HMG e agora da GTWVG). Aparentemente não tem nada a ver com o "cancelar operação" que apliquei conforme aprendizado das linhas anteriormente respondidas por mim e por todos aqui neste post.
Na minha próxima postagem, vou habilitar essas linhas acima comentadas e postar as telas com o conteúdo da variável FIM para que me ajudem a entender o que não estou entendendo, ou seja, não alterei essas coisas no código fonte original do clipper e nem na migração para o harbour, e, nem muito muito menos para botões e mensagens gráficas com HMG e/ou GTWVG.
Vlw!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Cancelar Operação

Mensagem por asimoes »

Depois do botão Confirma Produtos Inseridos

Coloca:
KEYBOARD Chr(0)
Inkey()

Vai invalidar o Esc do botão.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Cancelar Operação

Mensagem por microvolution »

asimoes escreveu:Coloca:
KEYBOARD Chr(0)
Inkey()
Vai invalidar o Esc do botão.
gente, só tem "nego" bruto aqui neste fórum de clipper; ops, ou melhor, pra não discriminar nenhum, também os "branco", "amarelo", "pardo", "caufuso" (como eu), e tantos outros...
é asimoes, não esperou nem eu postar a tela da variável FIM em todos os lugares...
rsrsrs :))
é bom que ajuda o Toledo a economizar espaço em disco/cache...
deu "certíssmo" (com C ou S), como anzol, vcs escolhem...
rsrsrs
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cancelar Operação

Mensagem por JoséQuintas »

Ainda estou tentando entender o fonte, e o que acontece.
Tá difícil.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Cancelar Operação

Mensagem por microvolution »

talve
JoséQuintas escreveu:Ainda estou ...
Tá difícil.
Talvez seja porque não coloquei todos os conteúdos dos fontes... fiz como no seu "quote" acima...
rsrsrs
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Cancelar Operação

Mensagem por Jairo Maia »

Olá Pessoal,

Voltando um pouco atrás para corrigir um outro equivoco:
microvolution escreveu:Ops... estão corretos, só estão confundindo uma coisa: O default é (.f.) .
Nope!!!! O default é .T.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cancelar Operação

Mensagem por JoséQuintas »

NÃO. Acabo de testar, o default é .F.

O pior de tudo, sinceramente, não lembro porque comecei a usar ReadExit(.T.)
Pra mim era pra funcionar alguma coisa entre os campos.

Fazem décadas e não lembro mais.
É uma coisa que vou eliminar do meu aplicativo a partir de hoje.


Só me vém uma coisa na cabeça: alguma situação especial com reads, tipo esta.

Código: Selecionar todos

nCont := 1
DO WHILE .T.
   DO CASE
   CASE nCont == 1
     @ 1, 0 GET a
      READ
      ...
   CASE nCont == 2
      @ 2, 0 GET b
      READ
      ...
   CASE nCont > 2
      EXIT
  ENDCASE
   nCont = iif( Lastkey() == 5, nCont - 1, nCont + 1 )
ENDDO
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cancelar Operação

Mensagem por JoséQuintas »

Mas voltando ao Microevolution:

Eu estou achando seu fonte meio complicado.
Pelo jeito você também, porque está se perdendo no que está fazendo.

Talvez fosse melhor dar uma revisada em tudo.

E você mesmo acabou de citar algo:

Dependendo da tela, ESC pode abandonar ou salvar o que foi feito.

Pense bem: Será que para o usuário não vai complicar cada hora uma tecla diferente?

Só pra dar uma idéia:
Aqui eu uso o padrão ESC Sai , pra TUDO.
Mais que isso: aqui o clique direito do mouse funciona como ESC.
Nunca tive reclamação.

Caso não saiba, também encerram os GETS o Ctrl-W, Ctrl-R e Ctrl-C (ou PgUp PgDn).
Estes salvam o conteúdo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Cancelar Operação

Mensagem por microvolution »

Jairo Maia escreveu:Nope!!!! O default é .T.
bom, desde que entendo por clipper sempre considerei como padrão .f., pois se não fizer nada, ou seja, se o readexit() não for acionado no aplicativo não habilita as setas para encerrar o READ.
Só pra desencargo de consciência fiz um teste aqui no clipper novamente e por padrão é .f.

Só se no harbour é .t. . Ah´! estou usando o harbour 3.4.0.
Pra matar de vez esse assunto, foi pegar o meu velho e bom livro de clipper que tenho que é:
CLIPPER SUMMER 87 de Antº Geraldo da Rocha Vidal vol.1 de 1990.
pág. 398:
diz ele no final do tópico "argumentos":
...
O padrão é falso (.F.), ou seja, teclas desabilitadas.
vlw!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Cancelar Operação

Mensagem por Jairo Maia »

microvolution escreveu:O padrão é falso (.F.), ou seja, teclas desabilitadas.
Isso mesmo, o padrão é .F., comi bola... Para sair do READ com as setas tem que setar .T.. Apenas eu não diria: teclas desabilitadas, eu diria: saída do READ com as setas desabilitada, já que com ou sem ReadInsert() pode alternar entre os Gets com as setas. Valeu...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Cancelar Operação

Mensagem por asimoes »

Quanto ao ReadExit tirem as conclusões, a fonte é o chm do xHarbour, a informação pode ser encontrado no NG
Porcurei no velho NG (norton Guide ) lembram?
Tirem as conclusões.
ReadExit
ReadExit
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cancelar Operação

Mensagem por JoséQuintas »

E como não.
Tem TODOS aqui on-line, pra Clipper 5.2, 5.3, SIXCDX, outras LIBs existentes no Harbour, e muitos outros NGs.

http://www.ousob.com/norton.php
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Cancelar Operação

Mensagem por Jairo Maia »

Olá Alexandre,
asimoes escreveu:Porcurei no velho NG (norton Guide ) lembram?
Uma vez alguém fez essa brincadeira com outro colega que tinha escavado coisas do arco da velha. Então vou repetir:

Alexandre, tá novinha, use a vontade...
PáDePedreiro.jpg
PáDePedreiro.jpg (3.49 KiB) Exibido 3480 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder