- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Campos da tela modelo 2
×
Linguagem de Programação ADVPL
Perguntas Campos da tela modelo 2
- gustavo
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 70
- Obrigados Recebidos: 0
10 anos 5 meses atrás #22975
por gustavo
Campos da tela modelo 2 foi criado 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.
#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.
- João Antônio
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
10 anos 5 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.
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.
- THALESCOTR
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 124
- Obrigados Recebidos: 0
10 anos 5 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
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Campos da tela modelo 2
Tempo para a criação da página:0.119 segundos