Clipper On Line • Ver Tópico - Ativar Copiar/Colar

Ativar Copiar/Colar

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

Moderador: Moderadores

 

Ativar Copiar/Colar

Mensagempor clipsis » 28 Nov 2011 13:35

Olá boa tarde a todos

Uso GTWVG em modo console.

Existe alguma maneira de ativar a opção Copiar/Colar no menu que se abre quando se clica no ícone da janela do programa.

Gerei o executável ma apenas aparece Mark and Copy porém necessito liberar para o cliente colar e não estou conseguindo...

Abrs
Clipper sistemas
Clipper 5.2/Blinker
Harbour 3.0/Mingw
clipsis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 78
Data de registro: 02 Jun 2010 11:53
Cidade/Estado: brasil
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Ativar Copiar/Colar

Mensagempor Pablo César » 28 Nov 2011 16:28

Existe alguma maneira de ativar a opção Copiar/Colar no menu que se abre quando se clica no ícone da janela do programa
Quer dizer executar funções apenas entra no programa ? Antes de entrar, clicando no atalho ? Não entendí.

Gerei o executável ma apenas aparece Mark and Copy porém necessito liberar para o cliente colar e não estou conseguindo...
Você tem a rotina ? Pode postar parte do código para ver ? Se você consegue copiar então vai poder utilizar o que colocou na área de transferência para colar depois. Você verificou se está colocando algo na área de transferência ? Se sim, então é só fazer na outra opção a função para colar.

Eu nunca usei GTWVG, em HMG é extremamente fácil.
Para copiar basta colocar na sua opção colar: System.Clipboard := 'Hello Clipboard!!!'
E para colar: sua_variavél:=System.Clipboard

Em termos de Harbour eis uns exemplos funções em C para colar:
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

/*

   Cut_Text( nHandle )
   Cut the selected text to clipboard from window
   
*/

HB_FUNC( CUT_TEXT )
{
   SetFocus( (HWND) hb_parnl( 1 ) );
   SendMessage( ( HWND ) hb_parnl( 1 ), WM_CUT, 0 , 0 );
}

/*

   Paste_Text( nHandle )
   Paste text from the clipboard into the window

*/

HB_FUNC( PASTE_TEXT )
{
   SetFocus( ( HWND ) hb_parnl( 1 ) );
   SendMessage( ( HWND ) hb_parnl( 1 ), WM_PASTE, 0 , 0 );
}

#pragma ENDDUMP
O conteúdo que você deseja copiar/colar, é texto ?

Eu ja utilizei Hb_GtInfo( HB_GTI_CLIPBOARDDATA, cTexto ) para inserir texto na área de transferência.
Eis outro código exemplo:
#include "Hbgtinfo.ch"

FUNCTION MAIN()
   LOCAL GetList := {}
   LOCAL cGet
    //HB_GTINFO( HB_GTI_CLIPBOARDDATA,"Test" ) - set CLIPBOARD data to
   // test
   cGet := PADR(HB_GTINFO( HB_GTI_CLIPBOARDDATA),30)
   @ 10, 10 GET cGet
   READ
RETURN NIL
Uma vez que você leu o conteúdo texto do clipboard ou área de transferência para uma <variavel>, e o usuário estiver num get e você quer simular tecla F10 para copiar dentro. Primeiro defino a tecla F10 para chamar uma função que cole o conteúdo e depois dou um KEYBOARD <variavel>.
..//..
SET KEY -9 TO COLAR()
@ ... GET cVar
READ
..//..

FUNCTION COLAR()
cLido:=HB_GTINFO( HB_GTI_CLIPBOARDDATA)
KEYBOARD cLido
RETURN NIL
Tiver ainda dúvidas de como fazer, poste o seu código que ficará mais fácil de ajuda-lo.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 150 vezes

Ativar Copiar/Colar

Mensagempor clipsis » 29 Nov 2011 08:05

Olá, bom dia!!

Pablo fiz como vc disse na função COLAR e deu certo

Agora mais uma dúvida:
Como posso diferenciar a tecla INS de CTRL+V, já que no INKEY.CH elas aparecem com o mesmo código?

Outra coisa é possível saber se a tecla CTRL foi pressionada ?

Obrigado pela ajuda, fico no aguardo

Abrs
Clipper sistemas
Clipper 5.2/Blinker
Harbour 3.0/Mingw
clipsis
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 78
Data de registro: 02 Jun 2010 11:53
Cidade/Estado: brasil
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Ativar Copiar/Colar

Mensagempor Pablo César » 29 Nov 2011 09:59

