Clipper On Line • Ver Tópico - Alguém tem um exemplo de Harbour modo texto com mouse?

Alguém tem um exemplo de Harbour modo texto com mouse?

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

Moderador: Moderadores

 

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor codestudent » 22 Jun 2014 17:35

Olá, pessoal!

Tenho aqui um sistema feito em "clipper tradicional" (sem mouse) que estou adaptando para o harbour no modo texto, mesmo. Uso menus, tbrowses, gets e alerts. Como posso adaptá-lo para usar o mouse? Alguém tem algum exemplo de como fazer isso?

Se alguém puder postar um exemplo assim no fórum ficaria muito grato!
Harbour 3.0 + DBF/NTX + gtwvt
Avatar de usuário

codestudent
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 10 Jun 2014 14:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 22 Jun 2014 21:02

Na parte normal do Harbour basta isto:

   SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE ) // + HB_INKEY_GTEVENT )


No tbrowse e rotinas próprias, vai ter que tratar os eventos de mouse no retorno de Inkey()

Explicação: isso faz o mouse "funcionar".
As rotinas do Harbour como PROMPT, GET, já tem tratamento de mouse.
Nas suas rotinas, após pegar o Inkey(), é testar se a tecla é do mouse - veja em inkey.ch, são códigos acima de 1000
Vai usar também o valor de MRow(), MCol() que são as posições do clique do mouse, e verificar que texto tem nessas posições.

Procure criar uma rotina pra fazer essa checagem de posição, que depois vai ser só usar a rotina em tudo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 22 Jun 2014 21:11

Dependendo do estilo dos seus fontes e forma de uso, pode ser que facilite usar os botões da gtwvg, já que basta adicionar o resultado do clique, como um keyboard.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor Maurício Elias » 23 Jun 2014 08:46

Olá, bom dia.
Qual a vantagem de usar a gtwvg ? É uma lib gráfica ? A aplicação continua texto ?
Obrigado.
Abraços.
_______
Maurício
Maurício Elias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 302
Data de registro: 12 Mai 2005 08:48
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor codestudent » 23 Jun 2014 21:00

Não entendi, José Quintas. Você disse:

Na parte normal do Harbour basta isto:

Expandir visualizacaoVer codigo
1 SET( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE ) // + HB_INKEY_GTEVENT )
2


Mas eu tenho de colocar isso como? Devo fazer referência a
#include "inkey.ch"


no ínicio do meu código?
Harbour 3.0 + DBF/NTX + gtwvt
Avatar de usuário

codestudent
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 10 Jun 2014 14:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 23 Jun 2014 22:41

Exato. basta uma vez no programa principal.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor codestudent » 23 Jun 2014 23:13

Seguindo as dicas de todos vocês amigos aqui do fórum, consegui colocar o mouse em modo texto funcionando junto com os menus, os tbrowses, os alerts e os gets de meu programa. E estou QUASE feliz com isso! Digo quase porque, nos menus (quando tento chamar os submenus) e nos alertas (que criei, usando uma função baseada em menus), tenho de clicar duas vezes para o evento do mouse funcionar.

Sei que nada neste mundo é perfeito mas, quando eu passar o sistema para os usuários eles vão encher meu saco porque terão de clicar duas vezes...

Os fontes estão no arquivo compactado anexo, junto com um executável já compilado e os arquivos de compilação. Alguém pode dar uma olhada e me dizer se tem como corrigir isso?
Anexos
FontesComMouse.zip
(499.5 KiB) Baixado 535 vezes
Harbour 3.0 + DBF/NTX + gtwvt
Avatar de usuário

codestudent
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 10 Jun 2014 14:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 24 Jun 2014 05:50

Fiz um teste aqui adicionando a função que uso.
Testei usando harbour 3.2 + gtwvg (apenas porque a uso e pra ver se ficaria igual)

Alteração nos fontes:
#include "jpa.ch", criar variável usada em MENU TO, e não entendi mas precisei criar GetList := {} no cardapio, pra evitar erro de variável não existe GetList.

Arquivos a mais:
jpa.ch
ze_prompt.prg

No Harbour 3.2, default mingw, é só definir path=c:\harbour\bin
E pra compilar hbmk2 escolar10.hbp
O EXE está menor que o anterior, mas porque é gerado compactado.
era 1.084.928, e agora ficou com 610.304

Para o Harbour 3.2, o escolar10.hbp ficou assim:

escolar10.prg
criabase.prg
cardapio.prg
alunos.prg
relalufic.prg
funcoes.prg
ze_prompt.prg
-oescolar10

xhb.hbc
gtwvg.hbc

