Criando uma tela de navegação de registros com FWmBrowse e mBrowse – Maratona AdvPL e TL++ 230

Nesse vídeo demonstraremos a utilização da classe FWmBrowse e da função mBrowse, que servem para criar uma tela com browse de navegação de registros para poder efetuar ações (como incluir, alterar, visualizar, etc).

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe230
Exemplo de criação de browses de cadastro
@type Function
@author Atilio
@since 20/02/2023
@see https://tdn.totvs.com/display/public/framework/FWMBrowse e https://tdn.totvs.com/pages/releaseview.action?pageId=24346981
@obs 

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe230()
    Local aArea := FWGetArea()

    If FWAlertYesNo("Você deseja ver o exemplo com FWMBrowse (sim) ou com mBrowse (não)?", "Continua?")
        fExemplo1()
    Else
        fExemplo2()
    EndIf

    FWRestArea(aArea)
Return

/*/{Protheus.doc} User Function zExe230
Grupo de Produtos
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function fExemplo1()
	Local aArea   := FWGetArea()
	Local oBrowse
	Private aRotina := {}
	Private cCadastro := "Grupo de Produtos"

	//Definicao do menu
	aRotina := MenuDef()

	//Instanciando o browse
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias("SBM")
	oBrowse:SetDescription(cCadastro)
	oBrowse:DisableDetails()

	//Adicionando as Legendas
	oBrowse:AddLegend( "SBM->BM_PROORI == '1'", "BLACK",    "Pro. Ori. igual a 1" )
	oBrowse:AddLegend( "SBM->BM_PROORI == '0'", "RED",    "Pro. Ori. igual a 0" )
	oBrowse:AddLegend( "EMPTY(SBM->BM_PROORI)", "WHITE",    "Pro. Ori. vazio" )

	//Ativa a Browse
	oBrowse:Activate()

	FWRestArea(aArea)
Return Nil

/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zExe230
@author Atilio
@since 20/02/2023
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

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


Static Function fExemplo2()
	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"})

    //Faz a abertura da tela
    mBrowse(1, 1, , , 'SBM', , , , , , aCores)

	FWRestArea(aArea)
Return Nil

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. William disse:

    Boa dica Daniel.
    Será que vc conseguiria fazer um video da maratona ref a criação de uma tela de consulta de dados de histórico com uma grid ?? A dúvida que fica é, qual melhor componente grid usar?

    Vlwww

Deixe uma resposta

Terminal de Informação