ALT C - Pergunta antes de sair
Moderador: Moderadores
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
ALT C - Pergunta antes de sair
Alguem sabe como eu poderia direcionar o pressionamento de ALT+C para uma função ?
e assim eu pudesse perguntar "Deseja sair" sim ou não antes de abandonar o programa ?
Mário
e assim eu pudesse perguntar "Deseja sair" sim ou não antes de abandonar o programa ?
Mário
Veja no NG o exemplo de código de uso da função SetCancel(). Ele faz exatamente o que você quer.
Mas, resumidamente, é só fazer algo do tipo:
#include "Inkey.ch"
SetCancel(.F.)
set K_ALT_C to SuaFunc()
Mais nada.
Mas, resumidamente, é só fazer algo do tipo:
#include "Inkey.ch"
SetCancel(.F.)
set K_ALT_C to SuaFunc()
Mais nada.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Não há motivo pra preocupação. Executando SetCancel(.F.), a combinação Alt+C passa a ser uma tecla tão comum e tão "perigosa" quanto as demais.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: ALT C - Pergunta antes de sair
Aliás essa opção de intervenção das teclas combinadas ALT C não está funcionando Maligno, veja o exemplo que fiz:
Se desse certo até poderia fazer uma intervenção da intervenção (hihihi) mas eu faria com outra mensagem pro usuário.
Ou então, desabilite essa saída pois o usuário NÃO deveria conhecer essa opção, ja que é desaconselhável essa finalização de sistema. Daí é só colocar na primeira linha do seu código: SETCANCEL(.F.) e dar outra mensagem... por exemplo: "Favor não utilize esta opção de interrupção do sistema".
Código: Selecionar todos
SetCancel(.F.)
SETKEY( 302, { || SuaFunc() } )
INKEY(0)
? LASTKEY()
INKEY(0)
FUNCTION SuaFunc()
@ 24,00 SAY "NAO SAIA ASSIM"
INKEY(0)
RETURN NILVocê poderia fazer est outra pergunta:"Deseja sair" sim ou não antes de abandonar o programa ?
Pois desta forma você está evidênciando que essa saída é uma intervenção CRÍTICA. No entanto se o usuário decidir confirmar a INTERRUPÇÃO do sistema, você feche TODOS os arquivos para que não haja corrupção de dados ou deixar de gravar algo importante."Deseja abortar o sistema ?"
Ou então, desabilite essa saída pois o usuário NÃO deveria conhecer essa opção, ja que é desaconselhável essa finalização de sistema. Daí é só colocar na primeira linha do seu código: SETCANCEL(.F.) e dar outra mensagem... por exemplo: "Favor não utilize esta opção de interrupção do sistema".
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Eu não uso Alt+C. Mas tenho uma saída rápida. Acho chato você estar com n janelas abertas e ter que ficar dando ESC até chegar o menu só pra sair do programa. Então configurei o Alt+X para saídas rápidas. Mas nem sempre tem essa perguntinha final. Se ao acionar esse atalho o sistema perceber que houve alguma alteração numa lista de campos GET anteriormente configurada (ou em várias delas, aninhadas), a pergunta é feita pois haverá uma perda de dados. Mas se não houver alteração nenhuma, ele sai na boa, sem aviso nenhum. O usuário, neste caso, já sabe que não perdeu nada.
Evidentemente, o atalho não funciona quando o sistema estiver reindexando, processando dados, etc. Só quando está parado, aguardando uma intervenção do usuário.
Evidentemente, o atalho não funciona quando o sistema estiver reindexando, processando dados, etc. Só quando está parado, aguardando uma intervenção do usuário.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Nem mesmo quando parado tal intervenção, não ocorre. ISto é não funciona a indicação sua sobre o SET KEY K_ALT_C que ora no meu exemplo é o mesmo que o valor 302.Maligno escreveu:Só quando está parado, aguardando uma intervenção do usuário.
Obs.: Deve ser porque essa combinação de teclas estão reservadas internamente e não permitem desvio na intervenção, o mesmo que ALT ENTER.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Essa combinação realmente funciona, mas não sei porque, não faz efeito num simples InKey(). Mas funciona perfeitamente num GET. Acabei de testar.
Eu, como disse, não uso Alt+C pra coisa alguma. E meu esquema funciona em qualquer situação, da forma que comentei. Fiz a sugestão de código na minha primeira mensagem baseado na informação que existe no NG. Obviamente há um erro qualquer nessas informações. Talvez falte alguma coisa.
Eu, como disse, não uso Alt+C pra coisa alguma. E meu esquema funciona em qualquer situação, da forma que comentei. Fiz a sugestão de código na minha primeira mensagem baseado na informação que existe no NG. Obviamente há um erro qualquer nessas informações. Talvez falte alguma coisa.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Eu uso e funciona:
Código: Selecionar todos
#include "inkey.ch"
SETCANCEL(.F.)
SetKey( K_ALT_C, {|| MyExitProc() } )
IF MSGNOYES("Deseja Realmete Sair do Programa ?","Aviso do Sistema")
DBCLOSEALL()
__Quit()
Else
RETURN
ENDIF
RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahh é ? Não testei com GET, mas se vocês dizem que funciona. O bom disso tudo que por causa de um INKEY() ora seja por necessidade de uso numa rotina de MENU ou qualquer outra situação, o SETCANCEL(.F.) ja impediria que o sistema seja abortado (mesmo diante a impossibilidade de questionar o usuário através de mensagem).Essa combinação realmente funciona, mas não sei porque, não faz efeito num simples InKey()
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Mas o detalhe intrigante é que o único estado de espera produzido na GETSYS é produzido justamente por uma chamada à InKey(). Explica.
))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Deve ser com alguma função interna do Clipper um INIT da vida que não permite atribuir função às teclas-combinadas 302 (neste caso Alt C), pois quando é colocado no código fonte um GET, daí ele funciona mesmo, como você tinha falado.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
É um mistério que não vou me dar ao trabalho de desvendar.
))
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: ALT C - Pergunta antes de sair
Em que local do programa coloco essa função ??Pablo César escreveu:Aliás essa opção de intervenção das teclas combinadas ALT C não está funcionando Maligno, veja o exemplo que fiz:
".Código: Selecionar todos
SetCancel(.F.) SETKEY( 302, { || SuaFunc() } ) INKEY(0) ? LASTKEY() INKEY(0) FUNCTION SuaFunc() @ 24,00 SAY "NAO SAIA ASSIM" INKEY(0) RETURN NIL
Se vc notar, vc colocou para aparecer na tela a ultima tecla prescionada (?lastkey()), pra que isso??
Obrigado
Para testar. 
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!

