Pular para o conteúdo
Início » Advpl Modelo2

Advpl Modelo2

    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