Get no mesmo DIALOG

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Get no mesmo DIALOG

Mensagem por ederxc »

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" ??




:'(
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Ok, mas como voce chama a função de incluir com seus gets , na mesma janela dialog to vendo que não da mesmo...
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

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...
Na mesma janela.
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

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
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

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 ?
Negativo.
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Brother , to começando a intender , isso é totalmente diferente de clipper ...

mas parece que agora vai , vou dar uma olhada no seu exmplo e caminhamos en frente
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

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)
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

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)
Sem o parametro ela assume "private".

Declare na função/procedure (principal) a que chama as demais "all right ?"

Saudações
Itamar M. Lins Jr.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
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:=""
:xau
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

ederxc escreveu:Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
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:=""
:xau
Ô cabeça!
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]
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

ederxc escreveu:Brow , continuo sem entender , veja no exeplo que acabei de digitar ,
não era pra funcionar !

Código: Selecionar todos

*_________________________________
Func pegavar()
criaObj()
oVar1:=""
:xau[/code]
Isso ai em cima esta errado tambem.
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.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Mensagem por Itamar M. Lins Jr. »

Resumindo:

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')
*/
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Opá , valeu por mais esse exemplo, assim nos detalhes a coisa flui melhor ...
C:\Xharbour\Xdev\Fw\VSX
Daniel_halon
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 13 Jul 2007 19:50
Localização: PORTO ALEGRE - RS

Mensagem por Daniel_halon »

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.



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
Responder