× Linguagem de Programação ADVPL

Perguntas Campos da tela modelo 2

Mais
10 anos 10 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
10 anos 10 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
10 anos 10 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.120 segundos
Joomla templates by a4joomla