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
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.



