Olá!
Testei esta situação no Harbour 3.2.0dev (r2104281802) e acontece exatamente o mesmo problema relatado no 3.4. Mas o OP afirma que no 3.2 funciona... agora não entendi mais nada...

Moderador: Moderadores
// 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
//-------------------------------------------
Function Colar()
//-------------------------------------------
cTexto=hb_GtInfo( HB_GTI_CLIPBOARDDATA )
cNome=ctexto
get=getactive()
get:VarPut(cTexto)
get:UpdateBuffer()
Return
hb_gtInfo( HB_GTI_INKEYFILTER, ;
{ | nKey |
LOCAL nBits, lIsKeyCtrl
nBits := hb_GtInfo( HB_GTI_KBDSHIFTS )
lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
SWITCH nKey
CASE HB_K_CLOSE
RETURN K_ESC
CASE K_MWBACKWARD
RETURN K_DOWN
CASE K_MWFORWARD
RETURN K_UP
CASE K_RBUTTONDOWN
RETURN K_ESC
CASE K_RDBLCLK
RETURN K_ESC
CASE K_SH_TAB
RETURN K_UP
CASE K_CTRL_V
IF lIsKeyCtrl
IF GetActive() != NIL
// hb_GtInfo( HB_GTI_CLIPBOARDPASTE ) ///FALHA EXATAMENTE AQUI, separa em varios gets o conteudo separado por ;
//TROQUE POR
HB_KeyPut(hb_GtInfo( HB_GTI_CLIPBOARDDATA )) //FUNCIONA PERFEITAMENTE
RETURN 0
ENDIF
ENDIF
CASE K_CTRL_C
IF lIsKeyCtrl
IF GetActive() != NIL
hb_gtInfo( HB_GTI_CLIPBOARDDATA, Alltrim(Transform( GetActive():buffer,"")) )
RETURN 0
ENDIF
ENDIF
ENDSWITCH
RETURN nKey
} )
HB_KeyPut(hb_GtInfo( HB_GTI_CLIPBOARDDATA )) //so faz um pouco
hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( AllTrim(GetActive():buffer),"") )
SET TYPEAHEAD TO 4096
SET TYPEAHEAD TO 4096
cTexto=hb_GtInfo( HB_GTI_CLIPBOARDDATA )
cNome=ctexto
get=getactive()
get:VarPut(cTexto)
get:UpdateBuffer()
RETURN 0
Também da certo, só não deixa o restante dos espaços no get quando maior
cTexto := hb_GtInfo( HB_GTI_CLIPBOARDDATA )
Getactive():varPut( PadR( cTexto, Len( GetActive():buffer ) ) )
GetActive():updateBuffer()
RETURN 0
Getactive():VarPut( PadR( AllTrim(Getactive():VarGet()) + hb_GtInfo( HB_GTI_CLIPBOARDDATA ), Len( GetActive():buffer ) ) )
Getactive():UpdateBuffer()
leandrolinauer escreveu:Ficou show, funcionou blz, agora só pra incrementar mais ainda.
getactive():VarPut( PadR(Left(getactive():buffer,(getactive():pos()-1)) + hb_GtInfo( HB_GTI_CLIPBOARDDATA )+if(ReadInsert(),Right(getactive():buffer, Len(getactive():buffer)-(getactive():pos()-1)),Right(getactive():buffer, Len(getactive():buffer)- ((getactive():pos()-1)+len(hb_GtInfo( HB_GTI_CLIPBOARDDATA ))) ) ) , Len(getactive():buffer)) )
getactive():UpdateBuffer()
cClip=hb_GtInfo( HB_GTI_CLIPBOARDDATA )
cGetAtual=getactive():buffer
nSize=Len(getactive():buffer)
nPos=(getactive():pos()-1)
cGetTemp=Left(cGetAtual,nPos) + cClip
IF ReadInsert()
cGetAposClip=Right(cGetAtual, nSize-nPos)
ELSE
cGetAposClip=Right(cGetAtual, nSize- (nPos+len(cClip)) )
ENDIF
cGetNovo=PadR(cGetTemp+cGetAposClip,nSize)
getactive():VarPut(cGetNovo)
getactive():UpdateBuffer()
getactive():VarPut( PadR(Left(getactive():buffer,(getactive():pos()-1)) + hb_GtInfo( HB_GTI_CLIPBOARDDATA )+if(ReadInsert(),Right(getactive():buffer, Len(getactive():buffer)-(getactive():pos()-1)),Right(getactive():buffer, Len(getactive():buffer)- ((getactive():pos()-1)+len(hb_GtInfo( HB_GTI_CLIPBOARDDATA ))) ) ) , Len(getactive():buffer)) )
getactive():UpdateBuffer()
getactive():end() //final do get
Usuários vendo este fórum: Google [Bot] e 8 visitantes