Nesse vídeo demonstraremos a utilização da função FWExecView, que serve para abrir uma tela em MVC.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" #Include "FWMVCDef.ch" /*/{Protheus.doc} User Function zExe216 Exemplo de função que abre uma tela em MVC @type Function @author Atilio @since 20/02/2023 @see https://tdn.totvs.com/display/public/framework/FWExecView @obs Função FWExecView Parâmetros + cTitulo , Caractere , Título da Janela + cPrograma , Caractere , Nome do programa em MVC + nOperation , Numérico , Indica a operação se é inclusão (3); alteração (4) ou exclusão (5) + oDlg , Objeto , Parâmetro descontinuado + bCloseOnOK , Bloco de Código , Bloco de código acionado no fechamento da janela + bOk , Bloco de Código , Bloco de código acionado na validação ao clicar em Confirmar + nPercReducao , Numérico , Percentual de redução do tamanho da Janela + aEnableButtons , Array , Botões que serão habilitados na Janela + bCancel , Bloco de Código , Bloco de código na validação ao clicar em Cancelar / Fechar + cOperatId , Caractere , Identificação da operação (usado quando tem mais de um 4 no nOperation no programa MVC) + cToolBar , Caractere , Indica o relacionamento dos botões com a tela + oModelAct , Objeto , Model instanciado que será usado pela View Retorno + nValor , Numérico , 0 se foi clicado em Ok e 1 se foi clicado em Cancelar **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe216() Local aArea := FWGetArea() Local cFunBkp := FunName() DbSelectArea('SA2') SA2->(DbSetOrder(1)) //Filial + Código + Loja //Se conseguir posicionar If SA2->(DbSeek(FWxFilial('SA2') + "F00002")) SetFunName("MATA020") FWExecView('Visualizacao Teste', 'MATA020', MODEL_OPERATION_VIEW) SetFunName(cFunBkp) EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Excelente o exemplo e a explicação.
gostaria de saber se tem um exemplo para abrir outra rotina MVC por cima da principal, por exemplo pelo Outras Ações, quando faço isso as legendas, visualização e outras ações permanecem da tela mvp principal.
Bom dia Felipe, tudo joia?
Opa, primeiramente obrigado pelo feedback.
Então, recentemente perguntaram algo parecido no nosso grupo do WhatsApp, segue a resposta que enviamos na ocasião:
[…]
Supondo então que você precise acionar outra rotina em MVC por cima de uma, o que acontece que é a aRotina e outras variáveis ficarão com o conteúdo da principal.
Para isso, o ideal é você fazer um backup da função e depois restaurar ela, por exemplo, supondo que você esteja na MATA010 (produtos), ai quer abrir o cadastro de clientes (CRMA980) através do Outras Ações. Sendo que ambas as rotinas são em MVC, como funcionaria?
1. Você teria uma User Function que você vai adicionar no Outras Ações
2. Dentro dessa User Function, você faz um backup da rotina atual (MATA010), pegando FunName em uso
3. Ai você muda a função para a de cadastro de clientes (define FunName como CRMA980)
4. Aciona o cadastro de clientes
5. Ai quando o usuário fechar o cadastro de clientes, você volta o backup feito no passo 2, algo mais ou menos como a lógica abaixo
User Function zTstCli()
Local aArea := FWGetArea()
Local cBkpFun := FunName()
//Define a função como a de clientes, e aciona ela em seguida (dessa forma vai carregar o menu e as informações corretamente)
SetFunName(“CRMA980”)
CRMA980()
//Volta o backup
SetFunName(cBkpFun)
FWRestArea(aArea)
Return
[…]
Um grande abraço.