Tela em modo console com PushButton estilo FoxPro 2.6

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

Moderador: Moderadores

Avatar do usuário
ale.big
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 06 Ago 2012 08:41
Localização: iguatu/Ce

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por ale.big »

Boa Noite a todos.
Estou criando uma tela em modo console com botoes onde eu possa exibir a tela com o ultimo registro e ao clicar em determinado botão efetuar a acao conforme definido , montei o seguinte exemplo abaixo:

Código: Selecionar todos

#include "common.ch"
#include "inkey.ch"
#include "box.ch"

FUNCTION Main
	LOCAL GetList := {}
	LOCAL cBotaoNovo := .t.
	LOCAL cBotaoGravar := .t.
	LOCAL cBotaoSair := .t.
	LOCAL cLetraBotao := ""
	LOCAL cNome := Space(25)
	LOCAL cEndereco := Space(25)
	LOCAL nTelefone := Space(15)
        LOCAL lNovo := .f.
  
  Private cCordoBotao:="GR+/B*,GR+/G,R+/N,GR+/R*"
  Private cCordoGet:=(","+"W+/R"+",,,"+"N/B")
  ConfiguraAmbiente()
	CLS
  set key 103 to SetaBotao('G')
  set key 115 to SetaBotao('S')
  set key 110 to SetaBotao('N')

  Do While .T.

    @ 2, 8, 12, 47 BOX B_DOUBLE + Space(1) Color "N/BG"
    HB_Shadow(2, 8, 12, 47)
    SetColor(cCordoGet)
    @ 4, 10 SAY "Nome" + Space(10 - Len("Nome")) Color "W+/BG" GET cNome PICTURE "@A" When lNovo
    @ 6, 10 SAY "Endereco" + Space(10 - Len("Endereco")) Color "W+/BG" GET cEndereco PICTURE "@A" When lNovo
    @ 8, 10 SAY "Telefone" + Space(10 - Len("Telefone")) Color "W+/BG" GET nTelefone PICTURE "###-###-###" when lNovo

    @ 10, 11 GET cBotaoNovo PushButton CAPTION " &Novo " Color cCordoBotao STYLE "[]" STATE {|| SetaBotao('N') }
    @ 10, 23 GET cBotaoGravar PushButton CAPTION " &Gravar " Color cCordoBotao STYLE "[]" STATE {|| SetaBotao('G')}
    @ 10, 35 GET cBotaoSair PushButton CAPTION " &Sair " Color cCordoBotao STYLE "[]" STATE {|| SetaBotao('S')}
    
    SET CURSOR ON
    READ
    SET CURSOR OFF
    IF LASTKEY() = K_ESC; RETURN .F.; ENDIF
  Enddo
RETURN NIL

Procedure SetaBotao(cLetraBotao)
  Private cTecla
  cTecla:=Upper(cLetraBotao)
  @ 24,10 say cTecla
  DO CASE
	CASE cTecla == 'G'
	   @ 14, 12 SAY cNome + " " + cEndereco + ", " + cTelefone Color "W/N"
	   WAIT
	   Return	
      CASE cTecla == 'S'
           CLS
	   Keyboard(chr(K_ESC))	
      Case cTecla == 'N'
           lNovo:=.T.
          //Ler os Gets
 ENDCASE
Return

Procedure ConfiguraAmbiente()
  REQUEST SQLRDD
  REQUEST SR_PGS
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_UTF8
  REQUEST HB_CODEPAGE_UTF8EX
  REQUEST HB_GT_WVT_DEFAULT

  HB_CDPSELECT( "UTF8EX")
  HB_LANGSELECT("PT")

  mSetCursor(.T.)

  SETMODE(25,80)

  SET CONFIRM ON
  SET CURSOR OFF
  SET TYPEAHEAD TO 0
  SET INTENSITY ON
  SET SCOREBOARD OFF
  SET DELETED ON
  SET SAFETY OFF
  SET DATE ANSI
  SET ESCAPE ON
  SET CENTURY ON
  SET DELIMITERS TO
  SET EXCLUSIVE OFF
  SET WRAP ON
  SET EPOCH TO 1920
  SET OPTIMIZE ON
  SET MESSAGE TO 24 CENTER
  SET(_SET_DATEFORMAT,"dd/mm/yyyy")
  SET SOFTSEEK ON
  SET AUTOPEN OFF
 
  SetColor("B/N")
  SET EventMask to INKEY_ALL
                                                       
