*** *** PROGRAMA PARA TESTAR ENVIO E RECEBIMENTO DE DADOS DO CLIPBOARD DO WINDOWS *** cls setcancel(.f.) && DESABILITA ALT+C E CTRL_C PARA PARAR A APLICACAO set key 302 to ALT_C && REDEFINE A TECLA ALT+C PARA PARAR A APLICACAO set key -21 to janela set key 003 to CLB_CTRL_C && COPIAR set key 022 to CLB_CTRL_V && COLAR NOME := space(30) ENDERECO := space(40) CONTATO := space(20) DATA := DATE() @ 08,00 say "CTRL+F2 - Abre janela para copiar, colar e recortar" @ 10,00 say "Nome ...:" get Nome @ 11,00 say "Endereco:" get Endereco @ 12,00 say "Contato :" get Contato @ 13,00 say "Data ...:" get DATA read return *************************************************************************************************** procedure JANELA PRIVATE TELA, oGET, JLS, JCS, JLI, JCI, OPCAO, TXT_CB set key -21 to && DESLIGA A TECLA DE FUNCAO ENQUANTO DENTRO DA MESMA (CTRL+F2) OPCAO := 1 && RETORNO DA OPCAO DO MENU TXT_CB := "" && TEXTO DO CLIPBOARD JLS = 05+02*3 && JANELA LINHA SUPERIOR JCS = 00+20*1 && JANELA COLUNA SUPERIOR JLI = JLS+4+3 && JANELA LINHA INFERIOR JCI = JCS+19 && JANELA COLUNA INFERIOR TELA := savescreen(JLS,JCS,JLI,JCI) && SALVA A TELA DA JANELA *** *** MONTAGEM DO MENU *** @ JLS,JCS clear to JLI,JCI @ JLS,JCS to JLI,JCI double @ JLS+02 , JCS+01 prompt ' C - Copiar ' message 'Copiar Dados para o ClibBoard do Windows' @ row()+1, JCS+01 prompt ' V - Colar ' message 'Colar Dados do ClibBoard do Windows' @ row()+1, JCS+01 prompt ' X - Recortar ' message 'Recortar e enviar Dados para o ClibBoard do Windows' menu to OPCAO if OPCAO = 1 && COPIAR do CLB_CTRL_C elseif OPCAO = 2 && COLAR do CLB_CTRL_V elseif OPCAO = 3 && RECORTAR do CLB_CTRL_X endif restscreen(JLS,JCS,JLI,JCI,TELA) set key -21 to janela && LIGA NOVAMENTE A TECLA DE FUNCAO (CTRL+F2) return *************************************************************************************************** *** *** ClipBoard Ctrl+C *** Copia campo para o ClipBoard do Windows *** procedure CLB_CTRL_C local oGET, TXT_CB TXT_CB := "" oGET := getactive() if oGET # NIL if oGET:TYPE() = "D" TXT_CB := dtoc(oGET:VARGET()) SetWinClip(TXT_CB) elseif oGET:TYPE() = "C" TXT_CB := oGET:VARGET() SetWinClip(TXT_CB) endif endif *csron() return *************************************************************************************************** *** *** ClipBoard Ctrl+X *** Copia campo para o ClipBoard do Windows e limpa o campo de edição *** procedure CLB_CTRL_X local oGET, TXT_CB TXT_CB := "" oGET := getactive() if oGET # NIL if oGET:TYPE() = "D" TXT_CB := dtoc(oGET:VARGET()) oGET:VARPUT(ctod("")) oGET:HOME() SetWinClip(TXT_CB) elseif oGET:TYPE() = "C" TXT_CB := oGET:VARGET() oGET:VARPUT(space(len(TXT_CB))) oGET:HOME() SetWinClip(TXT_CB) endif endif *csron() return *************************************************************************************************** *** *** ClipBoard Ctrl+V *** Copia o conteúdo do ClipBoard do Windows para o campo atual *** procedure CLB_CTRL_V local oGET, TXT_CB TXT_CB := alltrim(GetWinClip()) oGET := getactive() if oGET # NIL if oGET:TYPE() = "D" OGET:VARPUT(ctod(TXT_CB)) elseif oGET:TYPE() = "C" OGET:VARPUT(TXT_CB) endif endif return *************************************************************************************************** *** *** ESTA PROCEDURE REDEFINE SOMENTE A TECLA ALT+C PARA PARAR A EXECUCAO DO PROGRAMA *** procedure ALT_C QUIT return ***************************************************************************************************