K_CTRL_C e K_CTRL_V (copiar/colar)

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por asimoes »

Pessoal,

Estou usando uma função para copiar e colar conteúdo de gets, notei o seguinte olhando a inkey.ch a K_CTRL_C e PgDn tem o mesmo valor 3, quando se tecla CTRL + C, faz também um PgDn e vice-versa , ou seja finaliza o get, mas intenção não é essa, quero que permaneça no GET ativo, tem alguma solução ?

Código: Selecionar todos

#include "inkey.ch"

******************************************************************
* Autor   : Alexandre Simões
* Objetivo: Facilitar a cópia de conteúdo de gets para outros gets
* Data    : 06/04/2017
* Sintaxe : SetKey( K_CTRL_C, {|| CopyPaste() } )
*           SetKey( K_CTRL_V, {|| CopyPaste() } )
*******************************************************************

FUNCTION CopyPaste()
LOCAL oGet := GetActive(), lIsKeyCtrl, nBits, xVar

   SetKey( K_CTRL_C, NIL )
   SetKey( K_CTRL_V, NIL )
   
   nBits := hb_GtInfo( HB_GTI_KBDSHIFTS )
   
   lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
   
   nKey       := LastKey()
   
   DO CASE
       CASE nKey = K_CTRL_C
         IF lIsKeyCtrl
            IF GetActive() != NIL
               xVar := Transform( oGet:varGet(), oGet:Picture )
               IF ValType( xVar ) = "N"
                  xVar := hb_NtoS(  xVar )
               ELSEIF ValType( xVar ) = "D"
                  xVar := DTOC( xVar )
               ENDIF
               hb_gtInfo( HB_GTI_CLIPBOARDDATA, xVar )
            ENDIF
         ENDIF
       CASE nKey = K_CTRL_V
         IF lIsKeyCtrl
            IF GetActive() != NIL
               xVar := hb_gtInfo( HB_GTI_CLIPBOARDDATA )
               IF ValType( oGet:VarGet() ) = "C"
               ELSEIF ValType( oGet:VarGet() ) = "N"
                  xVar := Val( xVar )
               ELSEIF ValType( oGet:VarGet() )  = "D"
                  xVar := CTOD( xVar )
               ENDIF
               oGet:VarPut( xVar )
            ENDIF
         ENDIF
   ENDCASE
   
   SetKey( K_CTRL_C, {|| CopyPaste() } )
   SetKey( K_CTRL_V, {|| CopyPaste() } )
   
RETURN .T.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
dbdc5554
Usuário Nível 3
Usuário Nível 3
Mensagens: 149
Registrado em: 03 Dez 2012 08:49
Localização: uberlandia-MG

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por dbdc5554 »

faço contorl + c e control + V em um mesmo READ

get a
get b
get c
get d

read

faço control C no campoa e copio par aos outro ou qq outro e fica tudo nromal

usu xhb + wvw posso ver se tem algum comando rs ou ch

Paiva
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por JoséQuintas »

Se o problema é a tecla... elimina a tecla....

Código: Selecionar todos

oGet:VarPut( xVar )
KEYBOARD Chr(205)
Inkey(0)
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por asimoes »

Resolvi com oGet:ExitState(0) //permanece no get
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por rubens »

Boa tarde ...

ASimoes,

Usei essa função no inicio do sistema e consigo copiar/colar de boa...
Mas a tecla page down parou de funcionar dentro do read... Se estou no primeiro get e pressiono page down não sai do read.
Aconteceu isso com você?
Sabe como resolver?

No Browse() funciona normal..

p.s. Me desculpem por estar reativando um tópico antigo...

Obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por JoséQuintas »

Harbour?

Código: Selecionar todos

   hb_gtInfo( HB_GTI_INKEYFILTER, { | nKey | MyInkeyFilter( nKey ) } )

Código: Selecionar todos

/*
ZE_INKEYFILTER
José Quintas
*/

#include "hbgtinfo.ch"
#include "inkey.ch"

FUNCTION MyInkeyFilter( 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 HB_K_RESIZE    ; wvgSetAppWindow():InvalidateRect(); wvgSetAppWindow():Refresh(); RETURN NIL
   //CASE HB_GTE_RESIZED ; wvgSetAppWindow():InvalidateRect(); wvgSetAppWindow():Refresh(); RETURN NIL
   CASE K_MWBACKWARD   ; RETURN K_DOWN
   CASE K_MWFORWARD    ; RETURN K_UP
   CASE K_RBUTTONDOWN  ; RETURN K_ESC
   CASE K_RBUTTONUP    ; RETURN NIL
   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 NIL
      ENDIF
   CASE K_CTRL_C
      IF lIsKeyCtrl
         IF GetActive() != NIL
            hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( GetActive():VarGet(), "" ) )
            RETURN NIL
         ENDIF
      ENDIF
   ENDSWITCH

   RETURN nKey
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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por rubens »

O texto da minha postagem foi alterado !!!
Use essa função no início do sistema e possa copiar / colar a boa ...
Mas uma página pressionada para baixo parou de funcionar dentro da leitura ... Se você não está conseguindo obter a primeira página pressionada, não sai do ler.
é para ser:
Usei essa função no início do meu sistema e funcionou para copiar/colar de boa...
Mas o page down parou de funcionar dentro do read. Quando pressiona page down não sai do read.

mas enfim...
Como usaria o que você postou Quintas.. ?
tem que definie algum set? Como seria a chamada?

Obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por JoséQuintas »

rubens escreveu:Como usaria o que você postou Quintas.. ?
tem que definie algum set?
Como seria a chamada?
O post tem uma função e a chamada da função.
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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

K_CTRL_C e K_CTRL_V (copiar/colar)

Mensagem por rubens »

Obrigado Quintas...
Funcionou direitinho!!!
:-Y
"Eu e minha casa servimos ao Senhor e você ???"
Responder