Copia / Colar no HARBOUR

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

Moderador: Moderadores

leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Copia / Colar no HARBOUR

Mensagem 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.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copia / Colar no HARBOUR

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Copia / Colar no HARBOUR

Mensagem 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.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Copia / Colar no HARBOUR

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Copia / Colar no HARBOUR

Mensagem por vailton »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copia / Colar no HARBOUR

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Copia / Colar no HARBOUR

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copia / Colar no HARBOUR

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Copia / Colar no HARBOUR

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copia / Colar no HARBOUR

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Copia / Colar no HARBOUR

Mensagem 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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copia / Colar no HARBOUR

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Copia / Colar no HARBOUR

Mensagem 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
Propriedades desmarcadas afetam o copiar/colar
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Copia / Colar no HARBOUR

Mensagem 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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Copia / Colar no HARBOUR

Mensagem 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.
Responder