Página 1 de 3
Copia / Colar no HARBOUR
Enviado: 28 Fev 2022 11:15
por leandrolinauer
Bom dia a todos, pesquisei no fórum algo para copiar e colar no get e encontrei as funções abaixo que cairam como uma luva.
Código: Selecionar todos
SET KEY K_CTRL_C TO Ctrl_c
SET KEY K_CTRL_V TO Ctrl_v
Function Ctrl_c
local oGet := GetActive()
If !Empty(oGet)
Return WVW_SetClipboard( Alltrim(oGet:buffer) )
EndIf
Return
Function Ctrl_v
local oGet := GetActive()
If !Empty(oGet)
Keyboard WVW_GetClipboard() //StrTran( WVW_GetClipboard(), ';', ',')
EndIf
Return
Nada é perfeito por completo (rsrsrs)
Vamos ao problema:
Depois de inserido estas funções o PAGE DOWN deixou de funcionar para escape do GET, mas o PAGE UP funciona, alguém sabe me informar o porque, visto que nada foi alterado para interferir no page down.
Grato.
Copia / Colar no HARBOUR
Enviado: 28 Fev 2022 16:09
por JoséQuintas
TUDO FOI ALTERADO pra interferir no Page Down.
PAGEDOWN e CONTROL-C são a mesma coisa.
Saída:
Na função de copiar/colar, ANTES de acionar a rotina, ou de preferência durante o teste, testar se CONTROL está pressionado.
Copia / Colar no HARBOUR
Enviado: 28 Fev 2022 17:46
por leandrolinauer
Boa tarde José Quintas, realmente é a mesma coisa, por isto que da problema mesmo.
Pesquisei e encontrei a função abaixo que faz a mesma coisa e mantem todas as outras teclas com suas funcionalidades.
Código: Selecionar todos
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_TAB
RETURN K_DOWN
CASE K_SH_TAB
RETURN K_UP
CASE K_CTRL_V
IF lIsKeyCtrl
hb_GtInfo( HB_GTI_CLIPBOARDPASTE )
RETURN 0
ENDIF
CASE K_CTRL_C
IF lIsKeyCtrl
IF GetActive() != NIL
hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( GetActive():VarGet(), "" ) )
RETURN 0
ENDIF
ENDIF
ENDSWITCH
RETURN nKey
} )
Valeu, grato pela ajuda.
Um abraço.
Copia / Colar no HARBOUR
Enviado: 01 Mar 2022 09:37
por Itamar M. Lins Jr.
Olá!
Estamos em 2022 e pergunto; Quantos anos tem que o (MS-DOS) não existe ?
Mesmo assim milhares de aplicações ainda são mantidas e até feitas usando o ambiente (MS-DOS).
Quem mudou para Minigui/Hwgui/FiveWin.... Não tem essas barreiras ou problemas.
Apenas estou observando, esse obstáculo. O mesmo raciocínio p/ impressões e relatórios.
Nisso fica um misto de coisas que não são ultrapassadas, funcionam, são eficientes até certo ponto ! Mas, porém tem muita incompatibilidade com a realidade do (OS-WINDOWS) ou com qualquer (OS) VISUAL.
Saudações,
Itamar M. Lins Jr.
Copia / Colar no HARBOUR
Enviado: 01 Mar 2022 15:26
por vailton
Obrigado Leandro por compartilhar!
Copia / Colar no HARBOUR
Enviado: 01 Mar 2022 17:10
por JoséQuintas
Acabou encontrando a função que postei tempos atrás.
Acaba facilitando o uso do scroll do mouse, o HB_K_CLOSE transformado em ESC - da GTWVG, o TAB e SHIFT-TAB muito usado em GUI transformado no equivalente da GETSYS.
Uso até hoje.
Itamar M. Lins Jr. escreveu:Estamos em 2022 e pergunto; Quantos anos tem que o (MS-DOS) não existe ?
Mesmo assim milhares de aplicações ainda são mantidas e até feitas usando o ambiente (MS-DOS).
Quem mudou para Minigui/Hwgui/FiveWin.... Não tem essas barreiras ou problemas.
Pois é....
tem horas que o negócio é Android/Tablet/etc. e não serve minigui/fivewin.
tem horas que o negócio é html.
Mas aqui.... o Itamar reforçou sobre Windows.
Sei lá....
Realidade de 2022:
Considerando que mudaram até o negócio de homem e mulher, o que dizer de programação....
Tá valendo tudo, junto ou misturado, tanto faz.
Copia / Colar no HARBOUR
Enviado: 01 Mar 2022 20:49
por Itamar M. Lins Jr.
Olá!
A minha postagem foi em relação a essa:
TUDO FOI ALTERADO pra interferir no Page Down.
PAGEDOWN e CONTROL-C são a mesma coisa.
Porque no windows não é assim. CTRL + C e CTRL + V etc... no windows não interfere no PgDn. Que no caso do MS-DOS é chr(3).
São as adaptações novas em um OS limitado de um OS bem mais amplo.
Mas aqui.... o Itamar reforçou sobre Windows.
Não tem nada a ver com linguagens, é limitação do ambiente mesmo.
Saudações,
Itamar M. Lins Jr.
Copia / Colar no HARBOUR
Enviado: 02 Mar 2022 00:06
por JoséQuintas
Itamar M. Lins Jr. escreveu:Porque no windows não é assim. CTRL + C e CTRL + V etc... no windows não interfere no PgDn. Que no caso do MS-DOS é chr(3).
São as adaptações novas em um OS limitado de um OS bem mais amplo.
No Harbour dá pra fazer a checagem, usando o INKEY extendido.
Não muito importante, MS-DOS é puxar o saco da Microsoft.
Mas limitado mesmo é seu cérebro kkkkk
Em pleno 2022, está considerando que CONSOLE é o extinto DOS kkkkkkk
Copia / Colar no HARBOUR
Enviado: 02 Mar 2022 08:17
por Itamar M. Lins Jr.
Olá!
Em pleno 2022, está considerando que CONSOLE é o extinto DOS kkkkkkk
Inventa as coisas e depois sai tirando o corpo de banda... e como sempre inventando o que eu não disse.
Console podemos entender como herança do MS-DOS.(CLIPPER) -> inkey do Clipper.
Vc que escreveu.
TUDO FOI ALTERADO pra interferir no Page Down.
Agora vem mudando para inkey estendido etc...
Saudações,
Itamar M. Lins Jr.
Copia / Colar no HARBOUR
Enviado: 02 Mar 2022 10:33
por JoséQuintas
Itamar M. Lins Jr. escreveu:Inventa as coisas e depois sai tirando o corpo de banda... e como sempre inventando o que eu não disse.
Console podemos entender como herança do MS-DOS.(CLIPPER) -> inkey do Clipper.
Avisa a Microsoft porque ela não sabe disso kkkkkk
Só acredito se o Linus Toward ou Bill Gates confirmarem isso.
Copia / Colar no HARBOUR
Enviado: 02 Jun 2022 17:30
por leandrolinauer
Boa tarde a todos, revendo novamente as funções.
Cada dia uma surpresa nova do Harbour (rsrsrsrs)
Alterei de Harbour 3.2 para 3.4 e arrumei muitos problemas, mas em compensação ganhei outros.
Bom é o seguinte:
Código: Selecionar todos
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_TAB
// RETURN K_DOWN
CASE K_SH_TAB
RETURN K_UP
CASE K_CTRL_V
IF lIsKeyCtrl
IF GetActive() != NIL
hb_GtInfo( HB_GTI_CLIPBOARDPASTE )
RETURN 0
ENDIF
ENDIF
CASE K_CTRL_C
IF lIsKeyCtrl
IF GetActive() != NIL
hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( GetActive():buffer,"") )
RETURN 0
ENDIF
ENDIF
ENDSWITCH
RETURN nKey
} )
A função acima, funcionava perfeitamente no 3.2, mas no 3.4 não cola como deveria.
O problema, ao colar um conteúdo copiado de qualquer lugar para dentro de um GET texto e até grande o mesmo não respeita o simbolo ';' automaticamente os dados são jogados de get em get posteriores e não ficando tudo em um get só.
Exemplo campo email 350 caracteres totais.
teste@gmail.com;
teste1@gmail.com;
teste2@gmail.com (area de transferencia copiada de qualquer lugar, até de um get mesmo)
Ao ser colado esta area de transferencia em um get a função acima joga agora desta forma abaixo.
teste@gmail.com no get corrente e cada um dos outros em outros gets sucessivos pra frente separados certinho no ';'.
Já fiz teste, troquei o ';' por ',' e funciona perfeitamente, então por isto descobri que é justamente o caracter ';'.
Alguem sabe como resolver este b.o ?
Valeu
Copia / Colar no HARBOUR
Enviado: 02 Jun 2022 19:16
por JoséQuintas
Esse pulo automático de um GET para outro pode atrapalhar o usuário, porque dependendo da digitação pode pular ou não para o próximo get.
Acostumei a usar SET CONFIRM ON, isso só pula ao próximo get se o usuário teclar ENTER.
Acaba ajudando nesse problema, pelo menos não vai pular de get ao colar, mas a última letra pode não ser a correta, porque vai considerar todo restante como digitando na última letra.
Mesmo assim, como continua no get, o usuário ainda pode fazer ajustes no texto colado, o que é interessante.
Copia / Colar no HARBOUR
Enviado: 03 Jun 2022 08:08
por carlaoonline
Bom dia!
leandrolinauer escreveu:Depois de inserido estas funções o PAGE DOWN deixou de funcionar para escape do GET, mas o PAGE UP funciona, alguém sabe me informar o porque, visto que nada foi alterado para interferir no page down.
O porquê eu não faço ideia, porém como o Page UP (Asc=18) está funcionando como escape para os Get,s (segundo o que entendi), então como medida provisória, podes atribuir o código do Page Up para a tecla Page Down (Asc=3) antes do Read e retirar após.
Código: Selecionar todos
@ 10,10 say .......
@ 11,10 say .......
SET KEY 3 TO Up2Down()
READ
SET KEY 3 TO
Function Up2Down()
KEYBOARD( CHR( 18 ) ) // Ao teclar no Page Down, é enviado um Page Up
Return
No caso de Copiar/Colar para Harbour console, temos as propriedades do executável clicando no canto esquerdo superior, onde as configurações de copiar e colar mudam dependendo das caixas marcadas (sei que praticamente todos sabem disso, mas pode ter alguém que passe despercebido...)

- Propriedades desmarcadas afetam o copiar/colar
Copia / Colar no HARBOUR
Enviado: 03 Jun 2022 08:46
por leandrolinauer
Bom dia.
Set confirm On, não adiantou, continua pulando de campo em campo com os restantes dos dados.
Mas como eu testei, só quebra o texto com o simbolo ";" com virgula não acontece copia tudo no get mesmo, o problema esta sendo no ";".
Grato
Copia / Colar no HARBOUR
Enviado: 03 Jun 2022 10:07
por carlaoonline
... acredito que tenha um SET para habilitar/desabilitar esse procedimento de distribuir pelos gets o conteúdo ao colar.
Dei um hbmk2.exe -find set pra ver se aparece alguma coisa que possa ser (vai que tenha um SetBreakGetOnPaste ) , mas aparece um milhão de comandos....
Talves esse possa ser
ZGM_EXPANDROWSONPASTE()
Esta no núcleo do Harbour (3.2)
Mas esse negócio de distribuir pelos gets pode ser muito proveitoso na programação e poupar algum tempo para o usuário dependendo o caso, principalmente se houver também uma maneira de trocarmos o " ; " por outro símbolo a nossa escolha.