estava dando uma olhada nos exemplos que colocaste acima, quem sabe podes me orientar com alguns problemas que tenho, estou migrando o programa da minha pizzaria e como sou mais que novato em HWGUI, estou topando com algumas dificuldades.
Quando liga o cliente (tele-entrega) a tela fica esperando para ser digitado o numero do telefone, com a função Check_cli() no get oFone e a variavel a_dados[1,1], quando localiza o cliente pega os dados do nome, endereço, bairro e ramal e o cursor tem que ficar com o foco no endereço, para poder alterar se for o caso, porem
NÃO poderia mais alterar o telefone, com os exemplos que colocaste tentei colocar oFone:DISABLE mas não sei bem aonde, na função Check_cli da erro.
Código: Selecionar todos
#include "inkey.ch"
#include "windows.ch"
#include "guilib.ch"
#include "Cores.ch"
////////////////////////////////////////////////////////////////////////////////
// tele0031.prg - inclusao de pedidos //
// Vesao HWGUI //
// programador : Daniel Halon //
// Migração: 14/10/2007 //
////////////////////////////////////////////////////////////////////////////////
Function ped_inc( lComple, lInterna ) // lComple= complemento, lInterna=venda interna,viene de tele0030 prompt
Local m_cont, m_lastcolor, m_init, getlist := {}
Local p_comple
Local a_reserva := {}
Local nValor := 0
Local lContinua := FALSE
Local Hora_ini
Local oPedidos, oPanel, oFontBtn, oBoton1, oBoton2, oInclusao
Local oIcon := HIcon():AddFile("image\Icons\Pedidos.ico")
Local oBmp := HBitmap():AddFile("Image\Papel.bmp")
Local cImageDir := "image\"
Private a_dados := {}, a_zzcod := {}
private oR3,oR4
Private oFone, oRamal, oNome, oEnde, oBairro
Private oUlt_ped
Private vFone := Space(9)
Setkey( K_F3,'' ) //Desativa F3
IF lComple
p_Comple := ped_con2(.t.,.t.)
IF empty(p_comple)
return
ENDIF
nValor := p_comple[3]
ENDIF
IF EMPTY(p_comple)
lComple := .f.
ENDIF
IF EMPTY(lInterna)
lInterna := .f.
ENDIF
//
// Sabores de pizzas
//
select tele0030
dbsetorder(2)
dbgotop()
do while !eof()
if a_tipo__30 == 'P'
for m_cont := 1 to len(a_zzdat)
if !empty(a_zzdat[m_cont,2])
aadd(a_zzcod,{alltrim(a_cod___30)+a_zzdat[m_cont,2], round(a_valor_30*a_zzdat[m_cont,3],1), a_desc__30})
endif
next
endif
dbskip()
enddo
setkey(K_F3,{|| info_cli() })
setkey(K_F6,{|| ped_con(a_dados[1,7]) })
set cursor on
save screen to ped_inc
m_init := .t.
PREPARE FONT oFontPed NAME "MS Sans Serif" WIDTH 0 HEIGHT -12
PREPARE FONT oFontBtn NAME "LUCIDA CONSOLE" WIDTH 0 HEIGHT -09
PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -09 WEIGHT 600
//
// inicio do loop do pedido
//
DO WHILE TRUE
INIT DIALOG oPedidos CLIPPER NOEXIT TITLE "Inclusão de pedidos" + space(75) +;
'Data:' + space(1) + dtoc( tele0050->a_dtmov_50 ) + space(3) +;
'Turno:' + space(1) + tele0050->a_turno_50 + space(3) + 'Aten.:'+;
space(1) + Substr(cNom, 1, 12);
FONT oFontPed ;
AT 00, 00 ;
SIZE GetDesktopWidth(), GetDesktopHeight() ;
//ON INIT {||SetFocus(oPedidos:getlist[1]:handle)};
ICON oIcon
@ 00,00 PANEL oPanel SIZE getdesktopwidth(),53
@ 00,02,vWIDTH,vHEIGHT-540 RECT oR3 of oPedidos PRESS RECT_STYLE 3
@ 10,65,vWIDTH-10,vHEIGHT-35 RECT oR4 of oPedidos PRESS RECT_STYLE 3
@ 4,5 OWNERBUTTON oBoton1 OF oPanel ON CLICK {||ShellExecute('Calc')} ;
SIZE 38,40 TEXT "Calc." FONT oFontBtn COORDINATES 0,27,0,0 ;
BITMAP cImageDir+"Calc.bmp" TRANSPARENT COLOR Vcolor("C060C0") COORDINATES 0,4,0,0 TOOLTIP "Calculadora"
@ 47,5 OWNERBUTTON oBoton2 OF oPanel ID 109 ON CLICK {||EndDialog()} ;
SIZE 38,40 ;
TEXT "Sair" FONT oFontBtn COORDINATES 0,27,0,0 ;
BITMAP cImageDir+"Door.bmp" COORDINATES 0,4,0,0 TOOLTIP "Voltar" //DISABLED
a_reserva := {}
if m_init
//
// init do array
//
a_dados := {}
aadd( a_dados, { space(9), space(4),space(30),space(50),;
space(25),'',0,space(6),space(1), 0,;
space(14), space(44), space(3), space(46),;
space(1), 0, 0, space(4), space(19), space(5),; // 1...Dados do cliente
space(4), space(8), space(30), space(15), 0,;
space(2), space(2), space(4), space(15),;
0, .f., space(14),space(3),space(10),space(15), space(7),.f.} )
aadd(a_dados,{})
for m_cont := 1 to 9
aadd(a_dados[2],{space(5),0,0,space(30),space(8)}) // 2...Itens de venda
next
aadd(a_dados,{0,0,0,space(50)}) // 3...Desconto
aadd(a_dados,{space(24),space(24),space(5),space(24) }) // 4...Observacoes
aadd(a_dados,{space(2),space(10),.f.}) // 5...Forma pgto
aadd(a_dados,{0,0,0,0,0}) // 6...Valores
endif
//
// dados do cliente
//
IF lComple // se e complemento...
a_dados[1,1] := substr( p_Comple[2], 01, 9 )
a_dados[1,2] := substr( p_Comple[2], 10, 4 )
a_dados[1,3] := p_Comple[9]
IF p_comple[8] > 0
a_dados[3,3] := p_Comple[8] + p_comple[3] //Valor pedido anterior + troco
ENDIF
a_dados[ 4,3 ] := p_Comple[5]
a_dados[ 5,1 ] := p_Comple[4]
a_dados[ 1,10 ] := p_Comple[10]
check_cliente(lComple, p_Comple, a_dados)
/*
@10,12 say a_dados[1,1] picture '9999-9999'
//@01,28 say a_dados[1,2] picture '9999'
//@03,43 say a_dados[1,15] //casa
@05,12 say a_dados[1,11]
@05,70 say a_dados[1,10] picture '@E999999' // Nro Conta convenio
@06,12 say a_dados[1,12]
@06,34 say a_dados[1,18] //Nro do ramal do cliente
@07,12 say a_dados[1,14] picture '@!'
@12,72 say a_dados[4,3] picture '99:99'
@22,54 say a_dados[5,1] color '7/0*'
*/
ELSE
// Quando nao e complemento...
SETKEY( K_F1, {|| Lembrete( @a_dados ) } )
SETKEY(K_CTRL_F1, {|| Rel_sicredi(&( readvar() )) } )
SETKEY(K_CTRL_F2, {|| Cheque_pre( a_dados) } )
SETKEY(K_ALT_F1, {|| Participa( &( readvar() ) ) } )
@ 16,68 GROUPBOX "Dados do Ciente" SIZE 495,80
@ 21,085 SAY 'Telefone:' Size 70,20 FONT oFontSay STYLE WS_BORDER COLOR AZUL BACKCOLOR 14274728 //SS_CENTER
@ 93,085 Get oFone Var a_dados[1,1] size 70,20 Font oFontsay Picture '9999-9999' STYLE ES_AUTOHSCROLL COLOR AMARELO BACKCOLOR AZUL Valid {|| check_cliente(lComple, p_Comple, a_dados) }
@165,085 SAY 'Nome:' Size 70,20 FONT oFontSay STYLE WS_BORDER COLOR AZUL BACKCOLOR 14274728 //SS_CENTER
@237,085 Get oNome Var a_dados[1,3] size 269,20 FONT oFontSay Picture Replicate('!',30) STYLE ES_AUTOHSCROLL COLOR AMARELO BACKCOLOR AZUL //{||SetFocus(oNome:Handle)}//Valid !empty(vFone) //.and. Pick_ende( a_dados )
@021,105 SAY 'Endereço:' Size 70,20 FONT oFontSay STYLE WS_BORDER COLOR AZUL BACKCOLOR 14274728 //SS_CENTER
@093,105 Get oEnde Var a_dados[1,4] size 413,20 Font oFontsay Picture Replicate('!',50) STYLE ES_AUTOHSCROLL COLOR AMARELO BACKCOLOR AZUL//Valid !empty(vFone) //.and. Pick_ende( a_dados )
@ 21,125 SAY 'Bairro: ' Size 70,20 FONT oFontSay STYLE WS_BORDER COLOR AZUL BACKCOLOR 14274728 //SS_CENTER
@093,125 Get oBairro Var a_dados[1,5] size 207,20 Font oFontsay Picture Replicate('!',25) STYLE ES_AUTOHSCROLL COLOR AMARELO BACKCOLOR AZUL
@300,125 SAY 'Ramal:' Size 70,20 FONT oFontSay STYLE WS_BORDER COLOR AZUL BACKCOLOR 14274728 //SS_CENTER
@373,125 Get oRamal Var a_dados[1,18] size 38,20 Font oFontsay Picture '9999' STYLE ES_AUTOHSCROLL COLOR AMARELO BACKCOLOR AZUL//Valid !empty(vFone) //.and. Pick_ende( a_dados )
IF lastkey() == 27
loop
ENDIF
ACTIVATE DIALOG oPedidos
Enddo
setkey( K_F1, {|| help() } )
setkey(K_F3 , {|| ped_inc( .F. ) } )
//setkey(K_F4,'')
setkey(K_F6,'')
SETKEY(K_CTRL_F1,'')
SETKEY(K_CTRL_F2,'')
setkey(K_ALT_F12, '' )
restore screen from ped_inc
setcolor(m_lastcolor)
return
********************************************************
Static function check_cli(lComple, p_comple, a_dados)
Local m_key
Local n_largo
IF empty(a_dados[1,1]) .or. alltrim(a_dados[1,1]) == '-'
msginfo('Fone vazio')
return .f.
ENDIF
IF lastkey() == 27
Return
ENDIF
IF empty(lComple)
lComple := FALSE
ENDIF
//
// ZERA OS VALORES
//
a_dados[ 6, 4 ] := 0
a_dados[ 1, 7 ] := ctod( '' )
select tele0010
dbsetorder(1)
m_key := a_dados[1,1] + a_dados[1,2]
IF dbseek( m_key, .F. )
IF alltrim( m_key ) # '3358-4700' // Se NAO e Sicredi...
//
// PROMOCAO CLIENTE FIEL
// ZERA OS VALORES
//
IF a_ultped10 < (tele0050->a_dtmov_50 - tele0050->a_diaspr50)
//field->a_acuant10 := a_acumu_10 //zera valor da promocao se mais de n dias
IF tele0010->a_acumu_10 > 0
tele0010->( net_lock(.t.) )
field->a_acumu_10 := 0 //zera valor da promocao se mais de n dias
save screen
explode (10,22,15,46,1,'14/4')
@11,23 say ' ATENCAO ' color '14/4'
@12,23 Say ' Foi ZERADO o Valor ' color '14/4'
@13,23 Say ' acumulado da promocao ' color '14/4'
@14,23 Say ' Ultimo pedido ' + substr(dtoc(tele0010->a_ultped10),1,6) + substr(dtoc(tele0010->a_ultped10),9,2) color '15/4'
inkey(1)
resto screen
tele0010->( dbunlock() )
ENDIF
ENDIF
ENDIF
IF lComple == FALSE // Se nao e complemento...
a_dados[1,03] := a_nome__10 // nome
a_dados[1,04] := a_ende__10 // endereco
a_dados[1,05] := a_bairro10 // bairro
a_dados[1,10] := a_conta_10 // numero de conta convenio
a_dados[1,18] := a_nramal10 // nro do ramal
a_dados[1,29] := a_conve_10 // empresa do convenio
Tele0040->( dbsetorder(1) )
Tele0040->( dbseek(a_dados[1,5]))
// Tele0040->( dbseek(a_dados[1,5]),.t.)
a_dados[1,15] := tele0040->a_casa__40 // Casa
ELSE
a_dados[1,03] := p_comple[9] // nome
a_dados[1,04] := p_comple[7] // endereco
a_dados[1,05] := p_comple[6] // bairro
a_dados[1,10] := p_comple[10] // conta sicredi (convenio banco)
ENDIF
a_dados[1,06] := a_obs___10 // info (memo)
a_dados[1,07] := a_ultnum10 // ultimo pedido
//a_dados[1,08] := a_guia__10 // guia
a_dados[1,30] := a_acumu_10 // valor acumulado promocao
a_dados[6,04] := a_cred__10 // valor do credito
a_dados[3,01] := a_desc__10 // valor do desconto
a_dados[1,11] := a_cpfcgc10 // cgc/cpf
a_dados[1,18] := a_nramal10 // Nro ramal
a_dados[1,12] := a_obsend10 // obs.endereco
//a_dados[1,13] := a_banco_10 // banco
a_dados[1,14] := a_obscli10 // preferencias do cliente
a_dados[1,23] := a_email_10 // e-mail
ENDIF
@237,085 SAY a_dados[1,03] Size 269,20 FONT oFontSay STYLE WS_BORDER COLOR 65535 BACKCOLOR 12190744
@093,105 SAY a_dados[1,04] Size 413,20 FONT oFontSay STYLE WS_BORDER COLOR 65535 BACKCOLOR 12190744
@093,125 SAY a_dados[1,05] size 207,20 Font oFontsay STYLE WS_BORDER COLOR 65535 BACKCOLOR 12190744
@373,125 SAY a_dados[1,18] size 38,20 Font oFontsay STYLE WS_BORDER COLOR 65535 BACKCOLOR 12190744
grava_tela()
SetFocus(oNome:Handle)
Return (.t.)
Um abraço, Dniel..........