Tipo: Processamento
Exibe formulário para cadastro segundo o modelo 2 (como a rotina de Nota Fiscal).
Sintaxe
M o d e l o 2 (c T í t u l o ,a C a b e c ,a R o d a p é ,a G d ,n O p ,c L O k ,c T O k ,
[aGetsGD,bF4,cIniCpos,nMax,aCordw,lDelget])
Parâmetros
cTítulo – Título da janela
aCabec – Array com os campos do cabeçalho
aRodapé – Array com os campos do rodapé
aGd – Array com as posições para edição dos itens (GETDADOS)
nOp – Modo de operação (3 ou 4 altera e inclui itens, 6 altera mas não
inclui itens, qualquer outro número só visualiza os itens)
cLOk – Função para validação da linha
cTOk – Função para validação de todos os dados (na confirmação)
aGetsGD – Array Gets editáveis (GetDados)
Default = Todos.
bF4 – Codeblock a ser atribuído a tecla F4.
Default = Nenhum.
cIniCpos – String com o nome dos campos que devem ser inicializados ao teclar seta para baixo (GetDados).
nMAx – Limita o número de linhas (GetDados).
Default = 99.
aCordw – Array com quatro elementos numéricos, correspondendo às coor-denadas
linha superior, coluna esquerda, linha interior e coluna
direita, definindo a área de tela a ser usada.
Default = Área de Dados Livre.
lDelget – Determina se as linhas podem ser deletadas ou não (GetDados)
Default = .T.
Retorna
lRet – Retorna .T. se for confirmado
Exemplo
//**************************************************
// 3,4 Permitem alterar getdados e incluir linhas
// 6 So permite alterar getdados e nao incluir linhas
// Qualquer outro numero so visualiza
nOpcx:=3
dbSelectArea(“Sx3”)
dbSetOrder(1)
dbSeek(“SX5”)
nUsado:=0
aHeader:={}
While !Eof() .And. (x3_arquivo == “SX5”)
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1
AADD(aHeader,{ TRIM(x3_titulo),x3_campo,;
x3_picture,x3_tamanho,x3_decimal,;
”ExecBlock(‘Md2valid’,.f.,.f.)”,x3_usado,;
x3_tipo, x3_arquivo, x3_context } )
Endif
dbSkip()
End
aCols:=Array(1,nUsado+1)
dbSelectArea(“Sx3”)
dbSeek(“SX5”)
nUsado:=0
While !Eof() .And. (x3_arquivo == “SX5”)
IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1
IF nOpcx == 3
IF x3_tipo == “C”
aCOLS[1][nUsado] := SPACE(x3_tamanho)
Elseif x3_tipo == “N”
aCOLS[1][nUsado] := 0
Elseif x3_tipo == “D”
aCOLS[1][nUsado] := dDataBase
Elseif x3_tipo == “M”
aCOLS[1][nUsado] := “”
Else
aCOLS[1][nUsado] := .F.
Endif
Endif
Endif
dbSkip()
End
aCOLS[1][nUsado+1] := .F.
cCliente:=Space(6)
cLoja :=Space(2)
dData :=Date()
nLinGetD:=0
cTitulo:=”TESTE DE MODELO2″
aC:={}
// aC[n,1] = Nome da Variavel Ex.:”cCliente”
// aC[n,2] = Array com coordenadas do Get [x,y], em
// Windows estao em PIXEL
// aC[n,3] = Titulo do Campo
// aC[n,4] = Picture
// aC[n,5] = Validacao
// aC[n,6] = F3
// aC[n,7] = Se campo e’ editavel .t. se nao .f.
#IFDEF WINDOWS
AADD(aC,{“cCliente” ,{15,10} ,”Cod. do Cliente”,”@!”,;
‘ExecBlock(“MD2VLCLI”,.F.,.F.)’,”SA1″,})
AADD(aC,{“cLoja” ,{15,200},”Loja”,”@!”,,,})
AADD(aC,{“dData” ,{27,10} ,”Data de Emissao”,,,,})
#ELSE
AADD(aC,{“cCliente” ,{6,5} ,”Cod. do Cliente”,”@!”,;
ExecBlock(“MD2VLCLI”,.F.,.F.)’,”SA1″,})
AADD(aC,{“cLoja” ,{6,40},”Loja”,”@!”,,,})
AADD(aC,{“dData” ,{7,5} ,”Data de Emissao”,,,,})
#ENDIF
aR:={}
// aR[n,1] = Nome da Variavel Ex.:”cCliente”
// aR[n,2] = Array com coordenadas do Get [x,y], em
// Windows estao em PIXEL
// aR[n,3] = Titulo do Campo
// aR[n,4] = Picture
// aR[n,5] = Validacao
// aR[n,6] = F3
// aR[n,7] = Se campo e’ editavel .t. se nao .f.
#IFDEF WINDOWS
AADD(aR,{“nLinGetD” ,{120,10},”Linha na GetDados”,;
“@E 999”,,,.F.})
#ELSE
AADD(aR,{“nLinGetD” ,{19,05},”Linha na GetDados”,;
“@E 999”,,,.F.})
#ENDIF
#IFDEF WINDOWS
aCGD:={44,5,118,315}
#ELSE
aCGD:={10,04,15,73}
#ENDIF
cLinhaOk := “ExecBlock(‘Md2LinOk’,.f.,.f.)”
cTudoOk := “ExecBlock(‘Md2TudOk’,.f.,.f.)”
// lRet = .t. se confirmou
// lRet = .f. se cancelou
lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk)
// No Windows existe a funcao de apoio CallMOd2Obj() que
// retorna o objeto Getdados Corrente
Return
Estude para provas de certificações em TI com os simulados Bynem