Página 1 de 1

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 07 Abr 2017 09:06
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.

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 07 Abr 2017 11:30
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

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 07 Abr 2017 11:39
por JoséQuintas
Se o problema é a tecla... elimina a tecla....

Código: Selecionar todos

oGet:VarPut( xVar )
KEYBOARD Chr(205)
Inkey(0)

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 07 Abr 2017 13:55
por asimoes
Resolvi com oGet:ExitState(0) //permanece no get

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 13 Fev 2020 14:37
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

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 13 Fev 2020 20:29
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

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 13 Fev 2020 21:47
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

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 14 Fev 2020 08:34
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.

K_CTRL_C e K_CTRL_V (copiar/colar)

Enviado: 16 Fev 2020 18:32
por rubens
Obrigado Quintas...
Funcionou direitinho!!!
:-Y