Copiar e Colar e uso com Mouse WVT/WVW

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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 ...
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
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

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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?
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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 ..
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
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

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
deividdjs
Usuário Nível 3
Usuário Nível 3
Mensagens: 377
Registrado em: 19 Set 2006 09:39
Localização: Foz do Iguaçu / Pr

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem por deividdjs »

Eu uso um GETSYS.prg Modificado tbm ... se quiser posso se quiser posso te passar pra vc fazer um teste com ele ...
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Copiar e Colar e uso com Mouse WVT/WVW

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

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
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

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem por leandrolinauer »

Achei o problema
Falta do define abaixo no fonte necessário.

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

Resolvido
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

Copiar e Colar e uso com Mouse WVT/WVW

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

Copiar e Colar e uso com Mouse WVT/WVW

Mensagem 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.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Responder