× Linguagem de Programação ADVPL

Perguntas Campos da tela modelo 2

Mais
9 anos 11 meses atrás #22975 por gustavo
Estou fazendo um TCC e preciso criar uma tela modelo 2, so que quando eu crio ela não me traz os campos.

#include 'Protheus.ch'

User Function CrtmBrwPc01()

// Criatos mBrowse Pedido de compras 01
//Cria a tela mBrowse e Suas rotinas

Private cAlias := 'ZXC'
Private aRotina := {}

AADD(aRotina,{'Pesquisar','AxPesquisa',0,1})
AADD(aRotina,{'Visualizar','AxVisual',0,2})
AADD(aRotina,{'Incluir','U_CrtPc01',0,3})
AADD(aRotina,{'Alterar','AxAltera',0,4})
AADD(aRotina,{'Excluir','AxDeleta',0,5})
AADD(aRotina,{'Aprov.ped. Comp.','U_XCrtAprPc',0,6})
AADD(aRotina,{'Legenda','U_Crt2leg',0,7})

DbSelectArea(cAlias)

DbSetOrder(1)

mBrowse(6,1,22,75,cAlias)

Return Nil

User Function teste(cAlias,nReg,nOpc)

Local cAlias := 'ZXC'
local cTitulo := 'Solicitação de estoque'
Local aCab := {}
Local aRoda := {}
Local aGrid := {80,005,050,300}
Local nUsado := 0

Local nColuna := 0
Local lRetMod2 := .T.
Local cTudoOk := 'AllWayTrue()'
Local cLinhaOk := 'AllWayTrue()'

Private aHeader := {}
Private aCols := {}
Private cXCFilial := xFilial(cAlias)
Private cXCTabela := SPACE(5)

DbSelectArea('SX3')
DbSetOrder(1)
DbSeek(cAlias)

If nOpc==3



// Montagem do aHeader
AADD(aCab,{'Chave' ,'ZXC_COD','@!',5,0,'AllWaysTrue()','','C','','R'})
AADD(aCab,{'DESC' ,'ZXC_DESC','@!',40,0,'AllWaysTrue()','','C','','R'})

// Montage do aCols
aCols:=Array(1,Len(aHeader)+1)

While !EOF().And.X3_arquivo == cAlias
If X3USO(X3_usado).And.cNivel>=X3_nivel
nUsado++
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
// Inicialização aCols
For nColuna := 1 To Len(aHeader)
If aHeader[nColuna][8]=='C'
aCols[1][nColuna]:= Space(aHeader[nColuna][4])
ElseIf aHeader[nColuna][8] == "N"
aCols[1][nColuna]:= 0
ElseIf aHeader[nColuna][8]=='D'
aCols[1][nColuna]:=cTod('')
ElseIf aHeader[nColuna][8]=='L'
aCols[1][nColuna]:=.F.
ElseIf aHeader[nColuna][8]=='M'
aCols[1][nColuna]:=''
EndIf
Next nColuna

aCols[1][Len(aHeader)+1] := .F.
lRetMod2 := Modelo2(cTitulo,aCab,aRoda,aGrid,nOpc,cLinhaOk,cTudoOk)

If lRetMod2
For nLinha := 1 To Len(aCols)
ReckLock('ZXC',.T.)
//Campos Do aCols
For nColuna := 1 To Len (aHeader)
ZXC->&(aHeader[nColuna][2]):= aCols[nLinhas][nColuna]
Next nColuna
MsUnlock()
Next nLinha
EndIf
Return

Já tentei todos os métodos só que não me aparece.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #22977 por João Antônio
Respondido por João Antônio no tópico Campos da tela modelo 2
Bom dia, pelo que eu entendi você está chamando os dados, mas em nenhum lugar antes de chamá-los você está preenchendo a tabela 'ZXC'.

Tente chamar sua função teste antes do comando mBrowse(6,1,22,75,cAlias)

Att.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 11 meses atrás #22985 por THALESCOTR
Respondido por THALESCOTR no tópico Campos da tela modelo 2
Bom dia Gustavo,

como o João Antonio disse, você não está chamando a sua função customizada "teste" em nenhum lugar.
Se a rotina que você quer customizar é para inclusão, você deve alterar o aRotina para:

Private bInc := {|| U_teste(cAlias, ZXC->(RECNO()),3 ) }
AADD(aRotina,{'Incluir','Eval(bInc)',0,3})

Para usar a Modelo2, você tem que possuir cabeçalho e itens, e você só colocou no fonte uma tabela, se for somente essa tabela, você pode utilizar a enchoice ( tdn.totvs.com/display/public/mp/Enchoice ) ou colocar no seu aRotina:

AADD(aRotina,{'Incluir','AxInclui',0,3}) //Aqui a tela será montada automaticamente com a enchoice, ou seja só com o cabeçalho.

Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.105 segundos
Joomla templates by a4joomla