Clipper On Line • Ver Tópico - Copia / Colar no HARBOUR

Copia / Colar no HARBOUR

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Copia / Colar no HARBOUR

Mensagempor leandrolinauer » 28 Fev 2022 11:15

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.
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.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Copia / Colar no HARBOUR

Mensagempor JoséQuintas » 28 Fev 2022 16:09

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Copia / Colar no HARBOUR

Mensagempor leandrolinauer » 28 Fev 2022 17:46

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.


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.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Copia / Colar no HARBOUR

Mensagempor Itamar M. Lins Jr. » 01 Mar 2022 09:37

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Copia / Colar no HARBOUR

Mensagempor vailton » 01 Mar 2022 15:26

Obrigado Leandro por compartilhar!
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Avatar de usuário

vailton
Colaborador

Colaborador
 
Mensagens: 378
Data de registro: 17 Nov 2005 18:08
Cidade/Estado: Brasil
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

Copia / Colar no HARBOUR

Mensagempor JoséQuintas » 01 Mar 2022 17:10

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Copia / Colar no HARBOUR

Mensagempor Itamar M. Lins Jr. » 01 Mar 2022 20:49

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Copia / Colar no HARBOUR

Mensagempor JoséQuintas » 02 Mar 2022 00:06

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Copia / Colar no HARBOUR

Mensagempor Itamar M. Lins Jr. » 02 Mar 2022 08:17

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Copia / Colar no HARBOUR

Mensagempor JoséQuintas » 02 Mar 2022 10:33

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Copia / Colar no HARBOUR

Mensagempor leandrolinauer » 02 Jun 2022 17:30

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:
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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Copia / Colar no HARBOUR

Mensagempor JoséQuintas » 02 Jun 2022 19:16

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Copia / Colar no HARBOUR

Mensagempor carlaoonline » 03 Jun 2022 08:08

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.

@ 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...)

tela.png
Propriedades desmarcadas afetam o copiar/colar
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Copia / Colar no HARBOUR

Mensagempor leandrolinauer » 03 Jun 2022 08:46

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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

Copia / Colar no HARBOUR

Mensagempor carlaoonline » 03 Jun 2022 10:07

... 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.
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro