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.