Advpl mbrowe e FWMarkBrowse

Pessoal chamo uma segunda tela em MVC sendo que a primeira [PFAT002] usa a função mbrowse. Quando chamo a segunda tela do menu os botões aparecem. Tem um video em anexo.

A segunda tela [PFAT022] trabalho com FWMarkBrowse. Podem me ajudar com alguma orientação.

Em anexo tem os fontes e video.

Rhander

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Boa tarde!

Quando existe a variável privada aRotina declarada em algum fonte, todas as rotinas de browse (mBrowse -> FwMBrowse, MarkBrowse -> FwMarkBrowse) abertas a seguir irão utilizar essa variável para criação dos botões.

A rotina PFAT022 está "herdando" os botões da PFAT002 pois dentro da PFAT022 não existe uma variável aRotina ou a função MenuDef.

Existem duas formas de corrigir este problema.

1) Crie a função estática MenuDef em ambos os fontes, de forma que ele retorne um array de opções igual ao aRotina. Em ambos os browses, utilize o método SetMenuDef e informe o nome do fonte em questão. Este método irá criar os botões e não será necessário trabalhar com a variável private aRotina.

2) Trabalhando com a variável privada aRotina ao invés de MenuDef, você terá que realizar uma tratativa sempre que abrir e fechar uma rotina chamadada através de outra. Exemplo:


Local aRotBkp    As Array

// Avalia se o aRotina existe
If(Type('aRotina') == 'A')

    // Guarda o conteúdo atual do aRotina
    aRotBkp    := aRotina

    // Limpa ou refaz o aRotina
    aRotina    := Nil

EndIf

// defina seu browse e faça seus processamentos

// Avalia se foi feito backup do aRotina
If(ValType(aRotBkp) == 'A')

    // Retorna o conteúdo anterior do aRotina
    aRotina    := aRotBkp

EndIf

Sobre o MenuDef: https://tdn.totvs.com/display/public/framework/MenuDef

Documentação do método SetMenuDef: https://tdn.totvs.com/display/public/framework/FWMarkBrowse