Return
Minhas dúvidas são:
1- No xharbour como atribuir a tecla ao botão, tentei com o set key mas nao obtive sucesso:
2- Ao clicar no botao Novo ou acionar a tecla "N", por exemplo, direcionar o cursor para o primeiro get ( como no foxpro usa-se _curobj=1).
Desde já agradeco as colaboracoes.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por Pablo César »

Primeiramente foi atribuído diferentes teclas do que as normais que o usuário deveria utilizar no preenchimento dos campos. Então foi mudado de G para Alt-G, N para Alt-N e S para Alt-S.

As variáveis cNome, cEndereco, cTelefone e lNovo foram declaradas como Private, o que permite ser enxergado fora da função de edição, pois Local só pode ser enxergado na função principal e você precisa acessar a função SetaBotao que irá ter efeito nas edições e gravação das variáveis no seu banco de dados.

Bem creio que seria isso o que você estaria precisando ? O resto você poderá adaptar para a gravação dos dados no BD e remover o Alert que apenas serve para exemplificar.

Em anexo o código fonte alterado com o seu executável para a sua apreciação e dos outros. Ahhh a compilação foi em Harbour/HMG em modo console.
Anexos
Teste44.rar
(591.51 KiB) Baixado 179 vezes
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.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por lugab »

Pablo César, aceite os nossos parabéns.

Isso sim, foi ajudar alguém..
lugab
Avatar do usuário
ale.big
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 06 Ago 2012 08:41
Localização: iguatu/Ce

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por ale.big »

Muito Obrigado pela resposta Pablo Cesar.
Ja estou implementando a tela.
Pois o ambiente onde vai rodar a aplicacao e um servidor linux (xharbour/postgres) com estacoes com boot remoto via console.
Agora ficou a seguinte duvida, e possivel habilitar e desabilitar o botao em tempo de execucao, como no foxpro com o comando show get cBotaoNovo disable/enable ?
Voce comentou que fez o exemplo em Harbour/HMG, e possivel desenhar as telas, inserir botoes e gerar para o modo console como no foxpro 2.6 ?
Reitero meus agradecimentos.
[]'s
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por Pablo César »

Agora que vi você é novo aqui no fórum. Seja bem vindo então !
ale.big escreveu:Agora ficou a seguinte duvida, e possivel habilitar e desabilitar o botao em tempo de execucao, como no foxpro com o comando show get cBotaoNovo disable/enable ?
Olha eu não tenho experiência alguma com FoxPro. Este exemplo que você postou, descobri por acaso, sabendo que a função PushButton() tem no Harbour pela rtl. Bom que funcionou como você queria. O resto eu apliquei apenas a lógica sobre condições e variáveis do tipo Private que possibilita o acesso e atribuição. Então o que posso te dizer que usei mais uma vez a condição WHEN e a variável lBotoes que é atribuida através da chamada de teclas Alt-M. Veja se isso já resolve. Você pode até mudar a cor dos botões quando estiverem desabilitados (quando lBotoes=.f.).
Voce comentou que fez o exemplo em Harbour/HMG, e possivel desenhar as telas, inserir botoes e gerar para o modo console como no foxpro 2.6 ?
Você pode utilizar a IDE tanto no modo console como gráfico. Desenhar telas em modo console a IDE não faz, sim em modo gráfico.
Anexos
Teste44.rar
(591.99 KiB) Baixado 141 vezes
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 do usuário
ale.big
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 06 Ago 2012 08:41
Localização: iguatu/Ce

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por ale.big »

Bom dia Pablo.
Obrigado pelos esclarecimentos.
Sim sou novo aqui no forum e tambem com o xharbour. Apesar de conhecer outras linguagens.
O que tenho implementado foi seguindo o Reference Guide da linguagem.
Como falei antes devido a particularidade do projeto (console/linux) sinto falta de uma IDE desenvolvimento a do FoxPro 2.6.
Voce conhece alguma lib (opensource ou comercial) para linux que permita agilizar o desenvolvimento?
[]'s
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por Pablo César »

Desculpe não desenvolvi nada ainda em Linux e não conheço IDE para esse ambiente.
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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tela em modo console com PushButton estilo FoxPro 2.6

Mensagem por JoséQuintas »

Até havia esquecido que no 5.3 a getsys incluia botões.
Anos atrás fiz uma gambiarra pra funcionar TABs e botões com Clipper 5.2.
Mas foi só de teste, nunca cheguei a colocar em prática.
De lá pra cá só ajustei pra harbour, mas ainda sem uso.
Ia postar compilado, mas o tamanho não permite.
Anexos
TABCLIP.zip
tabs com clipper
(11.7 KiB) Baixado 178 vezes
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/
Responder