-compr
-strip
Anexos
escolar10.zip
(604.77 KiB) Baixado 533 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor codestudent » 24 Jun 2014 09:53

Valeu mesmo, José Quintas!

Você adicionou o arquivo de cabeçalho "jpa.ch" e o arquivo "ze_prompt.prg", deu uma ajeitada no meu código (declarando algumas variáveis que eu não havia declarado...) e ficou uma beleza o resultado final! Agora os usuários clicarão apenas uma vez e o menu vai responder imediatamente!

Agora, se alguém do fórum quiser, pode aproveitar nosso código!
Harbour 3.0 + DBF/NTX + gtwvt
Avatar de usuário

codestudent
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 6
Data de registro: 10 Jun 2014 14:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor rubens » 07 Nov 2014 17:15

Caro José...

O que eu preciso a mais no código abaixo para compilar para o sistema ficar em tecla cheia...

************************************
#include "SET.CH"
#include "CLUBE.CH"
#include "DIRECTRY.CH"
#include "INKEY.CH" 
#include "hbgtinfo.ch"

#DEFINE CRLF CHR(13)+CHR(10)

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WIN_DEFAULT

FUNCTION MAIN( cINSTAL )

HB_GtInfo( HB_GTI_FONTNAME, "Lucida Console" )  // fonte
hb_gtInfo( HB_GTI_FONTWIDTH, 10 )
hb_gtInfo( HB_GTI_FONTSIZE , 20 )
hb_gtInfo( HB_GTI_FONTQUALITY , .T. )
HB_GtInfo( HB_GTI_WINTITLE, "DATASAC" ) // titulo da tela
HB_GtInfo( HB_GTI_MAXIMIZED, .F. )
HB_GtInfo( HB_GTI_ISFULLSCREEN, .T. )
hb_gtInfo( HB_GTI_ALTENTER, .T. )
HB_GtInfo( HB_GTI_ISFULLSCREEN, .T. )


O Título muda mas não aceita pressionar alt+enter para ir para tela cheia.. tô compilando do hmg3.0.35 porque o meu harbour tá baleado aqui nesta máquina e não posso formatar agora..
Descompactei o projeto e compilei pela HMG3.0.35 e compilou normal... já executa em tela cheia, funciona o mouse.
Mas o meu sistema não funciona... tá faltando alguma instrução aí?

Retirei os comandos hb_gtinfo do escolar10.prg

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 11 Nov 2014 22:01

Agora que vi esta pergunta.

Lembro de ter visto postagens sobre isso no harbour-users, e talvez tenham modificado.

Já na GTWVG não existe tela cheia. Mas dá pra abrir no tamanho máximo, e também dá pra salvar como o usuário deixou, pra quando rodar o programa novamente ele ficar igual antes.

Sinceramente....
Acho que não tem vantagem abrir em console em tela cheia.
O motivo é simples: pra funcionar em tela cheia no console, somente se for tamanho padrão, e isso limita suas telas a 24x80, 28x80 e 33x80
E usar outros tamanhos de tela ajudam em muita coisa, por exemplo 33 x 132.
Dá pra organizar melhor as informações na tela.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor microvolution » 23 Dez 2015 19:27

OPA...
também concordava que não dava pra trabalhar em tela cheia... pois consegui migrar em jan/2015.
Agora que estamos no final de 2015, acho que consegui uma alternativa que tanto dá pra usar a tela maximizada (janela) quanto totalmente preenchida (tela cheia).
Pra maximizar (janela) faço o seguinte:
wvt_Maximize()

Para o máximo da tela (tipo o MS-DOS, só que gráfico), faço o seguinte:
HB_GtInfo( HB_GTI_ALTENTER, .t. )

Para os dois códigos acima funcionarem, precisam de 3 argumentos. Um dentro do arquivo e outros na compilação:
#include "hbgtinfo.ch'

Na compilação, incluir 2 LIBs:
GTWVG.HBC
GTWVW.HBC


Inclusive fiz uma função em que o usuário ao logar pela primeira vez no sistema, é apresentada uma opção em que ele escolhe, tipo:
TELA MAXIMIZADA SIM/NÃO?
ALT-ENTER SIM/NÃO?
TELA NORMAL (RESTAURADA) SIM/NÃO?
FECHAR ATRAVÉS DO X DA JANELA SIM/NÃO?

Dentre outras ações, mas, isso não é o principal deste tópico que já está fugindo do assunto "Alguém tem um exemplo de Harbour modo texto com mouse?"

Então, voltando ao tema central deste tópico, o prezado professor JQuintas tem nos ajudado e muito, inclusive pesquisando nos grupos oficials do Viktor, além de - se não me engano, ser o mantenedor do http://www.harbourdoc.com.br, que cheguei a pensar que era do Viktor.

