Página 2 de 2

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 20 Set 2022 17:41
por deividdjs
é o GETSYS.PRG mesmo q não libera os gets para essa finalidade ... tirei e funcionou !! alguem tem ideia qual é a função dentro dele que bloqueia ... preciso de compilar ele junto ...

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 04 Jan 2024 16:59
por leandrolinauer
Boa tarde.
Utilizo esta função no meu sistema.

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_SH_TAB
         RETURN K_UP
      CASE K_CTRL_V
         IF lIsKeyCtrl
            IF GetActive() != NIL
	         getactive():VarPut( PadR(Left(getactive():buffer,(getactive():pos()-1)) + hb_GtInfo( HB_GTI_CLIPBOARDDATA )+if(ReadInsert(),Right(getactive():buffer, Len(getactive():buffer)-(getactive():pos()-1)),Right(getactive():buffer, Len(getactive():buffer)- ((getactive():pos()-1)+len(hb_GtInfo( HB_GTI_CLIPBOARDDATA )))  )   )  , Len(getactive():buffer)) )
					  getactive():UpdateBuffer()
            
	            RETURN 0             
            ENDIF   
         ENDIF
      CASE K_CTRL_C
         IF lIsKeyCtrl
            IF GetActive() != NIL
               hb_gtInfo( HB_GTI_CLIPBOARDDATA,  Transform( AllTrim(GetActive():buffer),"") )
               RETURN 0
            ENDIF
         ENDIF
      ENDSWITCH
      RETURN nKey
       } )
Quando utilizo ele sem os menus da gtwvw, ou seja os meus ele funciona perfeitamente.
Quando compilo ele usando os menus da gtwvw ou toolbar ele não funciona, qdo tecla em CTRL-C ele fecha a leitura GET.
Alguem sabe o motivo?

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 05 Jan 2024 16:18
por deividdjs
leandrolinauer escreveu:Boa tarde.
Utilizo esta função no meu sistema.

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_SH_TAB
         RETURN K_UP
      CASE K_CTRL_V
         IF lIsKeyCtrl
            IF GetActive() != NIL
	         getactive():VarPut( PadR(Left(getactive():buffer,(getactive():pos()-1)) + hb_GtInfo( HB_GTI_CLIPBOARDDATA )+if(ReadInsert(),Right(getactive():buffer, Len(getactive():buffer)-(getactive():pos()-1)),Right(getactive():buffer, Len(getactive():buffer)- ((getactive():pos()-1)+len(hb_GtInfo( HB_GTI_CLIPBOARDDATA )))  )   )  , Len(getactive():buffer)) )
					  getactive():UpdateBuffer()
            
	            RETURN 0             
            ENDIF   
         ENDIF
      CASE K_CTRL_C
         IF lIsKeyCtrl
            IF GetActive() != NIL
               hb_gtInfo( HB_GTI_CLIPBOARDDATA,  Transform( AllTrim(GetActive():buffer),"") )
               RETURN 0
            ENDIF
         ENDIF
      ENDSWITCH
      RETURN nKey
       } )
Quando utilizo ele sem os menus da gtwvw, ou seja os meus ele funciona perfeitamente.
Quando compilo ele usando os menus da gtwvw ou toolbar ele não funciona, qdo tecla em CTRL-C ele fecha a leitura GET.
Alguem sabe o motivo?

BOA TARDE AMIGO .. eu utilizo assim ...

Código: Selecionar todos

*----------------------------*
* FUNCAO COPIA E COLA HARBOUR // ACIONA CTRL + C / CTRL + V
*----------------------------*
    
#include "hbgtinfo.ch"

