Página 2 de 2
Enviado: 29 Abr 2008 14:48
por Alcir
Maligno escreveu:Para testar.

Precisa testar mais então, porque CONTINUA SAINDO FORA COM CRTL+C
:-O :-O :-O
Enviado: 29 Abr 2008 15:25
por Pablo César
Acho que você não entendeu Alcir. O teste que apresentei é apenas para demostrar que com INKEY(0) não adianta NADA colorcar a função que iria perguntar ao usuário se desejar sair ou não. Por outro lado, o Maligno disse que com o GET sim funciona. De todas formas aceitar que o usuário SAIA do sistema dessa forma... é um pouco RADICAL ao meu ver. O INKEY(0) foi para fazer uma pausa e ver se pressionando o Alt C iria aparecer a mensagem ao usuário e o ? LASTKEY() era para evidenciar o código dessas teclas combinadas.
Enviado: 29 Abr 2008 16:33
por Alcir
Pablo César escreveu:Acho que você não entendeu Alcir. O teste que apresentei é apenas para demostrar que com INKEY(0) não adianta NADA colorcar a função que iria perguntar ao usuário se desejar sair ou não. Por outro lado, o Maligno disse que com o GET sim funciona. De todas formas aceitar que o usuário SAIA do sistema dessa forma... é um pouco RADICAL ao meu ver. O INKEY(0) foi para fazer uma pausa e ver se pressionando o Alt C iria aparecer a mensagem ao usuário e o ? LASTKEY() era para evidenciar o código dessas teclas combinadas.
Ahh ta, beleza.
E como fica com o GET ?
Abração
Enviado: 29 Abr 2008 16:38
por Maligno
Pelo teste que fiz, no GET funciona normalmente. Mas minha sugestão pro colega é que ele utilize outra combinação, como ALT+X, por exemplo, que, aliás, é utilizada por vários programas. Aí funciona.
Enviado: 29 Abr 2008 18:01
por Pablo César
Eu não sei por quê tanta importância a saída rápida

Eu por exemplo tenho como padrão, a saídas dos módulos e sub-sequentemente do sistema, designando a tecla ESC como saída. Nunca alguém reclamou disso.
É tão simples, nos GETs por exemplo após do READ, coloco:
Código: Selecionar todos
@ 12,02....
READ
IF LASTKEY()=27
CLOSE ? // fecho o que está aberto
FECHA() /* função que fecha apropriadamente todos os arquivos e elimina os arquivos temporários que estão pendentes */
RETURN NIL
ENDIF
A teclas de atalhos deveriam obedecer um padrão, para que o usuário se acostume seja com as teclas de funções como as combinação de teclas. Ainda acho mais rápido dar um até dois ESC no caso. Mas tudo bem, sobre gosto não há nada escrito...
AO final das contas o Mario Isa não manifestou-se ainda de cómo resolveu.
Enviado: 29 Abr 2008 18:08
por Maligno
É que às vezes uma saída rápida é mais rápida.

))
Imagina o sistema com várias janelas abertas. Eu acho chato ter que pressionar ESC várias pra sair. Uma saída rápida é mais confortável. Mas ALT+C eu nunca vi ser usado em outros programas. Agora ALT+X já foi padrão em vários programas DOS.
Enviado: 30 Abr 2008 08:42
por Alcir
Ate agora, ainda nao consegui travar a saida pelo CTRL+C, se alguem souber, por favor, post para todos saberem. Abraços
Enviado: 30 Abr 2008 10:15
por Maligno
Você quer dizer ALT+C?
Se for mesmo CTR+C, é só fazer SETKEY(3,{||nil}).
Enviado: 30 Abr 2008 14:54
por Pablo César
Desviar a função Ctrl C ? Para quê seria Alcir ? Você poder nos explicar ?. Pois tenha em consideração que as teclas combinadas Ctrl_C é o mesmo que pressionar o Page_Down e as teclas combinadas Ctrl_Scroll_Lock. O que poderia não ser conveniente para algumas situações de navegação num TBROWSE (por exemplo) ou numa edição com MEMOEDIT.
Enviado: 30 Abr 2008 15:15
por Maligno
Verdade. Nem tinha reparado nos códigos. De qualquer forma, bloquear essa tecla é só meio caminho. Bloqueada, ela não aborta o programa, mas ainda pode botar um monte de sujeira na tela.
Enviado: 30 Abr 2008 17:09
por Alcir
Maligno escreveu:Você quer dizer ALT+C?
Sim, eu errei, é ALT+C.
Maligno escreveu:
Se for mesmo CTR+C, é só fazer SETKEY(3,{||nil}).
E se for ALT+C ?
Enviado: 30 Abr 2008 20:59
por vagucs
Quando está num GET, antes de processar a tecla, ele verifica se existe alguma rotina do usuario para ser executada com a combinação daquela tecla, isto acontece para todas as rotinas do clipper para controle de operação como esta, ex: achouce, menu to, get, dbedit, etc.
No caso de criar por exemplo, algo assim:
DO WHILE .T.
? INKEY(0)
ENDDO
O inkey nunca processaria a tecla, ele apenas retorna o valor, logo a chamado ao bloco de codigo da rotina você deveria programa ela.
Enviado: 30 Abr 2008 21:15
por Maligno
Alcir escreveu:E se for ALT+C ?
Mesma coisa, mudando o código da tecla:
SETKEY(302,{||nil}), mas lembrando que, antes, precisa executar SetCancel(.F.), senão não funciona. Mas eu só vi funcionar no GET. Não em InKey().