Entendo a sua preocupação de padronização so seu sistema em manter as mesmas teclas para copiar/colar. Eu não nunca fiz, sempre evitei, talvez porque era a forma mais prática de dar uma mensagem para o usuário que apertando F10 cola. Existe as funções NUMLOW e NUMHIGH que servem para testar as teclas pressionadas e diferenciar como a exemplo do "Ins" e "Ctrl V". Mas eu não conseguí fazer no GET. Talvez modificando o GETSYS.PRG possa a ser implementado a diferenciação com ajuda dessa funções. Veja este exemplo:
CLS
? "Pressione INS duas vezes"
? NUMLOW(SCANKEY())
? NUMHIGH(SCANKEY())

? "Pressione Ctrl V duas vezes"
? NUMLOW(SCANKEY())
? NUMHIGH(SCANKEY())

SET KEY 22 TO COLAR()
cVar1:=Space(30)
@ 12,00 GET cVar1
READ

Function Colar()
nCode:=SCANKEY()
If NUMLOW(nCode)=22 .AND. NUMHIGH(nCode)=47
   cLido:=HB_GTINFO( HB_GTI_CLIPBOARDDATA)
   KEYBOARD cLido
Else
   // faz o insert
Endif
INKEY(0)
Return Nil
O problema que precisa pressionar duas vezes. Mas tá aí a dica.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 150 vezes

Ativar Copiar/Colar

Mensagempor lucimauro » 14 Jan 2013 08:50

Bom dia ;

Nao consigo encontrar a funcao scankey()
Alguem pode me ajudar

Desde ja obrigado.
lucimauro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 338
Data de registro: 21 Set 2004 21:02
Cidade/Estado: Sobral-CE
Curtiu: 1 vez
Mens.Curtidas: 5 vezes

Ativar Copiar/Colar

Mensagempor Pablo César » 14 Jan 2013 14:55

clipsis escreveu:Como posso diferenciar a tecla INS de CTRL+V, já que no INKEY.CH elas aparecem com o mesmo código?
Alterando o GetSys.prg, pode ser diferenciada o valor 22 que serve tanto para o INS como para CTRL-V, adicione esta função:

#include "hbgtinfo.ch"

Function IsKeyCtrl()
Local nBits := hb_gtinfo( HB_GTI_KBDSHIFTS )

Return nBits == hb_bitor( nBits, HB_GTI_KBD_CTRL )


lucimauro escreveu:Nao consigo encontrar a funcao scankey()
De fato não existe esta função na HBCT, mas pode diferenciar a teclas com valor 22 entre Ctrl-V e Insert, através da função acima. Fiz este exemplo sem necessidade de alterar o GetSys e funciona, porém não consegui uma solução para ligar/desligar o led do INSERT no teclado:

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

REQUEST HB_GT_WIN_DEFAULT

Function Main()
SetMode(25,80)
Set Key 22 To Colar

// Cola um texto no ClipBoard
HB_GTINFO( HB_GTI_CLIPBOARDDATA, "Clipper On Line" )

Cls
cGet:=Space(80)
@ 12,00 Get cGet
Read
Return Nil

Function Colar()
If Lastkey()=22
   If IsKeyCtrl()
      KeyBoard ClipBoardPaste()
   Else
      If lInsert
         ReadInsert(.F.)
       KSETINS(.F.)
     Else
       ReadInsert(.T.)
       KSETINS(.T.)
     Endif
   Endif
   Endif
Endif
Return Nil

Function IsKeyCtrl()
local nBits := hb_gtinfo( HB_GTI_KBDSHIFTS )
return nBits == hb_bitor( nBits, HB_GTI_KBD_CTRL )

Function ClipBoardPaste()
If IsKeyCtrl()
   Return hb_gtinfo( HB_GTI_CLIPBOARDPASTE )
Endif
Return ""
Mas com certeza tem jeito de alternar o INSERT através de função em código C.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 150 vezes

Ativar Copiar/Colar

Mensagempor clodoaldosmt » 22 Out 2013 00:03

Caro amigo!

Eu uso a GTWVW com um GETSYS modificado e faço assim:

#include "inkey.ch"            // constantes de codigos das teclas
Function Main
   SET KEY K_CTRL_C  TO Ctrl_c
   SET KEY K_CTRL_V  TO Ctrl_v   
   Return

Function Ctrl_c
   Return WVW_SetClipboard( Alltrim(get:buffer) )

Function Ctrl_v
   Keyboard StrTran( WVW_GetClipboard(), ';', ',')
   Return
At. Clodoaldo Monteiro - THE-PI
clodoaldosmt
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 5
Data de registro: 17 Fev 2007 20:02
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot], JoséQuintas, Ranier e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro