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
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