Nesse vídeo demonstraremos a utilização das funções FWFldGet e FWFldPut, sendo que a primeira serve para buscar o valor de um campo e a segunda para atualizar o valor de um campo, ambas em telas em MVC.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "Totvs.ch"
/*/{Protheus.doc} User Function zExe219
Exemplo de função que pega ou atribui um valor em um campo em MVC
@type Function
@author Atilio
@since 20/02/2023
@see https://tdn.totvs.com/display/public/framework/FWFldGet e https://tdn.totvs.com/display/public/framework/FWFldPut
@obs
Função FWFldGet
Parâmetros
+ cCampo , Caractere , Nome do Campo
+ nLinha , Numérico , Número da linha (quando se esta em uma GRID)
+ oModel , Objeto , Variável contendo o Modelo de Dados ativo na memória
+ lShowMsg , Lógico , .T. se exibe mensagem de erro ao tentar buscar o campo ou .F. se não
Retorno
+ xRet , Indefinido , Conteúdo inserido no campo
Função FWFldPut
Parâmetros
+ cCampo , Caractere , Nome do Campo
+ xConteudo , Indefinido , Conteúdo que será atribuído
+ nLinha , Numérico , Número da linha (quando se esta em uma GRID)
+ oModel , Objeto , Variável contendo o Modelo de Dados ativo na memória
+ lShowMsg , Lógico , .T. se exibe mensagem de erro ao tentar preencher o campo ou .F. se não
+ lLoad , Lógico , .T. se força a atribuição de conteúdo no campo ou .F. se não
Retorno
+ lRet , Lógico , .T. se o conteúdo foi atribuído ou .F. se não
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe219()
Local aArea := FWGetArea()
//Mostra a pergunta
If FWAlertYesNo("Deseja utilizar as Funções (clique em Sim) ou deseja utilizar os métodos (clique em Não)?", "Atenção")
fUsaFuncao()
Else
fUsaMetodo()
EndIf
FWRestArea(aArea)
Return
Static Function fUsaFuncao()
Local aPergs := {}
Local cDescri := FWFldGet("DA0_DESCRI")
//Adicionando os parametros que serão digitados
aAdd(aPergs, {1, "Descrição", cDescri, "", "NaoVazio()", "", ".T.", 80, .T.})
If ParamBox(aPergs, "Informe os parâmetros", , , , , , , , , .F., .F.)
//Atualiza o valor
cDescri := MV_PAR01
FwFldPut("DA0_DESCRI", cDescri)
EndIf
Return
Static Function fUsaMetodo()
Local aPergs := {}
Local oModelPad := FWModelActive()
Local cDescri := oModelPad:GetValue("DA0MASTER", "DA0_DESCRI")
//Adicionando os parametros que serão digitados
aAdd(aPergs, {1, "Descrição", cDescri, "", "NaoVazio()", "", ".T.", 80, .T.})
If ParamBox(aPergs, "Informe os parâmetros", , , , , , , , , .F., .F.)
//Atualiza o valor
cDescri := MV_PAR01
oModelPad:SetValue("DA0MASTER", "DA0_DESCRI", cDescri)
EndIf
Return
/*/{Protheus.doc} User Function OMSA010
Ponto de Entrada no Cadastro de Tabelas de Preço
@author Daniel Atilio
@since 28/02/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
*-------------------------------------------------*
Por se tratar de um p.e. em MVC, salve o nome do
arquivo diferente, por exemplo, OMSA010_pe.prw
*-----------------------------------------------*
A documentacao de como fazer o p.e. esta disponivel em https://tdn.totvs.com/pages/releaseview.action?pageId=208345968
Associe "FORM" com banco de dados, com ModelDef
Associe "MODEL" com visualização, com ViewDef
@see http://autumncodemaker.com
/*/
User Function OMSA010()
Local aArea := FWGetArea()
Local aParam := PARAMIXB
Local xRet := .T.
Local oObj := Nil
Local cIdPonto := ""
Local cIdModel := ""
//Se tiver parametros
If aParam != Nil
//Pega informacoes dos parametros
oObj := aParam[1]
cIdPonto := aParam[2]
cIdModel := aParam[3]
//Para a inclusao de botoes na ControlBar
If cIdPonto == "BUTTONBAR"
xRet := {}
aAdd(xRet, {"* Atualizar Descrição", "", {|| u_zExe219()}, "Atu. Descr"})
EndIf
EndIf
FWRestArea(aArea)
Return xRet
Bom pessoal, por hoje é só.
Abraços e até a próxima.