FUNCTION ACTCOPYPASTE()

  hb_gtInfo( HB_GTI_INKEYFILTER, { | nKey |
      LOCAL nBits, lIsKeyCtrl
      SWITCH nKey
      CASE K_MWBACKWARD
         RETURN K_DOWN
      CASE K_MWFORWARD
         RETURN K_UP
      CASE K_RBUTTONDOWN
         keyboard HB_GTINFO(  HB_GTI_CLIPBOARDPASTE ) // COLA C/ BOTÃO DIREITO
       RETURN
      CASE K_RDBLCLK
         RETURN K_ESC
      CASE K_LDBLCLK
         RETURN K_ENTER
      CASE K_CTRL_V
         nBits := hb_GtInfo( HB_GTI_KBDSHIFTS )
         lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
         IF lIsKeyCtrl
            keyboard HB_GTINFO(  HB_GTI_CLIPBOARDPASTE ) // COLA C/ CTRL+V
            RETURN 0
         ENDIF
      CASE K_CTRL_C
         nBits := hb_gtInfo( HB_GTI_KBDSHIFTS )
         lIsKeyCtrl := ( nBits == hb_BitOr( nBits, HB_GTI_KBD_CTRL ) )
         IF lIsKeyCtrl             
            IF GetActive() != NIL
               // O IF ABAIXO FOI ALTERADO POR ANDERSON
               IF !EMPTY(GetActive():VarGet())
                  // SE O GET JA TINHA UM VALOR, VAI COPIAR ESSE VALOR JA SALVO PARA COLAR
                  hb_gtInfo( HB_GTI_CLIPBOARDDATA, Transform( GetActive():VarGet(), "" ) )
               ELSE
                  // O GET ESTA VAZIO, MAS PODE HAVER CARACTERES NO BUFFER DESSE GET!
                  hb_gtInfo( HB_GTI_CLIPBOARDDATA, GetActive():BUFFER )
               ENDIF
            MsgExclamation( "Copiado al portapapeles" )             
            RETURN 0
            ENDIF
         ENDIF
      ENDSWITCH
      RETURN nKey
       } )
   SET( _SET_EVENTMASK, INKEY_ALL )
RETURN
e no inico do sistema colo a função ...

Código: Selecionar todos

*---------------*
 FUNCTION MAIN()  && PROGRAMA PRINCIPAL 
*---------------*
 
 *********************************************
 * FUNۂO COPIA E COLA (CTRL + C / CTRL + V) *
 *********************************************
 
 ACTCOPYPASTE() // ATIVA FUNۂO

Testa ai ..

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 08 Jan 2024 17:27
por leandrolinauer
Boa tarde.
Fiz o teste usando esta que você mencionou e tbem ocorre o mesmo problema.
Detalhe que o sistema é o mesmo, o compilador é o mesmo, ou seja, só mudo o projeto mas buscam os mesmos prgs só que o meu usa os menus e toolbar da GTWVW e aí os gets não aceitam o CTRL+C e nem o CTRL+V, coloquei uma mensagem nele para parar quando passar, em um para na mensagem já no meu o mesmo prg compilado com a mesma mensagem ele não passa pela função.
não aciona.
Precisamente creio que ele se comporta como um PG-DOWN

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 08 Jan 2024 19:32
por deividdjs
Eu uso um GETSYS.prg Modificado tbm ... se quiser posso se quiser posso te passar pra vc fazer um teste com ele ...

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 08 Jan 2024 20:05
por JoséQuintas
Faz um teste isolado sem getsys.

Código: Selecionar todos

#include "hbgtinfo.ch"
cText := "Texto que está sendo copiado" 
hb_gtInfo( HB_GTI_CLIPBOARDDATA, cText )

Código: Selecionar todos

#include "hbgtinfo.ch"
cText := hb_gtInfo( HB_GTI_CLIPBOARDPASTE )
? cText
Depois disso funcionar, aí entra mexer na getsys, sabendo o tipo de parâmetro a ser usado.

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 09 Jan 2024 15:15
por leandrolinauer
Boa tarde.
Localizei o problema, preciso passar este conteudo da função abaixo para a mais abaixo.

Código: Selecionar todos

