Ativar Copiar/Colar
Moderador: Moderadores
Ativar Copiar/Colar
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
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
Harbour 3.0/Mingw
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ativar Copiar/Colar
Quer dizer executar funções apenas entra no programa ? Antes de entrar, clicando no atalho ? Não entendí.Existe alguma maneira de ativar a opção Copiar/Colar no menu que se abre quando se clica no ícone da janela do programa
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.Gerei o executável ma apenas aparece Mark and Copy porém necessito liberar para o cliente colar e não estou conseguindo...
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:
Código: Selecionar todos
#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 ENDDUMPEu ja utilizei Hb_GtInfo( HB_GTI_CLIPBOARDDATA, cTexto ) para inserir texto na área de transferência.
Eis outro código exemplo:
Código: Selecionar todos
#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 NILCódigo: Selecionar todos
..//..
SET KEY -9 TO COLAR()
@ ... GET cVar
READ
..//..
FUNCTION COLAR()
cLido:=HB_GTINFO( HB_GTI_CLIPBOARDDATA)
KEYBOARD cLido
RETURN NILUm 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.
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.
Ativar Copiar/Colar
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
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
Harbour 3.0/Mingw
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ativar Copiar/Colar
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:
O problema que precisa pressionar duas vezes. Mas tá aí a dica.
Código: Selecionar todos
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 NilUm 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.
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.
Ativar Copiar/Colar
Bom dia ;
Nao consigo encontrar a funcao scankey()
Alguem pode me ajudar
Desde ja obrigado.
Nao consigo encontrar a funcao scankey()
Alguem pode me ajudar
Desde ja obrigado.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ativar Copiar/Colar
Alterando o GetSys.prg, pode ser diferenciada o valor 22 que serve tanto para o INS como para CTRL-V, adicione esta função:clipsis escreveu:Como posso diferenciar a tecla INS de CTRL+V, já que no INKEY.CH elas aparecem com o mesmo código?
Código: Selecionar todos
#include "hbgtinfo.ch"
Function IsKeyCtrl()
Local nBits := hb_gtinfo( HB_GTI_KBDSHIFTS )
Return nBits == hb_bitor( nBits, HB_GTI_KBD_CTRL )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:lucimauro escreveu:Nao consigo encontrar a funcao scankey()
Código: Selecionar todos
#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 ""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.
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.
-
clodoaldosmt
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 17 Fev 2007 21:02
Ativar Copiar/Colar
Caro amigo!
Eu uso a GTWVW com um GETSYS modificado e faço assim:
Eu uso a GTWVW com um GETSYS modificado e faço assim:
Código: Selecionar todos
#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

