Botão em programa console xharbour

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

Moderador: Moderadores

lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Botão em programa console xharbour

Mensagem por lugab »

Olá, pessoal...

Pensei em fazer algo, no meu executável console (xharbour + bcc55 + Visual Lib) e não sei se é possível.
Minha idéia é colocar um botão, uma figura ou qualquer outra solução em algum lugar livre da tela de digitação
de dados, e aí, qdo o usuário clicasse em cima eu executaria um dbedit() ou tbrowse() de um dbf qualquer,
mas sem afetar o GET/READ atual do usuário..

Alguém já fez algo parecido e pode compartilhar o trecho do fonte ?

Grato
lugab
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Botão em programa console xharbour

Mensagem por JoséQuintas »

Moleza... depois de criar rotinas.... rs

- O acionamento pelo SET KEY e determinada tecla

- Uma rotina de detecção do mouse, pra executar determinada rotina conforme a posição do clique
- Embutir essa rotina, ou chamada dela, na getsys
A partir daí, só definir coordenadas e ação

Se não entendeu...
o retângulo a ser clicado ter quatro coordenadas: linha, coluna, linha, coluna
e vai trocar isso por uma tecla.
Então é um array com isso { linha, coluna, linha, coluna, tecla }

No clique, vai analisar as coordenadas e trocar pela tecla.
O restante, o SET KEY normal vai fazer.

E se fosse Harbour e GTWVG, poderia ser diretamente um botão mesmo.

Talvez dê pra fazer tudo pelo SET KEY, se for possivel direcionar o clique do mouse com SET KEY.
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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Botão em programa console xharbour

Mensagem por alxsts »

Olá!

Creio que seja mais fácil usar algo nativo da linguagem.

Use o @...GET PUSHBUTTON. Dá até para integrar com o @...GET TBROWSE. Isso épossível desde o Clipper 5.3 e tem exemplos nestes links.
[]´s
Alexandre Santos (AlxSts)
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Botão em programa console xharbour

Mensagem por lugab »

Obrigado, Alexandre...
A solução "pushbotton" não me atende, pq ela interfere nos outros "get/read" ativos.
Ela própria é ativada através de um "get", veja o exemplo do seu link:

Código: Selecionar todos

@ 5, 20 GET lCancel PUSHBUTTON ;
                CAPTION "&Cancel"
                STATE { || ReadKill( .T. ) }
Obrigado, Quintas
O caminho é esse mesmo q vc postou, eu só não tenho 1/10 do seu "know how" pra ser capaz de desenvolver
um fonte que faça isso...

Vou esperar, pra ver se alguém tem um fontezinho pra eu piratear..
lugab
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Botão em programa console xharbour

Mensagem por acelconsultoria »

Boa noite, lugab

Se você já usa a Visual Lib, tem uma função que faz essa associação de uma determinada coordenada da tela com uma tecla e com o mouse. Na demo da Visual Lib, lá do clipper, tem o exemplo disso.

Código: Selecionar todos

Set Key K_F1 To Minha_Funcao()
SetKeyMouse( K_F1,  { 24, 24, 00, 07 } )  // Associa a tecla F1 às coordenadas 
Aí, toda vez que teclar F1 ou clicar com o mouse na coordenada, o programa chama a função.
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Botão em programa console xharbour

Mensagem por Vlademiro »

Ative o suporte ao mouse no seu aplicativo

Código: Selecionar todos


 SET EVENTMASK TO INKEY_ALL // Mouse
   SETKEY( K_MWFORWARD, {|| HB_KEYPUT(K_SH_TAB)})
   SETKEY( K_MWBACKWARD, {|| HB_KEYPUT(K_TAB)})
   MDblClk( 167 ) // Espera pouco pelo duplo clique

Para "desenhar o botão" mude a cor de fundo da tela. É bom armazenar as coordenadas e cores em um arquivo CH.

Código: Selecionar todos

 @ BUTTON_PREVIOUS_ROW, BUTTON_PREVIOUS_COL;
      SAY BUTTON_PREVIOUS_LABEL COLOR COLOR_BUTTON


Dentro da função (chamada por setkey) use as funçoes MCOL() e MROW() para determinar se a linha e a coluna do ponteiro do mouse estão entre as coordenadas do seu botão. Mais ou menos assim

Código: Selecionar todos

 IF MROW() >= (nTop) .AND. MROW() <= (nBottom)
e por aí vai.

Agora foi que notei que vc usa xharbour. Eu fiz em harbour dessa forma que descrevi e funciona perfeitamente. A diferença é que não uso setkey, eu coloquei botões automaticamente dentro do getlist.prg, assim todo get eles aparecem.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Botão em programa console xharbour

Mensagem por lugab »

Obrigado, Maickon
Funcionou... Só falta colocar alguma coisa, tipo um botão ou um BMP na coordenda, pra não ficar uma área
sem nenhuma indicação...

Obrigado, Vlademiro
Faltou definir "BUTTON_PREVIOUS_LABEL"
lugab
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Botão em programa console xharbour

Mensagem por acelconsultoria »

Lugab,

Que bom que deu certo.

Eu lembro que, com a própria Visual Lib, eu desenhava uns botões de improviso com a função "Frame". Mas no Harbour, sem os caracteres especiais da fonte TTF da Visual Lib, acho que não deve ficar bom.

Maickon Sato
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Responder