No vídeo de hoje, vamos demonstrar em como modificar um F3 de um campo via MVC.
A dúvida de hoje foi feita por alguns alunos, que questionaram a possibilidade de alterar o F3 (Consulta Padrão, aquela lupinha) usando código em AdvPL.
Pensando nisso, montamos esse exemplo usando o método SetProperty e uma função estático.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "Totvs.ch" #Include "FWMVCDef.ch" //Variveis Estaticas Static cTitulo := "Artistas" Static cAliasMVC := "ZD1" /*/{Protheus.doc} User Function zVid0068 Cadastro de Artistas @author Daniel Atilio @since 10/09/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function zVid0068() Local aArea := GetArea() 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() RestArea(aArea) Return Nil /*/{Protheus.doc} MenuDef Menu de opcoes na funcao zVid0068 @author Daniel Atilio @since 10/09/2022 @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.zVid0068" OPERATION 1 ACCESS 0 ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.zVid0068" OPERATION 3 ACCESS 0 ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.zVid0068" OPERATION 4 ACCESS 0 ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.zVid0068" OPERATION 5 ACCESS 0 Return aRotina /*/{Protheus.doc} ModelDef Modelo de dados na funcao zVid0068 @author Daniel Atilio @since 10/09/2022 @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 //Cria o modelo de dados para cadastro oModel := MPFormModel():New("zVid68M", bPre, bPos, bCommit, bCancel) oModel:AddFields("ZD1MASTER", /*cOwner*/, oStruct) oModel:SetDescription("Modelo de dados - " + cTitulo) oModel:GetModel("ZD1MASTER"):SetDescription( "Dados de - " + cTitulo) oModel:SetPrimaryKey({}) Return oModel /*/{Protheus.doc} ViewDef Visualizacao de dados na funcao zVid0068 @author Daniel Atilio @since 10/09/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ Static Function ViewDef() Local oModel := FWLoadModel("zVid0068") Local oStruct := FWFormStruct(2, cAliasMVC) Local oView //Define a consulta padrão do campo de observação oStruct:SetProperty("ZD1_OBSERV", MVC_VIEW_LOOKUP, {|| fObsF3()}) //Cria a visualizacao do cadastro oView := FWFormView():New() oView:SetModel(oModel) oView:AddField("VIEW_ZD1", oStruct, "ZD1MASTER") oView:CreateHorizontalBox("TELA" , 100 ) oView:SetOwnerView("VIEW_ZD1", "TELA") Return oView Static Function fObsF3() Local oModel := FwModelActive() Local oModZD1 := oModel:GetModel("ZD1MASTER") Local cNome := Upper(oModZD1:GetValue("ZD1_NOME")) Local cConsulta := "" //Se a primeira letra do nome do artista for C, irá usar a consulta de Clientes If Left(cNome, 1) == "C" cConsulta := "SA1" //Senão se a primeira letra do nome do artista for F, irá usar a consulta de Fornecedores ElseIf Left(cNome, 1) == "F" cConsulta := "SA2" //Senão por default usará a de Produtos Else cConsulta := "SB1" EndIf Return cConsulta
Bom pessoal, por hoje é só.
Abraços e até a próxima.