Nesse vídeo demonstraremos a utilização da classe FWStruTrigger, que serve para criar gatilhos em telas usando MVC.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "Totvs.ch"
#Include "FWMVCDef.ch"
//Variveis Estaticas
Static cTitulo := "Grupo de Produtos"
Static cAliasMVC := "SBM"
/*/{Protheus.doc} User Function zExe248
Grupo de Produtos (teste de FWStruTrigger)
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see https://tdn.totvs.com/display/public/framework/FwStruTrigger e http://autumncodemaker.com
@obs
Função FWStruTrigger
Parâmetros
+ cDom , Caractere , Campo Origem
+ cCDom , Caractere , Campo Destino
+ cRegra , Caractere , Regra de Preenchimento
+ lSeek , Lógico , Irá Posicionar?
+ cAlias , Caractere , Alias de Posicionamento
+ nOrdem , Numérico , Índice de Posicionamento
+ cChave , Caractere , Chave de Posicionamento
+ cCondic , Caractere , Condição para execução do gatilho
+ cSequen , Caractere , Sequência do gatilho
Retorno
+ aRetorno , Array , Array com os dados que serão necessários para a Struct
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe248()
Local aArea := FWGetArea()
Local oBrowse
Private aRotina := {}
//Definicao do menu
aRotina := MenuDef()
//Instanciando o browse
oBrowse := FWMBrowse():New()
oBrowse:SetAlias(cAliasMVC)
oBrowse:SetDescription(cTitulo)
oBrowse:DisableDetails()
//Ativa a Browse
oBrowse:Activate()
FWRestArea(aArea)
Return Nil
/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zExe248
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function MenuDef()
Local aRotina := {}
//Adicionando opcoes do menu
ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.Exemplo_248_Funcao_FWStruTriggger" OPERATION 1 ACCESS 0
ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.Exemplo_248_Funcao_FWStruTriggger" OPERATION 3 ACCESS 0
ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.Exemplo_248_Funcao_FWStruTriggger" OPERATION 4 ACCESS 0
ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.Exemplo_248_Funcao_FWStruTriggger" OPERATION 5 ACCESS 0
Return aRotina
/*/{Protheus.doc} ModelDef
Modelo de dados na funcao zExe248
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function ModelDef()
Local oStruct := FWFormStruct(1, cAliasMVC)
Local oModel
Local bPre := Nil
Local bPos := Nil
Local bCommit := Nil
Local bCancel := Nil
Local aGatilhos := {}
Local nAtual
//Adicionando um gatilho, do codigo para data
aAdd(aGatilhos, FWStruTriggger( ;
"BM_GRUPO",; //Campo Origem
"BM_DESC",; //Campo Destino
"'Grupo ' + Replicate('x', 10)",; //Regra de Preenchimento
.F.,; //Irá Posicionar?
"",; //Alias de Posicionamento
0,; //Índice de Posicionamento
'',; //Chave de Posicionamento
NIL,; //Condição para execução do gatilho
"01"); //Sequência do gatilho
)
aAdd(aGatilhos, FWStruTriggger( ;
"BM_DESC",; //Campo Origem
"BM_PROORI",; //Campo Destino
"'1'",; //Regra de Preenchimento
.F.,; //Irá Posicionar?
"",; //Alias de Posicionamento
0,; //Índice de Posicionamento
'',; //Chave de Posicionamento
NIL,; //Condição para execução do gatilho
"01"); //Sequência do gatilho
)
//Percorrendo os gatilhos e adicionando na Struct
For nAtual := 1 To Len(aGatilhos)
oStruct:AddTrigger( ;
aGatilhos[nAtual][01],; //Campo Origem
aGatilhos[nAtual][02],; //Campo Destino
aGatilhos[nAtual][03],; //Bloco de código na validação da execução do gatilho
aGatilhos[nAtual][04]; //Bloco de código de execução do gatilho
)
Next
//Cria o modelo de dados para cadastro
oModel := MPFormModel():New("zExe248M", bPre, bPos, bCommit, bCancel)
oModel:AddFields("SBMMASTER", /*cOwner*/, oStruct)
oModel:SetDescription("Modelo de dados - " + cTitulo)
oModel:GetModel("SBMMASTER"):SetDescription( "Dados de - " + cTitulo)
oModel:SetPrimaryKey({})
Return oModel
/*/{Protheus.doc} ViewDef
Visualizacao de dados na funcao zExe248
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
Static Function ViewDef()
Local oModel := ModelDef()
Local oStruct := FWFormStruct(2, cAliasMVC)
Local oView
//Cria a visualizacao do cadastro
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("VIEW_SBM", oStruct, "SBMMASTER")
oView:CreateHorizontalBox("TELA" , 100 )
oView:SetOwnerView("VIEW_SBM", "TELA")
Return oView
Bom pessoal, por hoje é só.
Abraços e até a próxima.