EMPRESA: SOFT-TRES
PAIS : BRASIL
Essa funcao, ja utilizo em clip 5.3 a muito tempo, passei a utilizar
tambem no fivewin, o grande diferencial dela, é o ganho de tempo no
desenvolvimento e sua utilizacao é bem simples, porque ela cria um
vetor do arquivo(dbf) com o nomes dos campo, ela e semelhante a
DATABASE. É uma alternativa para quem não quer ficar declarando as variavel.
Para utilizar a D3 tem que ter um arquivo cabecalho.ch com os nomes dos
campo(D3CH gera o arquivo cabecalho com os campo)
Ex. CLIENTE.CH //conteudo do arquivo cabecalho
#xtranslate.cl_codigo => \[01]
#xtranslate.cl_nome => \[02]
#xtranslate.cl_endereco => \[03]
#xtranslate.cl_cidade => \[04]
#xtranslate.cl_cpf => \[05]
- Code: Select all Expand view RUN
#INCLUDE ".\Include\FiveWin.ch"
#INCLUDE ".\Include\cliente.Ch"
#include ".\Include\error.ch"
******************
FUNCTION CLIENTE()
******************
STATIC aGetCli := {}
STATIC oGetCli := {}
STATIC oDlg
IF !AbreDbfNtx({"Cliente"}) //abertura do arquivo
RETURN NIL
END
Select Cliente
Set orde TO 1
GO BOTTOM
SKIP
aGetCli := D3GET() //carregar o vetor
oGetCli := D3GET()
DEFINE DIALOG oDlg RESOURCE 1032 ;
TITLE "Cadastro de Cliente"
REDEFINE TBTNGET oGetCli.cl_codigo VAR aGetCli.cl_codigo ID 4095 PICTURE "@E 999999999999999" OF oDlg ;
VALID AchaCliente(@aGetCli) UPDATE
REDEFINE TBTNGET oGetCli.cl_nome VAR aGetCli.cl_nome ID 4001 OF oDlg PICTURE "@!"
REDEFINE TBTNGET oGetCli.cl_endereco VAR aGetCli.cl_endereco ID 4002 OF oDlg PICTURE "@!"
REDEFINE TBTNGET oGetCli.cl_cidade VAR aGetCli.cl_cidade ID 4003 OF oDlg PICTURE "@!"
REDEFINE TBTNGET oGetCli.cl_cpf VAR aGetCli.cl_cpf ID 4004 OF oDlg PICTURE "@e 999.999.999-99" VALID CPF(@aGetCli)
REDEFINE BUTTON ID 4002 OF oDlg WHEN !lBotaoR ACTION (GravaCli(@aGetCli)) UPDATE
REDEFINE BUTTON ID 701 OF oDlg WHEN !lBotaoR ACTION (Cancela(oGetCli,@aGetCli)) UPDATE CANCEL
ACTIVATE DIALOG oDlg CENTERED ON MOVE(oDlg:Center)
CLOSE Cliente
EndDialog()
oDlg:End()
Release All
SysRefresh()
RETURN
************************************
STATIC FUNCTION AchaCLIENTE(aGetCli)
************************************
LOCAL lRetorno := .F.
Select Cliente
Set ORDE TO 2
IF Cliente->(DbSeek(aGetCli.codigo))
aGetCli := D3GET()
lRetorno := .T.
ENDIF
RefreshObj()
RETURN(lFound)
*******************************************************************************
STATIC FUNCTION CPF(aGetCli)
****************************
IF ValCPF(aGetCli.cl_cpf)
RETURN(.T.)
ENDIF
RETURN(.F.)
*******************************************************************************
STATIC FUNCTION GravaCli(aGetCli,modo)
**************************************
LOCAL nCod := nID := 0
Select Cliente
IF modo = "I" //inclusao
IF AddRec(10)
aGetCli.cl_codigo := BuscaCodigo("Codigo",1)
D3Repl(aGetCli)
FINALI()
ENDIF
ELSEIF modo = "A" //alteracao
IF BloqReg(10)
D3Repl(aGetCli)
FINALI()
ENDIF
ENDIF
lFound := .F.
lDisableR := .F.
lBotaoR := .T.
Select Cliente
Set ORDE TO 1
GO BOTTOM
SKIP
aGetCli := D3GET()
oGetCli.cl_nome :Refresh()
oGetCli.cl_endereco :Refresh()
oGetCli.cl_cidade :Refresh()
oGetCli.cl_cpf :Refresh()
oDlg:Update() // Atualiza os gets...
oDlg:aEvalWhen() // Reavalia os whens...
RETURN(.T.)
*******************************************************************************
FUNCTION D3Get()
****************
//
LOCAL aGets := ARRAY(FCOUNT())
//
AEVAL(aGets,{|x,nl| aGets[nl] := FIELDGET(nl)})
//
RETURN aGets
*******************************************************************************
FUNCTION D3Repl(aGets)
**********************
//
AEVAL(aGets,{|x,nl| FIELDPUT(nl,x)})
//
RETURN NIL
*******************************************************************************