Nesse vídeo demonstraremos a utilização da função MBrChgLoop, que serve para definir se um mBrowse clássico, irá ter o recurso de ser acionado em loop (similar a telas em MVC).
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "Totvs.ch" /*/{Protheus.doc} User Function zExe341 Ativa recurso para que cada inclusão acione a tela novamente (similar ao recurso que existe em MVC) @type Function @author Atilio @since 22/03/2023 @obs Função MBrChgLoop Parâmetros .T. se quiser ativar recurso em Loop e .F. se não quiser Retorno Função não tem retorno **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe341() Local aArea := FWGetArea() Local aCores := {} Private aRotina := MenuDef() Private cCadastro := "Grupo de Produtos" aAdd(aCores, {"SBM->BM_PROORI == '1'", "BR_PRETO"}) aAdd(aCores, {"SBM->BM_PROORI == '0'", "BR_VERMELHO"}) aAdd(aCores, {"EMPTY(SBM->BM_PROORI)", "BR_BRANCO"}) //Ativa o recurso para funcionar em Loop MBrChgLoop(.T.) //Faz a abertura da tela mBrowse(1, 1, , , 'SBM', , , , , , aCores) FWRestArea(aArea) Return Static Function MenuDef() Local aRotina := {} //Adicionando opcoes do menu aAdd(aRotina, {"Pesquisar", "AXPESQUI", 0, 1}) aAdd(aRotina, {"Visualizar", "AXVISUAL", 0, 2}) aAdd(aRotina, {"Incluir", "AXINCLUI", 0, 3}) aAdd(aRotina, {"Alterar", "AXALTERA", 0, 4}) aAdd(aRotina, {"Excluir", "AXDELETA", 0, 5}) Return aRotina
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Boa tarde,
É possível utilizar MbrChgLoop com uma tela MsDialog com EnchoiceBar?
Obrigado
Bom dia Leonardo, tudo joia?
A MbrChgLoop não, mas você poderia tratar manualmente no seu fonte. Algo mais ou menos no seguinte sentido:
a. Você iria criar uma variável lFazLoop como Private na sua User Function e definir ela como .T.
b. Nisso, você faria um laço de repetição para acionar a static function que monta sua dialog, por exemplo:
While lFazLoop
fAcionaSuaDialog()
EndDo
c. Dentro dessa sua Static Function, no bloco de código do botão cancelar, ai você altera a flag para .F., algo mais ou menos assim:
Local bBlocoCan := {|| lFazLoop := .F., … restante do código …}
Feito isso então, por trás o sistema vai ficar em loop sempre acionando a dialog, mas ai se o usuário clicar no cancelar, como a variável vai mudar para .F. ele vai sair do laço.
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.