Exemplo de P.E. em MVC para adição de coluna na Grid
Exemplo 1- Exemplo do P.E. GTPA283 para adição de coluna da tabela GIC:
#include "TOTVS.ch"
#include "FWMVCDEF.CH"
/*/{Protheus.doc} User Function GTPA283
Ponto de Entrada MVC Rotina GTPA283 (Cadastro de Requisições)
@type Function
@version 1
@param
@return nil,null, sem retorno
@example
(examples)
@see (links_or_references)
/*/
User Function GTPA283()
Local aParams := ParamIXB //Parâmetros do Ponto de Entrada
Local oObj := Nil //Objeto do formulário ou do modelo, conforme o caso
Local cIDEvent := Nil //ID do local de execução do ponto de entrada
Local cIDForm := Nil //ID do formulário
Local oMdlGIC := Nil //Model GRIDGIC
Local oView := Nil //View Ativa
Local oStruct := Nil //Struct
Local oStruGIC := Nil //Struct Padrão da Tabela GIC
Local aFieldsGIC := {} //Campos Padrões da Tabela GIC
Local nPosCpo1 := 0 //Posição do Campo GIC_X_NOM
Local nPosCpo2 := 0 //Posição do Campo GIC_X_RG
Local lFieldOK := .F. //Campos já existem ?
Local nI := 0 //Controle de FOR
Local lRet := .T. //Retorno
//Verifica se possui os parâmetros
If !(aParams == Nil)
oObj := aParams[01] //Objeto do formulário ou do modelo, conforme o caso
cIDEvent := aParams[02] //ID do local de execução do ponto de entrada
cIDForm := aParams[03] //ID do formulário
//Verifica se é TudoOK
If (AllTrim(cIDEvent) == "MODELPOS")
oMdlGIC := oObj:GetModel('GRIDGIC')
GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO
For nI := 01 To oMdlGIC:Length()
oMdlGIC:GoLine(nI)
If !(oMdlGIC:IsDeleted())
If Empty(oMdlGIC:GetValue('GIC_X_NOM'))
lRet := .F.
Help( ,, 'Help',"GIC_X_NOM", 'Campo GIC_X_NOM não preenchido na Linha: ' + cValToChar(nI), 1, 0 )
ElseIf Empty(oMdlGIC:GetValue('GIC_X_RG'))
lRet := .F.
Help( ,, 'Help',"GIC_X_RG", 'Campo GIC_X_RG não preenchido na Linha: ' + cValToChar(nI), 1, 0 )
EndIf
EndIf
Next nI
//Verifica se é o Commit do Modelo
ElseIf (AllTrim(cIDEvent) == "MODELCOMMITNTTS")
oMdlGIC := oObj:GetModel('GRIDGIC')
GIC->(DBSetOrder(01)) //GIC_FILIAL+GIC_CODIGO
For nI := 01 To oMdlGIC:Length()
oMdlGIC:GoLine(nI)
If !(oMdlGIC:IsDeleted())
//Posicionar no Registro
If (GIC->(DBSeek(FWxFilial('GIC') + oMdlGIC:GetValue('GIC_CODIGO'))))
If (RecLock('GIC', .F.))
GIC->GIC_X_NOM := oMdlGIC:GetValue('GIC_X_NOM')
GIC->GIC_X_RG := oMdlGIC:GetValue('GIC_X_RG')
GIC->(MsUnlock())
EndIf
EndIf
EndIf
Next nI
//Verifica se está no Evento MODELPRE e se a View Ativa foi recuperada
ElseIf (AllTrim(cIDEvent) == "MODELPRE" .AND. AllTrim(oObj:cID) == "GTPA283")
oView := FWViewActive()
If ValType(oView) == "O"
//Pegando a Struct do Modelo
oStruct := oView:GetViewStruct("GRIDGIC")
//Verifica se os campos já existem
lFieldOK := AScan(oStruct:GetFields(), {|x| AllTrim(x[01]) == "GIC_X_NOM"}) > 0
//Adicionando campos
If (! lFieldOK)
//GIC_X_NOM
oStruct:AddField(;
"GIC_X_NOM" ,; //
"D1" ,; //
"Passageiro" ,; //
"Nome do Passageiro" ,; //
Nil ,; //
"GET" ,; //
"@!" ,; //
Nil ,; //
"" ,; //
.T. ,; //
"" ,; //
"" ,; //
{} ,; //
0 ,; //
"" ,; //
.F. ,; //
"" ,; //
.F. ,; //
0 ,; //
)
//GIC_X_RG
oStruct:AddField(;
"GIC_X_RG" ,; //
"D2" ,; //
"RG" ,; //
"Cedula de Identidade" ,; //
Nil ,; //
"GET" ,; //
"@!" ,; //
Nil ,; //
"" ,; //
.T. ,; //
"" ,; //
"" ,; //
{} ,; //
0 ,; //
"" ,; //
.F. ,; //
"" ,; //
.F. ,; //
0 ,; //
)
lCtrl283 := .T. //Campos já inclusos
EndIf
EndIf
EndIf
EndIf
Return lRet
Observações:
- Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
- Se tiver sugestões de rotinas, pode entrar em contato;
- Exemplo enviado por Alison Lemes;