Ele já postou exemplos, magníficos, mas, incluindo o AllInOn e o Escola10, mas, infelizmente não consegui compreender como funciona o MRow() e MCol().
Alguém aqui (não esquecendo dele também) sabe uma coisa funcional para capturar o click do mouse nos menus e sub-menus em modo console usando a GTWVG?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor Jairo Maia » 24 Dez 2015 12:47

Olá Microvolution,

Não sei se a idéia é saber em qual botão criado com WVG foi clicado. Se for, esse exemplo não é a melhor opção. Mas para capturar a posição do mouse e a posição dos cliques, veja esse exemplo:
/*
  Compilar usando: Hbmk2 exemplo.prg -lxhb
*/
Function Main()

Local cAlgo := Space( 30 )
Public nTask, nIdle

Clear Screen

nTask := HB_BackGroundAdd( {|| CaptaMouse() } )
nIdle := HB_IdleAdd( {|| HB_BackGroundRun( nTask ) } )

Inkey(0)

HB_BackGroundDel( nTask )  // coloque antes de sair do sistema
HB_IdleDel( nIdle )

Clear Screen

Return Nil

FuncTion CaptaMouse()

  @ 2,2 say "Linha do Mouse...: " + Hb_NToS( MRow() )
  @ 4,2 say "Coluna do Mouse..: " + Hb_NToS( MCol() )
 
  If MLeftDown()
   @ 7,2 say "Botao ESQUERDO pressionado na Linha " + Hb_NToS( MRow() ) + ", coluna " + Hb_NToS( MCol() )
  ElseIf MRightDown()
   @ 7,2 say "Botao DIREITO pressionado na Linha  " + Hb_NToS( MRow() ) + ", coluna " + Hb_NToS( MCol() )
  EndIf
 
Return Nil
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor JoséQuintas » 24 Dez 2015 18:30

Se o menu é estilo console, mesmo em GTWVG, o jeito é tradicional:

Usando Inkey() , pode-se detectar o click do mouse.
Usando MRow() e MCol() se verificam linha e coluna do mouse.
Fora isso, é ter a posição da área clicada, e comparar com MRow(), MCol()

Exemplo:
@ 1, 0 SAY "TESTE PARA CLICK"
DO WHILE nKey != K_ESC
   nKey := Inkey(0)
   IF nKey == K_LBUTTONDOWN
     IF MRow() == 1 .AND. MCOL() >= 9 .AND> MCOL() <= 15
        @ 15, 0 SAY "Foi cliclado
    ENDIF
   ENDIF
ENDDO


O texto "TESTE PARA CLICK" ocupa a linha 1, da coluna 0 até a coluna 15
Então, ao ser clicado o mouse, é testar se o click foi nessa região, linha 1, e colunas entre 0 e 15.

Lógico... se for fazer isso pra cada posição é muito fonte.
Melhor criar rotinas pra isso, por exemplo, um array contendo as coordenadas.
oPosicoes := { ;
                  { 1, 0, 15, "A" } } // linha, coluna inicial, coluna final, keyboard pra simular


Depois na hora de analisar, comparar com os valores do array

IF nKey == K_LBUTTONDOWN
   FOR nCont = 1 TO Len( oPosicoes )
      IF MRow() == oPosicoes[ nCont, 1 ] .AND. MCol() >= oPosicoes[ nCont, 2 ] .AND. MCOL() <= oPosicoes[ nCont, 3 ]
         KEYBOARD oPosicoes[ nCont, 4 ]
      ENDIF
   NEXT
ENDIF


É só um exemplo, fazendo isso na rotina que monta o visual do menu, a própria rotina pode montar o array de coordenadas.
Uso isso no menu que postei, inclusive ele vai passando as coordenadas de um submenu para o outro, que é justamente o que faz funcionar o click em qualquer lugar do menu.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alguém tem um exemplo de Harbour modo texto com mouse?

Mensagempor cjp » 09 Jun 2016 23:57

Meus amigos,

Só agora estou incluindo mouse em meus sistemas. Já havia tentado no passado, mas abandonei porque tive alguns problemas.

Mas agora estou precisando. Achei esta solução muito simples e prática.

Por enquanto (ainda terei que testar melhor), tenho apenas um problema: como abandonar um get com um mouse? Ou, em outros termos: como simular o pressionamento da tecla ESC com o mouse?

Explico a necessidade: preciso acessar o meu sistema pelo TeamViewer, a partir do meu celular. Só que no TV não tem as setas e o Enter. Então, eu preciso que o funcionamento se dê todo com o mouse.

Alguém poderia me ajudar?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot] e 13 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
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro