Get no mesmo DIALOG
Moderador: Moderadores
Get no mesmo DIALOG
Bom dia amigos !
Amigos estou com o seguinte problema ...
Quando abro uma janela DIALOG incluo nela alguns botões
wonerbotton "novo,alterar,salvar,excluir" só que quando aciono o botão "novo " seria para chamar a função de incluir e inserir os gets na mesma janela DIALOG , mas como fazer isso e manter os botões ativos ou seja , como ficar dentro da função de cadastro e ao mesmo tempo poder usar os botões para "salvar" ??
:'(
Amigos estou com o seguinte problema ...
Quando abro uma janela DIALOG incluo nela alguns botões
wonerbotton "novo,alterar,salvar,excluir" só que quando aciono o botão "novo " seria para chamar a função de incluir e inserir os gets na mesma janela DIALOG , mas como fazer isso e manter os botões ativos ou seja , como ficar dentro da função de cadastro e ao mesmo tempo poder usar os botões para "salvar" ??
:'(
C:\Xharbour\Xdev\Fw\VSX
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Já olhou os exemplos no samples da hwgui ?
testget1.prg testget2.prg etc ?
Em modo visual não é necessário ficar colocando esses botões.
Eu uso 2 botões.
Gravar , Apagar
Porque eu seto um flag.
Ex.
If lIncluir
append blank...
else
rlock
endi
replace ....
Agora tem mais um botão que se o usuário pressiona eu sei que ele quer incluir. que é o que ativa o estado de lIncluir := .t.
ok ?
Saudações
Itamar M. Lins Jr.
testget1.prg testget2.prg etc ?
Em modo visual não é necessário ficar colocando esses botões.
Eu uso 2 botões.
Gravar , Apagar
Porque eu seto um flag.
Ex.
If lIncluir
append blank...
else
rlock
endi
replace ....
Agora tem mais um botão que se o usuário pressiona eu sei que ele quer incluir. que é o que ativa o estado de lIncluir := .t.
ok ?
Saudações
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Na mesma janela.ederxc escreveu:Ok, mas como voce chama a função de incluir com seus gets , na mesma janela dialog to vendo que não da mesmo...
E com browse junto, tudo na mesma janela.
O Código abaixo esta sendo reescrito para hwgui.
Código: Selecionar todos
#include 'hwgui.ch'
*****************
Function Cardapio
*****************
*
*
Local oWin,oDlg,oFont, Titulo:="Arquivo do Cardápio",n
Private vCa01,vCa02,vCa03,vCa04,vCa05,vCa06,vCa07,vCa08,vCa09
Private oCa01,oCa02,oCa03,oCa04,oCa05,oCa06,oCa07,oCa08,oCa09
Private oBSair,oPanel,lIncluir, aEspecie:={}, aIngre := {'Sim','Não'}
lIncluir := .f.
AbreDb('entidade.dbf','en',.t.)
AbreDb('grupos.dbf','gr',.t.)
AbreDb('especie.dbf','es',.t.)
nTotRec := es->(RecCount())
//Declare aFormVend[nTotRec]
For n:=1 to nTotRec
aadd(aEspecie,es->unidade)
es->(DbSkip())
Next
AbreDb('estoque.dbf','eq',.t.)
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -10
INIT Dialog oDlg CLIPPER NOEXIT TITLE Titulo Font oFont AT 0,0 SIZE 730,420 ;
On Exit {||FechaDbCardapio()}
@ 5,90 Browse oBrw DataBase of oWin Size 350,320 ;
On CLICK {||UpGet()} ON POSCHANGE {||UpGet()} Style WS_VSCROLL
Add column FieldBlock("Cod_Mercad") to oBrw ;
Header 'Código' ;
Type 'c' ;
Length 10 ;
picture '@!' ;
Justify Line DT_LEFT Justify Head DT_LEFT
Add column FieldBlock("Mercadoria") to oBrw ;
Header 'Produto' ;
type 'c' ;
length 30 ;
picture repl('X',30)
Add column FieldBlock("quantidade") to oBrw ;
Header 'Quantidade' ;
type 'n' ;
length 10 ;
picture '9999,999'
Add column FieldBlock("avista") to oBrw ;
Header 'Preço' ;
type 'n' ;
length 10 ;
picture '@e 999,999.99'
*--------------------//----------------*
@ 005,05 OwnerButton oNovo of oPANEL Size 68,68 ON CLICK {||Novo()} FLAT BITMAP "imagens\novo.bmp" TRANSPARENT COORDINATES 0,0,64,64
@ 080,05 OwnerButton oIniNF of oPanel Size 68,68 ON CLICK {||Inicio(oBrw)} FLAT BITMAP "imagens\inicio.bmp" TRANSPARENT COORDINATES 0,0,64,64 TOOLTIP "Inicio"
@ 150,05 OwnerButton oFimNF of oPanel size 68,68 ON CLICK {||Fim(oBrw)} FLAT BITMAP "imagens\fim.bmp" TRANSPARENT COORDINATES 0,0,64,64 TOOLTIP "Fim"
@ 370,005 groupbox oGr CAPTION "" SIZE 350,300 FONT oFont //RECT oR1 of oDFor
PegaVar()
@ 385,040 say "Código:" SIZE 260,20
@ 440,035 get oCa01 var vCa01 picture "@!" Size 040,20
@ 385,070 say "Produto:" Size 260,20
@ 440,065 get oCa02 var vCa02 picture "@!" Size 270,20
@ 385,100 say "Medida:" Size 80,20
@ 440,095 get ComboBox oCa03 var vCa03 ITEMS aEspecie TEXT Size 140,130
@ 385,130 say "Quantidade:" Size 80,20
@ 440,125 get oCa04 var vCa04 picture '99999,999' size 90,20
@ 385,160 say "Preço:" Size 80,20
@ 440,155 get oCa05 var vCa05 picture '@e 9999,999.99' size 90,20
@ 385,190 say "Grupo:" Size 80,20
@ 440,185 get oCa06 var vCa06 picture '99.99.99' size 90,20
@ 385,220 say "Area das impressoras:" Size 80,20
@ 440,215 get oCa07 var vCa07 picture '@!' size 90,20
@ 385,250 say "Produto com Ingredientes ?" Size 80,20
@ 440,245 get ComboBox oCa08 var vCa08 ITEMS aIngre TEXT size 90,130
@ 385,280 say "Valor da Comissão:" Size 80,20
@ 440,275 get oCa09 var vCa09 picture '@e 9999,999.99' size 90,20
@ 390,330 OwnerButton of oDlg Size 68,68 ;
ON CLICK {||Gravar()} FLAT BITMAP "imagens\incluir.bmp" TRANSPARENT COORDINATES 0,0,68,68
@ 460,330 OwnerButton of oDlg Size 68,68 ;
ON CLICK {||MsgInfo('Em Desenvolvimento')} FLAT BITMAP "imagens\impressora.bmp" TRANSPARENT COORDINATES 0,0,68,68
@ 530,330 OwnerButton of oDlg Size 68,68 ;
ON CLICK {||Apagar('eq',oBrw)} FLAT BITMAP "imagens\lixob.bmp" TRANSPARENT COORDINATES 0,0,68,68
oDlg:bActivate := {||oBrw:Top(),oBrw:SetFocus()}
oDlg:Activate()
//oWin:Activate()
Return Nil
************************************
Static Function TestaTecla(oBrw,key)
************************************
*
*
if key = VK_INSERT
oCa01:SetFocus()
lIncluir := .t.
elseif key = VK_DELETE
Apagar('gr',oBrw)
elseif key = VK_RETURN
oCa01:SetFocus()
lIncluir := .f.
elseif key = VK_UP
UpGet()
elseif key = VK_DOWN
UpGet()
endif
return .t.
************************
Function FechaDbCardapio
************************
*
*
FechaDb('gr')
FechaDb('eq')
FechaDb('es')
FechaDb('en')
return .t.
**********************
Static Function Gravar
**********************
*
*
Texto := iif(lIncluir,'Inclusão','Alteração')
If lIncluir
eq->(OrdSetFocus(1))
if eq->(DbSeek(vCa01))
MsgInfo("Código já Cadastrado")
oBrw:Refresh()
return .f.
endif
endif
if Empty(vCa01)
MsgInfo("Digite o Código")
return .f.
endif
if Empty(vCa02)
MsgInfo("Digite o Grupo")
return .f.
endif
if MsgYesNo("Confirma a "+texto)
if lIncluir
incluir('eq')
else
TravaRegistro('eq')
endif
repl eq->cod_mercad with vCa01 ,;
eq->mercadoria with vCa02 ,;
eq->unidade with vCa03 ,;
eq->quantidade with vCa04 ,;
eq->avista with vCa05 ,;
eq->cod_grupo with vCa06 ,;
eq->AreaPrint with vCa07 ,;
eq->ingredient with vCa08 ,;
eq->comissao with vCa09
NetFlush('eq')
oBrw:Refresh()
oCa01:SetFocus()
if lIncluir
Novo()
else
oBrw:SetFocus()
endif
Endif
return .t.
************************
Static Procedure CriaVar
************************
*
*
vCa01 := spac(len(eq->cod_mercad))
vCa02 := spac(len(eq->mercadoria))
vCa03 := spac(len(eq->unidade))
vCa04 := 0
vCa05 := 0
vCa06 := spac(len(eq->cod_grupo))
vCa07 := spac(len(eq->AreaPrint))
vCa08 := 'N'
vCa09 := 0
************************
Static Procedure PegaVar
************************
vCa01 := eq->cod_mercad
vCa02 := eq->mercadoria
vCa03 := eq->unidade
vCa04 := eq->quantidade
vCa05 := eq->avista
vCa06 := eq->cod_grupo
vCa07 := eq->AreaPrint
vCa08 := eq->ingredient
vCa09 := eq->comissao
***************************
Static Function AtualizaVar
***************************
oCa01 : Refresh()
oCa02 : Refresh()
oCa03 : Refresh()
oCa04 : Refresh()
oCa05 : Refresh()
oCa06 : Refresh()
oCa07 : Refresh()
oCa08 : Refresh()
oCa09 : Refresh()
*********************
Static Function UpGet
*********************
PegaVar()
AtualizaVar()
lIncluir:=.f.
return nil
********************
Static Function Novo
********************
*
*
CriaVar()
AtualizaVar()
lIncluir:=.t.
oCa01:SetFocus()
return .t.
************************
Function Apagar(arq,obj)
************************
*
*
If Permissao('EX','ca')
if MsgYesNo('Deseja Apagar Este Registro ?')
Marcar(arq,obj)
endif
endif
return .t.
Editado pela última vez por Itamar M. Lins Jr. em 09 Out 2007 14:34, em um total de 1 vez.
Código: Selecionar todos
@ 005,05 OwnerButton oNovo of oPANEL Size 68,68 ON CLICK {||Novo()} FLAT BITMAP "imagens\novo.bmp" TRANSPARENT COORDINATES 0,0,64,64
@ 080,05 OwnerButton oIniNF of oPanel Size 68,68 ON CLICK {||Inicio(oBrw)} FLAT BITMAP "imagens\inicio.bmp" TRANSPARENT COORDINATES 0,0,64,64 TOOLTIP "Inicio"
@ 150,05 OwnerButton oFimNF of oPanel size 68,68 ON CLICK {||Fim(oBrw)} FLAT BITMAP "imagens\fim.bmp" TRANSPARENT COORDINATES 0,0,64,64 TOOLTIP "Fim"
Amigo , pelo que pude entender em seu tbrowse voce só incluir , novos registros , e quanto a alteração como voce chama esse módulo , no caso acho que até poderia ser chamado pelo Tbrowse tambem , estou certo ??
acho que estou encontrando essa dificudade pq estou querendo usar os gets direto na tela , acho que se migra-se para o modo tbrowse não treria mais esses problemas ,correto ?
C:\Xharbour\Xdev\Fw\VSX
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Negativo.ederxc escreveu:
Amigo , pelo que pude entender em seu tbrowse voce só incluir , novos registros , e quanto a alteração como voce chama esse módulo , no caso acho que até poderia ser chamado pelo Tbrowse tambem , estou certo ??
acho que estou encontrando essa dificudade pq estou querendo usar os gets direto na tela , acho que se migra-se para o modo tbrowse não treria mais esses problemas ,correto ?
Observe que o "objeto browse" tem ativado dois metodos.
POSCHANGE e ON CLICK.
Se o usuário navegar pelo browse automaticamente os gets sao atualizados.
É só o usuario digitar o que nos get´s e pressionar o botão gravar.
Agora se ele precisar incluir e só pressionar o botão novo()
@ 5,90 Browse oBrw DataBase of oWin Size 350,320 ;
On CLICK {||UpGet()} ON POSCHANGE {||UpGet()} Style WS_VSCROLL
Outra coisa, voce pode, tambem usar o get direto na tela.
Atenção para o objeto Get.
Declaro os objetos e depois as variaveis.
Ex:
Private oBjX
Private vBjx
//Então eu tenho o objeto e variavel declarado
// No clipper apenas a variavel sem o objeto.
@ 10,10 say 'Meu Get'
@ 10,30 get oBjx VAR vBjx picture 'XXXXXX'
//Eu posso:
oBjx:SetFocus() //coloco o foco no objeto oBjx
oBjx:Disable() //Desabilito, o usuário não pode alterar.
//Se precisar manipular faço:
if vBjx = 'JOAO' // uso a variavel não o objeto.
vBjx := 'MARIA'
oBjx:Refresh() // Atualizo a tela, porque o conteudo já foi mudado mas não é mostrado na tela.
endif
//Quando fazemos o replace usamos vBjx e não oBjx.
replace nome with vBjx
Saudações
Itamar M. Lins Jr.
Brother , to com um erro extranho aqui , em seu exemplo voce usa , funções externas para criar variaveis e os objetos , porem quando faço isso
ao entrar na tabela da erro de variavel ñ existe
ou seja se eu criar a variavel em uma função fora da dialog e depois voltar para a Dialog fica como se a variavel não fosse criada
Obs: as variaveies estão declaradas sem parametro de PRIV, LOCAL ou PUBLI
´o)
ao entrar na tabela da erro de variavel ñ existe
ou seja se eu criar a variavel em uma função fora da dialog e depois voltar para a Dialog fica como se a variavel não fosse criada
Obs: as variaveies estão declaradas sem parametro de PRIV, LOCAL ou PUBLI
´o)
C:\Xharbour\Xdev\Fw\VSX
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Sem o parametro ela assume "private".ederxc escreveu:Brother , to com um erro extranho aqui , em seu exemplo voce usa , funções externas para criar variaveis e os objetos , porem quando faço isso
ao entrar na tabela da erro de variavel ñ existe
ou seja se eu criar a variavel em uma função fora da dialog e depois voltar para a Dialog fica como se a variavel não fosse criada
Obs: as variaveies estão declaradas sem parametro de PRIV, LOCAL ou PUBLI
´o)
Declare na função/procedure (principal) a que chama as demais "all right ?"
Saudações
Itamar M. Lins Jr.
Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
não era pra funcionar !
:xau
não era pra funcionar !
Código: Selecionar todos
INIT DIALOG ojarfor TITLE " teste" ;
SIZE vWidth,vHeight ;
ON INIT {|| pegavar()} //assim não era pra funcionar ??
//ou chamar aqui pegavar
@24,95 get oVar1 var vVAr1 picture "@!"
*_________________________________
Func pegavar()
criaObj()
vVar1:=space(50)
*_________________________________
Func pegavar()
criaObj()
oVar1:=""
C:\Xharbour\Xdev\Fw\VSX
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ô cabeça!ederxc escreveu:Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
não era pra funcionar !
:xauCódigo: Selecionar todos
INIT DIALOG ojarfor TITLE " teste" ; SIZE vWidth,vHeight ; ON INIT {|| pegavar()} //assim não era pra funcionar ?? //ou chamar aqui pegavar @24,95 get oVar1 var vVAr1 picture "@!" *_________________________________ Func pegavar() criaObj() vVar1:=space(50) *_________________________________ Func pegavar() criaObj() oVar1:=""
Assunta ai!
Código: Selecionar todos
Private vVar1,oVar1 // Aqui deve ser a declaração ok!
INIT DIALOG ojarfor TITLE " teste" ;
SIZE vWidth,vHeight ;
ON INIT {|| pegavar()} //assim não era pra funcionar ??
//ou chamar aqui pegavar
@24,95 get oVar1 var vVAr1 picture "@!"
*_________________________________
Func pegavar()
criaObj()
vVar1:=space(50)
/* Preste atenção, se não colocar lá em cima que ela é "PRIVATE"(lá em cima), ela vai assumir private aqui em baixo e só vai ser visualizada por funções que venham a ser chamadas por essa daqui ok.
Repare que estou apenas declarando não informo o seu tipo(CDLMN) ou conteúdo.
/*
*_________________________________
Func pegavar()
criaObj()
oVar1:=""
Ps. Depois mando, a conta pra deposito!
Saudações
Itamar M. Lins Jr.[/code]
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Isso ai em cima esta errado tambem.ederxc escreveu:Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
não era pra funcionar !
:xau[/code]Código: Selecionar todos
*_________________________________ Func pegavar() criaObj() oVar1:=""
oVar1 é o objeto não é uma variavel qualquer
e com o obejto podemos:
oVar1:setfocus()
ou
oVar1:Disable()
ou
oVar1:enable()
ou
oVar:Refresh()
...
Menos mudar ele de objeto para um campo caractere.
Se voce muda:
oVar1:="" quando o foco voltar para o campo @ get vai dar erro.
Saudações
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Resumindo:
Ps. Lembre-se que é GUI os Gets não tem READ, Jogamos na tela e depois é que vamos ver o que iremos deixar para o burro digo usuário vai fazer...
O segredo está no desenho das telas nos componentes que vai ter cada tela se vai usar browses, abas (tab´s), etc...
Saudações
Itamar M. Lins Jr.
Código: Selecionar todos
***********
Function main
***********
*
*
Local oJarFor,Titulo:='Teste'
Private oVar1,vVar1
INIT DIALOG ojarfor TITLE Titulo AT 0,0 Size 300,400
Pegavar()
@24,95 get oVar1 var vVAr1 picture repl('X',50)
oJarFor:Activate()
return nil
*_________________________________
Static Function pegavar()
vVar1:=space(50)
*_________________________________
Static Function pegavar()
vVar1:= "meu conteudo" //não oVar1 sempre usamos a variavel
/* Se precisar mudar, mexer com conteudos dos objetos usamos
oVar1 : GetText('meu texto')
*/
O segredo está no desenho das telas nos componentes que vai ter cada tela se vai usar browses, abas (tab´s), etc...
Saudações
Itamar M. Lins Jr.
-
Daniel_halon
- Usuário Nível 1

- Mensagens: 35
- Registrado em: 13 Jul 2007 19:50
- Localização: PORTO ALEGRE - RS
Amigo Itamar,
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.
O tema e o seguinte:
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.
Um abraço, Dniel..........
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.
O tema e o seguinte:
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..........
Clipper 5.2 Xharbour 99.70 Visual Lib 2.3
