[firebase-br] dbeval e Aeval
Mário Reis
secretariadogeral em acra.pt
Qui Jun 2 20:47:15 -03 2016
Bom
Talvez devessesmos discutir o assunto para os emails pessoais de cada um
(secretariadogeral em acra.pt), mas como não consigo saber o seu aqui vai.
A ideia é lançar/chamar os programas a partir de menus parameterizados
O depois do Outm86 que eu nunca usei assim como o Summer 87 o salto foi
significativa para o clipper5.# estagnou no clipper 5.3c.
Porém o DBEval começou logo na vaersão 5.0 e fucnionava muito bem alem
de leve; fiz com um amigo uma aplicação toda parameterizadas desde
menus, forms e reports, operações contabilisticas tudo era
parameterizado foi desenhado ainda nos 286, era rápido no 486 e voava a
jacto nos Pentium
Só que as caixas de texto sairam de moda e fori preciso avançar
A Partir de um dbeval V/executava qualquer codblock definido numa linha
de texto de um ficheiro... Usavamos o dbeval a par do AEVAL, assim:
Function DefineBrowse( lin1,col1,lin2,col2, aCampos )
// aRet, aCampos e nLinha sÆo Private em Ecr_Geral
Local obMenu,nM:=1,oColumn, nT:=0
Private nN
M->nN:=0
obMenu:=TBrowseNew(lin1, Col1, Lin2, Col2)
obMenu:GoTopBlock:={|| nLinha := 1}
obMenu:GoBottomBlock:={|| nLinha := Len(aRet)}
If Len(aRet)=0
AR_Append(aRet,aCampos,obMenu)
EndIf
// Actualiza os campos do Say
AEval(aCampos,{|aEle| If(aEle[1]='S' .And.;
Eval(&(aEle[3])),EVal(&(aEle[4])),NIL)})
// Actualiza os Campos de Totais e Mostra no Ecran
For nN:=1 to Len(aCampos)
If aCampos[nN][1]='T' .And. Eval(&(aCampos[nN][3]))
DevPos(aCampos[nN][5][1],aCampos[nN][5][2])
DevOutPict(EVal(&(aCampos[nN][4])),&(aCampos[nN][6]))
EndIf
Next
obMenu:SkipBlock:={|nSkip, nStart| nStart := nLinha,;
nLinha := MAX( 1, MIN(Len(aRet), nVar := (nLinha + nSkip) ) ),;
nLinha - nStart }
obMenu:headsep:= "Ä"
obMenu:colsep := "³"
obMenu:Footsep:= "Ä"
// 19:17 1995 Aug,16 Reis & Martins
// !aEle[9] ==> Esconder=Sim e nÆo monta a coluna.
//obMenu:AddColumn(TBColumnNew(aEle[2],&(aEle[5])))
* AEval(aCampos,{|aEle| If(aEle[1] $ 'SGM' .AND. !aEle[9],;
* obMenu:AddColumn( TBColumnNew( aEle[2],&(aEle[5]) )),NIL)})
* SETCOLOR("W+/B,W+/GB+,,,W+/B")
For i=1 to Len(aCampos)
If aCampos[i,1] $ 'SGM' .and. aCampos[i,9]!='T' // Esconder
// Determina larg Col p/ Padc()
Nt:= oK( Eval( &(aCampos[i,5]) ) )
nT:=IF( Len(aCampos[i,2])>nT,len(aCampos[i,2]),nT)
oColumn:=TBColumnNew( Padc( aCampos[i,2] , nT ), &(aCampos[i,5]) )
obMenu:AddColumn( oColumn )
Else
oColumn:=Nil // SenÆo esconde a Coluna
Endif
Next
obMenu:GoBottom()
obMenu:ForceStable()
Return(obMenu)
Mais detalhes sobre a lista de discussão lista