FWmBrowse com ordenação diferente de 1 por default | Ti Responde 0245

No vídeo de hoje, vamos demonstrar em como já trazer um browse com uma ordenação diferente do índice 1.

A dúvida de hoje, nos perguntaram, como poderíamos criar um browse e ele já vir ordenado com outro índice.

Pensando nisso, montamos um exemplo, onde usamos um temporizador logo ao abrir o browse, e depois usamos o ChangeOrder junto com a execução do bButtonHome.

Segue abaixo o vídeo exemplificando:

Abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "Totvs.ch"
#Include "FWMVCDef.ch"

//Variveis Estaticas
Static cTitulo := "Grupo de Produtos"
Static cAliasMVC := "SBM"

/*/{Protheus.doc} User Function zVid0245
Exemplo de como mudar a ordenação de um browse via fonte
@author Atilio
@since 07/03/2026
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

User Function zVid0245()
	Local aArea   := FWGetArea()
	Private oBrowse
	Private aRotina := {}

	//Definicao do menu
	aRotina := MenuDef()

	//Instanciando o browse
	oBrowse := FWMBrowse():New()
	oBrowse:SetAlias(cAliasMVC)
	oBrowse:SetDescription(cTitulo)
	oBrowse:DisableDetails()

	//Adicionando as Legendas
	oBrowse:AddLegend( "SBM->BM_PROORI == '1'", "CHECKED",      "Procedência Original" )
	oBrowse:AddLegend( "SBM->BM_PROORI == '0'", "BLACK",        "Procedência Não Original" )
	oBrowse:AddLegend( "EMPTY(SBM->BM_PROORI)", "BR_CANCEL",    "Sem Procedência Cadastrada" )

    //Define o temporizador para rodar 1s após abrir a tela
	oBrowse:SetTimer({|| fMudaIndice()}, 1000)

	//Ativa a Browse
	oBrowse:Activate()

	FWRestArea(aArea)
Return Nil

/*/{Protheus.doc} MenuDef
Menu de opcoes na funcao zVid0245
@author Atilio
@since 07/03/2026
@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
	ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.zVid0245" OPERATION 1 ACCESS 0

Return aRotina

/*/{Protheus.doc} ModelDef
Modelo de dados na funcao zVid0245
@author Atilio
@since 07/03/2026
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function ModelDef()
	Local oStruct := FWFormStruct(1, cAliasMVC)
	Local oModel
	Local bPre := Nil
	Local bPos := Nil
	Local bCommit := Nil
	Local bCancel := Nil


	//Cria o modelo de dados para cadastro
	oModel := MPFormModel():New("zVid160M", bPre, bPos, bCommit, bCancel)
	oModel:AddFields("SBMMASTER", /*cOwner*/, oStruct)
	oModel:SetDescription("Modelo de dados - " + cTitulo)
	oModel:GetModel("SBMMASTER"):SetDescription( "Dados de - " + cTitulo)
	oModel:SetPrimaryKey({})
Return oModel

/*/{Protheus.doc} ViewDef
Visualizacao de dados na funcao zVid0245
@author Atilio
@since 07/03/2026
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/

Static Function ViewDef()
	Local oModel := FWLoadModel("zVid0245")
	Local oStruct := FWFormStruct(2, cAliasMVC, {|x| Alltrim(x) + ";" $ "BM_GRUPO;BM_DESC;BM_PROORI;BM_STATUS;"})
	Local oView

	//Cria a visualizacao do cadastro
	oView := FWFormView():New()
	oView:SetModel(oModel)
	oView:AddField("VIEW_SBM", oStruct, "SBMMASTER")
	oView:CreateHorizontalBox("TELA" , 100 )
	oView:SetOwnerView("VIEW_SBM", "TELA")

Return oView

Static Function fMudaIndice()
    //Desativa o temporizador
    oBrowse:SetTimer({|| Nil}, 300000)
    oTimer := oBrowse:GetTimer()
    oTimer:DeActivate()

    //Define como índice 2 o padrão ao abrir
    oBrowse:GetSeek():ChangeOrder(2)

    //Executa a ação de voltar ao começo do browse (apertar botão -home- do teclado)
    eVal(oBrowse:oBrowseUI:bButtonHome)
Return

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.

Deixe uma resposta

Terminal de Informação