local bAction
  if nkey==P_DEFAULT_MENUKEYEVENT //linha que da erro
     * MenuKeyEvent
     return nMenuChecker(WVW_GETLASTMENUEVENT())
  elseif (bAction := SETKEY(nKey)) != NIL
     eval(bAction, PROCNAME(), PROCLINE(), READVAR())
     return 0
  endif
If nkey==P_DEFAULT_MENUKEYEVENT = erro nesta linha

Este código acima que não tem o ctrc e ctrv, que quero eliminar e substituir pelo abaixo, mas inserindo esta função acima no debaixo, não consegui, só da erro

Código: Selecionar todos

FUNCTION nAfterInkey(nkey)

      LOCAL nBits, lIsKeyCtrl, bAction
      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_LDBLCLK
           RETURN K_ENTER
        CASE K_SH_TAB
           RETURN K_UP
        CASE K_CTRL_V
           IF lIsKeyCtrl
              IF GetActive() != NIL
	              getactive():VarPut( PadR(Left(getactive():buffer,(getactive():pos()-1)) + hb_GtInfo( HB_GTI_CLIPBOARDDATA )+if(ReadInsert(),Right(getactive():buffer, Len(getactive():buffer)-(getactive():pos()-1)),Right(getactive():buffer, Len(getactive():buffer)- ((getactive():pos()-1)+len(hb_GtInfo( HB_GTI_CLIPBOARDDATA )))  )   )  , Len(getactive():buffer)) )
					  getactive():UpdateBuffer()
					  getactive():end() 
	            RETURN 0             
              ENDIF   
           ENDIF
        CASE K_CTRL_C
           IF lIsKeyCtrl
              IF GetActive() != NIL
                 hb_gtInfo( HB_GTI_CLIPBOARDDATA,  Transform( AllTrim(GetActive():buffer),"") )
                 RETURN 0
              ENDIF
           ENDIF
      ENDSWITCH
      RETURN nKey
      
     
RETURN

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 09 Jan 2024 15:42
por leandrolinauer
Achei o problema
Falta do define abaixo no fonte necessário.

#DEFINE P_DEFAULT_MENUKEYEVENT 1024 //! must match with HBGTWVW.H

Resolvido

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 10 Jan 2024 13:52
por JoséQuintas
O ideal seria usar compilação -w3 -es2.

Isso acusa a falta de #define durante a compilação, além de outros erros.

A compilação assim exige declarar todas as variáveis e campos do fonte.
Vale muito a pena fazer isso, mas pra um aplicativo já existente, pode significar meses de trabalho.

Opcionalmente, pode definir isso só pra fontes novos.

Pode fixar o uso de compilar usando -w3, e nos fontes velhos coloca:

Código: Selecionar todos

#pragma -w0
E com o tempo pode ir resolvendo cada fonte, começando pelas funções de uso geral, e remover esse #pragma.

Quando fiz isso, uma coisa que usei foi listar os fontes em ordem de tamanho, e começar pelos menores.

Não adianta ter pressa, realmente pode demorar meses até terminar.
Mas conforme vai se acostumando, vai fazendo tudo mais rápido, e vai desenvolvendo já fazendo a checagem "de cabeça", antes do compilador reclamar.
Isso evita muito erro em cliente, porque já vai ver erro na compilação, e não na execução.

Copiar e Colar e uso com Mouse WVT/WVW

Enviado: 13 Jan 2024 09:54
por leandrolinauer
Verdade, realmente já daria certo para evitar alguns erros.
Fiz uma alteração no sistema para mudança de LAYOUT e nisto eu acabei colocando uma linha no lugar errado para funcionar o menu e a toolbar, anulando a anterior que tinha a configuração do CTRL+C entre outras.

Agora esta funcionando certinho, tanto em um LAYOUT e no outro.
Nesta alteração criei um LAYOUT mais agradável aos olhos.

Valeu.
Obrigado.