Boa tarde!
Com Harbour 3.2 (que também cola uma palavra em cada get se tiverem separadas com ponto e vírgula), resolvi dessa forma:
-> Colando um texto com ponto e vírgula através do Ctrl-V ele distribui entre os gets
-> Colando um texto com ponto e vírgula através do Ctrl-P ele colo tudo no get ativo
Da pra mudar o Ctrl-P para o que quiser, até substituir pelo Ctrl-V se quiser...
No caso aqui é tudo variável texto, é só um exemplo.
Código: Selecionar todos
// linha de comando para compilar:
// HBMK2.EXE PROG -B hbct.hbc xhb.hbc gtwvg.hbc
// Usando
// Harbour 3.2.0dev (r2104281802)
// Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
#include "inkey.ch"
#include "wvtwin.ch"
#include "hbgtinfo.ch"
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
FUNCTION Main()
Local cNome:=cEndereco:=cBairro:=cCidade:=cEstado:=Space(50)
Local cDados
HB_SETCODEPAGE( "PT850" )
hb_langSelect( 'PT' )
SET CONSOLE OFF
SET DELETED ON
SET SCOREBOARD OFF
SET EXCLU OFF
SET CONFIRM ON
SET ESCAPE OFF
SET DATE BRITI
SET WRAP ON
SET EPOCH TO 2000 // SET EPOCH TO 1970
SET KEY 27 TO FIM()
AltD( 1 )
HarbourInit()
cDados="Joao;Rua Sobe e Desce,23;Centro;Porto Alegre;RS "
Do While .t.
Cls
@ 02,10 say "Copie o texto do ultimo get e cole no primeiro"
@ 04,10 say "Para colar utilize Ctrl-V ou Ctrl-P"
@ 20,20 say "Tecle ESC para sair."
@ 10,10 say "Nome " get cNome
@ 11,10 say "Endereco" get cEndereco
@ 12,10 say "Bairro " get cBairro
@ 13,10 say "Cidade " get cCidade
@ 14,10 say "Estado " get cEstado
@ 16,10 say "Dados " get cDados
Read
Enddo
Function HarbourInit()
SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE ) // + HB_INKEY_GTEVENT ) // Set Eventmask to 1002
hb_gtInfo( HB_GTI_SELECTCOPY, .T. ) // Permite selecao para copia de dados
hb_gtInfo( HB_GTI_SELECTCOPY, "Selecione e Copie" ) // Coloca a mensagem em portugues (menu esquerdo superior windows)
hb_gtInfo( HB_GTI_RESIZABLE, .t. )
//Incio do comando.... -->> A CADA EVENTO DE MOUSE OU TECLADO PASSDA ANTES POR AQUI (POR ISSO O NOME EH INKEYFILTER).
// HB_GTI_INKEYFILTER Não funciona com console, nem com GTWVT. Funciona soh com GTWVG e GTWVW.
hb_gtInfo( HB_GTI_INKEYFILTER, { | nKey |
LOCAL nBits, lIsKeyCtrl ,OLD_REG_OPEN
nBits := hb_GtInfo( HB_GTI_KBDSHIFTS )
lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
SWITCH nKey // A tecla ou o Clic do mouse estah em nKey a cada evento do INKEYFILTER
CASE K_INS
IF lIsKeyCtrl
hb_GtInfo( HB_GTI_CLIPBOARDPASTE )
RETURN 0
ENDIF
CASE K_CTRL_P
cTexto=hb_GtInfo( HB_GTI_CLIPBOARDDATA )
cNome=ctexto
get=getactive()
get:VarPut(cTexto)
get:UpdateBuffer()
RETURN 0
CASE K_CTRL_C
IF lIsKeyCtrl
IF GetActive() != NIL
hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( GetActive():varGet(), "" ) )
RETURN 0
ENDIF
ENDIF
ENDSWITCH
RETURN nKey
} )
//...fim do comando hb_gtInfo.
Return
Function Fim()
DbCloseAll()
Quit
Outra alternativa (caso não queira usar o INKEYFILTER ) é colocar antes do READ um SET KEY 16 TO COLAR() // Ctrl-P
E acionar a função abaixo que tb funciona.
Código: Selecionar todos
//-------------------------------------------
Function Colar()
//-------------------------------------------
cTexto=hb_GtInfo( HB_GTI_CLIPBOARDDATA )
cNome=ctexto
get=getactive()
get:VarPut(cTexto)
get:UpdateBuffer()
Return
Anexei o arquivo já compilado, só renomear para .EXE e executar caso alguém queira testar sem ter que compilar o código acima.