Tecla de Abortamento
Moderador: Moderadores
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezados Boa Noite!
Antigamente usava-se na programação Clipper um recurso que eu chamava de "Tecla de Emergência/Abortamento", que eram códigos destinados a reconhecer uma tecla ou conjunto de tecla para ABORTAR o programa, para não precisar fechar a janela do Windows e danificar a base de dados.
Tentei usar este recurso no Harbour, conforme fragmento de código abaixo e não deu resultado; ou seja não saiu do programa:
// Tecla F10 foi eleita para ABORTAR o programa
SET KEY -9 TO EMERGENCIA()// ou SET KEY K_F10 TO EMERGENCIA()
*----------------------------------------------------------------------------------*
FUNCTION EMERGENCIA
QUIT
RETURN Nil
Há algum recurso no Habour para saída de emergência/Abortar o programa.
Abraços!
jsnascimento
Antigamente usava-se na programação Clipper um recurso que eu chamava de "Tecla de Emergência/Abortamento", que eram códigos destinados a reconhecer uma tecla ou conjunto de tecla para ABORTAR o programa, para não precisar fechar a janela do Windows e danificar a base de dados.
Tentei usar este recurso no Harbour, conforme fragmento de código abaixo e não deu resultado; ou seja não saiu do programa:
// Tecla F10 foi eleita para ABORTAR o programa
SET KEY -9 TO EMERGENCIA()// ou SET KEY K_F10 TO EMERGENCIA()
*----------------------------------------------------------------------------------*
FUNCTION EMERGENCIA
QUIT
RETURN Nil
Há algum recurso no Habour para saída de emergência/Abortar o programa.
Abraços!
jsnascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Tecla de Abortamento
Amiguinho,
Veja se o código abaixo pode lhe ajudar!
Saudações,
Júlio.
Veja se o código abaixo pode lhe ajudar!
Código: Selecionar todos
#include "inkey.ch"
SETCANCEL(.F.) // Cancela a combinação Alt+C que passa a ser uma tecla comum.
SetKey( K_F10, {|| MYEXIT() } )
FUNCTION MYEXIT
IF PERGUNTA("Deseja Realmete Sair do Programa ?")="S"
DBCLOSEALL()
__Quit()
else
return
ENDIF
RETURNJúlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezado Júlio,
Boa Noite!
Obrigado pela dica.
Tentei de todas formas que me foi possível implantar suas dicas no meu fonte, mas não funcionou. A IDE do Harbour ao compilar não reconhece o "K_F10" como uma constante e acusa que a variável não foi definida. Tentei usar ( -9 ) para me referir a tecla "F10", neste caso não deu "pau", mas também não fez nada; ou seja, não abortou o programa.
A razão é que estou iniciando o meu contato com Harbour agora, também estava afastado do Clipper há alguns anos.
O meu fonte está disponilizado no tópico de minha autoria: "Migrando de Clipper 5.2 para HMG 3.0.35", nesta mesma página.
Seria possível você ajudar-se baseando-se no meu fonte?
Muito obrigado!
Abraços!
Jsnascimento
Boa Noite!
Obrigado pela dica.
Tentei de todas formas que me foi possível implantar suas dicas no meu fonte, mas não funcionou. A IDE do Harbour ao compilar não reconhece o "K_F10" como uma constante e acusa que a variável não foi definida. Tentei usar ( -9 ) para me referir a tecla "F10", neste caso não deu "pau", mas também não fez nada; ou seja, não abortou o programa.
A razão é que estou iniciando o meu contato com Harbour agora, também estava afastado do Clipper há alguns anos.
O meu fonte está disponilizado no tópico de minha autoria: "Migrando de Clipper 5.2 para HMG 3.0.35", nesta mesma página.
Seria possível você ajudar-se baseando-se no meu fonte?
Muito obrigado!
Abraços!
Jsnascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Tecla de Abortamento
Amiguinho,
Por gentileza, dê mais detalhes do ambiente que está usando, exemplo a versão do harbour, qual compilador?
http://www.elektrosoft.it/tutorials/Har ... -guide.htm
http://www.elektrosoft.it/tutorials/Har ... s-list.htm
http://www.harbour.vouch.info/index.html?rdd.htm
Fiz vários testes aqui e o código que lhe enviei funciona sem problemas.
Voltando ao erro em questão, por gentileza compartilhe o código onde você usa o SETKEY e a função para abortar o sistema.
Saudações,
Júlio.
É importante notar que no exemplo que lhe enviei tem a diretiva #include "inkey.ch". Inclusive nos seus fontes esta diretiva está comentada, logo não será executada.jsnascimento escreveu:Harbour ao compilar não reconhece o "K_F10" como uma constante e acusa que a variável não foi definida.
Por gentileza, dê mais detalhes do ambiente que está usando, exemplo a versão do harbour, qual compilador?
Como está iniciando, gostaria de lhe passar alguns sites com material importante para pesquisa e aprendizado.jsnascimento escreveu:A razão é que estou iniciando o meu contato com Harbour agora, também estava afastado do Clipper há alguns anos
http://www.elektrosoft.it/tutorials/Har ... -guide.htm
http://www.elektrosoft.it/tutorials/Har ... s-list.htm
http://www.harbour.vouch.info/index.html?rdd.htm
Fiz vários testes aqui e o código que lhe enviei funciona sem problemas.
Voltando ao erro em questão, por gentileza compartilhe o código onde você usa o SETKEY e a função para abortar o sistema.
Saudações,
Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tecla de Abortamento
Olá!
Leiam o tópico Tecla F10 no Browse para mais informações.
Nesse padrão, a tecla F10 tem a função de abrir o menu. Experimentem em qualquer programa Windows.Os menus do Windows são compatíveis com o padrão SAA/CUA (Systems Application Architecture/Common User Access), desenvolvido pela IBM e publicado em 1987.
Leiam o tópico Tecla F10 no Browse para mais informações.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezado amigo Júlio,
Bom dia!
Fiz as alterações sugeridas, mas sem sucesso ainda. Por isso estou postando os meus fontes e também uma base de exemplo já devidamente protegida quanto a confiabilidade dos dados.
Veja por favor onde estou errando.
Obrigado!
jsnascimento
Bom dia!
Fiz as alterações sugeridas, mas sem sucesso ainda. Por isso estou postando os meus fontes e também uma base de exemplo já devidamente protegida quanto a confiabilidade dos dados.
Veja por favor onde estou errando.
Obrigado!
jsnascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
Tecla de Abortamento
Amigo JsNacimento,
Conforme explicado no tópico mencionado pelo Alexandre, a tecla <F10> já possui dono. Pelo que pude entender você está usando Harbour com MiniGUI, e sendo assim segue um padrão imposto pelo Windows, que quando preciona a tecla F10 em telas Windows ativa os menus do sistema, e quando na tela não tem menu ele ativa os menus da janela( RESTAURAR, MAXIMIZAR, MINIMIZAR, FECHAR)
Experimente mudar para qualquer outra tecla.
Agradeço ao amigo Alexandre pelo esclarecimento da questão.
)
Saudações,
Júlio.
Conforme explicado no tópico mencionado pelo Alexandre, a tecla <F10> já possui dono. Pelo que pude entender você está usando Harbour com MiniGUI, e sendo assim segue um padrão imposto pelo Windows, que quando preciona a tecla F10 em telas Windows ativa os menus do sistema, e quando na tela não tem menu ele ativa os menus da janela( RESTAURAR, MAXIMIZAR, MINIMIZAR, FECHAR)
Experimente mudar para qualquer outra tecla.
Agradeço ao amigo Alexandre pelo esclarecimento da questão.
Saudações,
Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezados Alexandre e Júlio;
Boa Noite!
Realizei testes com a função SETKEY() conforme orientação de vcs. Verifiquei que mesmo com atribuição de outra tecla como por exemplo "F4" o abortamento não acontecia - Exemplo:
Então, coloquei uma chamada direta à função MYEXIT() no inicio do prg ("Main_padronizador.prg") - que é o prg onde ocorre o processamento principal do meu aplicativo. Neste caso o programa abortou! Então a função de abortamento está Ok!
Vejam o código da função MYEXIT():
Cheguei a conclusão que o programa não está reconhecendo o acionamento "TECLA DE ABORTAMENTO".
Estudei um pouco mais a sintaxe da função "SETKEY" e verifiquei que ela é uma função que define uma ação automática associada à uma tecla específica, previamente atribuída, durante um "Estado de Espera". Pelo que entendi, a tecla é reconhecida somente em um "Estado de Espera" . É o que está escrito no NG do Clipper: SETKEY() is a keyboard function that sets or queries the automatic action associated with a particular key during a wait state.
Eu estava querendo ter a possibilidade de abortar o programa, através de uma tecla ou conjunto de teclas, quando este estivesse em processamento e não em um Estado de Espera {READ, INKEY(), ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and WAIT}.
Este é exatamente o meu dilema. Quando o meu aplicativo começa a processar, vejo que há algo errado e preciso abortar, como os arquivos em processamento são grandes (cerca de 1 milhão de registros cada um), o programa não obedece a nada! Tenho que clicar no "X" da janela principal e responder "SIM" para a pergunta: "Finalizar agora?".
Seria possível controlar internamente o momento de abortar o programa, através do teclado, fora do "Estado de Espera"?
Abraços!
jsnascimento
Boa Noite!
Realizei testes com a função SETKEY() conforme orientação de vcs. Verifiquei que mesmo com atribuição de outra tecla como por exemplo "F4" o abortamento não acontecia - Exemplo:
Código: Selecionar todos
SetKey( K_F4, {|,,| MYEXIT() } )Vejam o código da função MYEXIT():
Código: Selecionar todos
***
* SAÍDA DE EMERGÊNCIA ATRAVÉS DE ACIONAMENTO DE TECLA ESPECIAL
FUNCTION MYEXIT
IF MsgYesNo ( "Deseja Realmete Sair do Programa?" , "SAÍDA DE EMERGÊNCIA" , ["YES"] )
DBCLOSEALL()
QUIT
Else
Return
ENDIF
RETURN NilEstudei um pouco mais a sintaxe da função "SETKEY" e verifiquei que ela é uma função que define uma ação automática associada à uma tecla específica, previamente atribuída, durante um "Estado de Espera". Pelo que entendi, a tecla é reconhecida somente em um "Estado de Espera" . É o que está escrito no NG do Clipper: SETKEY() is a keyboard function that sets or queries the automatic action associated with a particular key during a wait state.
Eu estava querendo ter a possibilidade de abortar o programa, através de uma tecla ou conjunto de teclas, quando este estivesse em processamento e não em um Estado de Espera {READ, INKEY(), ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and WAIT}.
Este é exatamente o meu dilema. Quando o meu aplicativo começa a processar, vejo que há algo errado e preciso abortar, como os arquivos em processamento são grandes (cerca de 1 milhão de registros cada um), o programa não obedece a nada! Tenho que clicar no "X" da janela principal e responder "SIM" para a pergunta: "Finalizar agora?".
Seria possível controlar internamente o momento de abortar o programa, através do teclado, fora do "Estado de Espera"?
Abraços!
jsnascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tecla de Abortamento
Olá!
Creio que você poderá adaptar o exemplo abaixo ao teu código e resolver o problema:
Creio que você poderá adaptar o exemplo abaixo ao teu código e resolver o problema:
Código: Selecionar todos
//------------------------------------------------------------------------------
FUNCTION Main()
LOCAL nKey := 0, cMyTable := "Names", i
CLS
USE (cMyTable) SHARED NEW
(cMyTable)->( DbGoTop() )
WHILE (cMyTable) ->( ! Eof() )
// se o usuário digitar qualquer tecla, verifica se deseja cancelar...
IF ( nKey := Inkey() ) != 0
IF ( Alert( "Deseja cancelar o processamento?", { " Sim "," Não "}, "W+/B" ) ) == 1
EXIT
ENDIF
ENDIF
// suas instruções de processamento...
FOR i = 1 TO 100000
NEXT
(cMyTable)->( DbSkip() )
ENDDO
DbCloseAll()
RETURN NIL
//------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
jamazevedo
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 29 Dez 2005 16:50
- Localização: Manaus - AM
Tecla de Abortamento
Olá senhores!
Pra mim a maneira mais eficiente de "Abortar / Encerrar" um programa em execução é através das teclas ALT C. A recomendação é que deixe isso como default pois é nativa em Clipper / Harbour, caso você esteja utilizando alguma lib de terceiros as teclas de F1 a F12 podem ser modificadas e anular sua função.
Pra mim a maneira mais eficiente de "Abortar / Encerrar" um programa em execução é através das teclas ALT C. A recomendação é que deixe isso como default pois é nativa em Clipper / Harbour, caso você esteja utilizando alguma lib de terceiros as teclas de F1 a F12 podem ser modificadas e anular sua função.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezado jamazevedo;
Bom dia!
Daí fomos para outras opções, conforme foi postado como sugestões por outros colegas aqui do fórum.
Porém, todas as sugestões dos colegas estão pautadas em comandos ou funções que requerem um "ESTADO DE ESPERA" onde é possível a captura de qualquer tecla acionada: {READ, INKEY(), ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and WAIT}.
Não é o meu caso! A necessidade de abortar surge quando já não existe um "ESTADO DE ESPERA" e estamos em pleno processamento dos arquivos de dados.
Portanto, até agora, nenhuma sugestão dos amigos aqui do fórum surtiu o efeito desejado.
Li um artigo sobre o comando "ON KEY", cuja leitura recomendo a todos amigos do fórum. Eu prefiro citar o link a transcrevê-lo aqui, para respeitar a autoria do mesmo. Eis o link: http://hmglights.wordpress.com/2010/02/04/on-key/.
Neste artio o autor diz que o comando "SET KEY" foi substituído por "ON KEY", sua sintaxe é bastante simples, veja abaixo:
O comando "ON KEY", conforme sintaxe acima, funcionou perfeitamente na primeira parte do meu programa, mas quando o meu programa entra em processamento pesado, analisando os milhares registros dos arquivos ("dbf"), o "ON KEY" também fica inoperante. Este momento é exatamente o momento em que eu gostaria de implementar uma rotina de escape, caso as coisas não funcionarem de acordo.
Estou usando o "Hmg.3.1.01" para compilar os meus fontes, mas também testei no "Hmg.3.0.35". Em ambos o resultado negativo foi o mesmo.
Estou trabalhando com Windows XP SP3.
Posso enviar os meus fontes prontos para compilação. Inclusive preparei uma base de dados (3 arquivos dbf), devidamente descaracterizada para preservar a confidencialidades dos dados, para você testar o que estou falando.
Para mim tudo é desafio de aprendizado. Eu já tenho o programa funcionando perfeitamente em Harbour (Console), a minha empreitada é migrar tudo para modo Gráfico, sendo isto apenas uma oportunidade de aprendizado do modo gráfico utilizando os códigos que já possuo.
Alguém se habilita trabalhar comigo os fontes?
IMPORTANTE: Não há interesse comercial nesta empreitada, apenas ganho de conhecimento - Melhor se for coletivo, não é mesmo?
Abraços a todos!
Jamil S. Nascimento
Bom dia!
Sim! Eu concordo com você! Gostaria de usar o padrão do Harbour (Alt + C) para abortar o aplicativo. Mas a combinação "ALT + C" não está funcionando no meu aplicativo. Mesmo com a instrução: SETCANCEL(.T.) // Ativar combinação Alt+C para Encerramento.Pra mim a maneira mais eficiente de "Abortar / Encerrar" um programa em execução é através das teclas ALT C. A recomendação é que deixe isso como default pois é nativa em Clipper / Harbour, caso você esteja utilizando alguma lib de terceiros as teclas de F1 a F12 podem ser modificadas e anular sua função.
Daí fomos para outras opções, conforme foi postado como sugestões por outros colegas aqui do fórum.
Porém, todas as sugestões dos colegas estão pautadas em comandos ou funções que requerem um "ESTADO DE ESPERA" onde é possível a captura de qualquer tecla acionada: {READ, INKEY(), ACHOICE(), DBEDIT(), MEMOEDIT(), ACCEPT, INPUT, READ and WAIT}.
Não é o meu caso! A necessidade de abortar surge quando já não existe um "ESTADO DE ESPERA" e estamos em pleno processamento dos arquivos de dados.
Portanto, até agora, nenhuma sugestão dos amigos aqui do fórum surtiu o efeito desejado.
Li um artigo sobre o comando "ON KEY", cuja leitura recomendo a todos amigos do fórum. Eu prefiro citar o link a transcrevê-lo aqui, para respeitar a autoria do mesmo. Eis o link: http://hmglights.wordpress.com/2010/02/04/on-key/.
Neste artio o autor diz que o comando "SET KEY" foi substituído por "ON KEY", sua sintaxe é bastante simples, veja abaixo:
Código: Selecionar todos
ON KEY <tecla> OF <formulário> ACTION <função>O comando "ON KEY", conforme sintaxe acima, funcionou perfeitamente na primeira parte do meu programa, mas quando o meu programa entra em processamento pesado, analisando os milhares registros dos arquivos ("dbf"), o "ON KEY" também fica inoperante. Este momento é exatamente o momento em que eu gostaria de implementar uma rotina de escape, caso as coisas não funcionarem de acordo.
Estou usando o "Hmg.3.1.01" para compilar os meus fontes, mas também testei no "Hmg.3.0.35". Em ambos o resultado negativo foi o mesmo.
Estou trabalhando com Windows XP SP3.
Posso enviar os meus fontes prontos para compilação. Inclusive preparei uma base de dados (3 arquivos dbf), devidamente descaracterizada para preservar a confidencialidades dos dados, para você testar o que estou falando.
Para mim tudo é desafio de aprendizado. Eu já tenho o programa funcionando perfeitamente em Harbour (Console), a minha empreitada é migrar tudo para modo Gráfico, sendo isto apenas uma oportunidade de aprendizado do modo gráfico utilizando os códigos que já possuo.
Alguém se habilita trabalhar comigo os fontes?
IMPORTANTE: Não há interesse comercial nesta empreitada, apenas ganho de conhecimento - Melhor se for coletivo, não é mesmo?
Abraços a todos!
Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tecla de Abortamento
Olá!
Não entendo como o exemplo que mostrei não serviu para você. Você testou?
O que coloquei é exatamente o que você precisa: durante o loop de processamento do arquivo, verifica se alguma tecla foi pressionada. Se sim, verifica se o usuário deseja cancelar.
Inkey() sem parâmetro gera um wait state de milissegundos, o que é práticamente transparente. Como é tela gráfica, teria que adaptar somente isso à HMG. Mas mesmo nela, talvez o exemplo com Inkey() funcione perfeitamente, precisando trocar apenas o Alert() pela correspondente em ambiente gráfico.
Não entendo como o exemplo que mostrei não serviu para você. Você testou?
O que coloquei é exatamente o que você precisa: durante o loop de processamento do arquivo, verifica se alguma tecla foi pressionada. Se sim, verifica se o usuário deseja cancelar.
Inkey() sem parâmetro gera um wait state de milissegundos, o que é práticamente transparente. Como é tela gráfica, teria que adaptar somente isso à HMG. Mas mesmo nela, talvez o exemplo com Inkey() funcione perfeitamente, precisando trocar apenas o Alert() pela correspondente em ambiente gráfico.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
jsnascimento
- Usuário Nível 1

- Mensagens: 33
- Registrado em: 08 Jul 2004 20:05
Tecla de Abortamento
Prezado Alexandre,
Boa Tarde!
Sinto muito decepcioná-lo, mas testei o seu código sim, conforme abaixo transcrito. Até configurei para defragar a saída para qualquer tecla acionada durante o circuito principal, independente de aviso prévio ao usuário, só para fazer um teste na sua sugestão e nada ocorreu. A função MYEXIT() que uso aborta o programa, mas só se for usada diretamente e não condicionada ao acionamento de uma tecla,que é o meu desejo.
Posso disponibilizar o fonte e as bases de teste para vc verificar.
Abraços
Jsnascimento
Boa Tarde!
Sinto muito decepcioná-lo, mas testei o seu código sim, conforme abaixo transcrito. Até configurei para defragar a saída para qualquer tecla acionada durante o circuito principal, independente de aviso prévio ao usuário, só para fazer um teste na sua sugestão e nada ocorreu. A função MYEXIT() que uso aborta o programa, mas só se for usada diretamente e não condicionada ao acionamento de uma tecla,que é o meu desejo.
Posso disponibilizar o fonte e as bases de teste para vc verificar.
Abraços
Jsnascimento
Código: Selecionar todos
*
Do While .not. eof()
// Se o usuário digitar qualquer tecla, verifica se deseja cancelar...
// Sugestão do Alexandre Santos (AlxSts) - 18/01/2013
IF ( nKey := Inkey() ) != 0
*MYEXIT() // Esta função funciona se for acionada diretamente
exit
ENDIF
*
* -> Inicia as variáveis com blank
*
INIC_VARM()
*
*--> Alimenta as variáveis com dados do registro do arquivo original
*
CARG_VARM()
*
*
* Resto dos códigos
Enddo Código: Selecionar todos
***
* SAÍDA DE EMERGÊNCIA ATRAVÉS DE ACIONAMENTO DE TECLA ESPECIAL
FUNCTION MYEXIT
IF MsgYesNo ( "Deseja Realmete Sair do Programa?" , "SAÍDA DE EMERGÊNCIA" , ["YES"] )
DBCLOSEALL()
QUIT
Else
Return
ENDIF
RETURN Nil" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Tecla de Abortamento
Olá Alexandre e Jamil,
Alexandre, usando os fontes do Jamil também testei sua sugestão inserindo no laço antes de gravar o registro, mas é impressionante, a função Inkey() e outras não recebem o evento do teclado.
Achei que pudesse ter algo com o EVENTMASK e então setei SET EVENTMASK TO INKEY_ALL antes de iniciar o laço, e também não obtive resultado. Confesso que não tenho a menor ideia porque isso acontece mo modo gráfico.
Alexandre, usando os fontes do Jamil também testei sua sugestão inserindo no laço antes de gravar o registro, mas é impressionante, a função Inkey() e outras não recebem o evento do teclado.
Achei que pudesse ter algo com o EVENTMASK e então setei SET EVENTMASK TO INKEY_ALL antes de iniciar o laço, e também não obtive resultado. Confesso que não tenho a menor ideia porque isso acontece mo modo gráfico.
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)
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)
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Tecla de Abortamento
Olá!
Realmente é estranho. Não tenho intimidade com HMG e nem tenho instalada aqui no escritório. Vou tentar descobrir algo neste final de semana...
Realmente é estranho. Não tenho intimidade com HMG e nem tenho instalada aqui no escritório. Vou tentar descobrir algo neste final de semana...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)