No vídeo de hoje, vamos demonstrar em como modificar as colunas exibidas em uma FWmBrowse.
A dúvida de hoje, nos perguntaram, se seria possível em uma FWmBrowse modificar as colunas, seja a ordem delas, inibindo outras ou exibindo sem ter haver com o X3_BROWSE.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar em como usar os métodos SetOnlyFields e SetFields.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "Totvs.ch"
/*/{Protheus.doc} User Function zVid0130
Exemplo de como exibir apenas algumas colunas no Browse
@author Atilio
@since 06/03/2024
@version 1.0
@type function
/*/
User Function zVid0130()
Local aArea := FWGetArea()
Local oBrowse
Local aColunas := {}
Private aRotina := {}
Private cCadastro := "Cadastro de Produtos"
//Definicao do menu
aRotina := FWLoadMenuDef("MATA010")
//Adiciona as colunas que vão ser apresentadas no browse
aAdd(aColunas, { 'Código', 'B1_COD', 'C', TamSX3('B1_COD')[1], 0, ''})
aAdd(aColunas, { 'Código Barras', 'B1_CODBAR', 'C', TamSX3('B1_CODBAR')[1], 0, ''})
aAdd(aColunas, { 'Unid.Med.', 'B1_UM', 'C', TamSX3('B1_UM')[1], 0, ''})
aAdd(aColunas, { 'Tipo', 'B1_TIPO', 'C', TamSX3('B1_TIPO')[1], 0, ''})
aAdd(aColunas, { 'Descrição', 'B1_DESC', 'C', TamSX3('B1_DESC')[1], 0, ''})
//Instanciando o browse
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("SB1")
oBrowse:SetDescription(cCadastro)
oBrowse:DisableDetails()
//Primeiro forçamos a mostrar apenas o campo de Filial, para depois definir quais campos queremos mostrar
oBrowse:SetOnlyFields({"B1_FILIAL"})
oBrowse:SetFields(aColunas)
//Ativa a Browse
oBrowse:Activate()
FWRestArea(aArea)
Return Nil
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Bom dia Daniel,
Existe alguma possibilidade de exibir campo de outra tabela, mas que possui vínculo com a tabela principal? Exemplo do Cadastro de Produtos (SB1) que possui a tabela de complemento SB5. É possível exibir no browse as colunas da SB1 conforme seu exemplo, mas também acrescentar algum campo da SB5?
Bom dia Mardyore, tudo joia?
Sim, através do seguinte procedimento, por exemplo, supondo que você queira exibir a descrição do grupo (BM_DESC), o passo a passo seria:
1. Criar um campo no cadastro de produtos, com o contexto Virtual, com o mesmo tamanho do campo de descrição do grupo, vamos chamar ele de B1_X_GRDES
2. Em seguida, na aba de opções, no Inic Browse, você coloca a função Posicione, para buscar a informação da SBM, conforme o B1_GRUPO cadastrado, ficando:
Posicione('SBM', 1, FWxFilial('SBM') + SB1->B1_GRUPO, 'BM_DESC')3. Deixe o campo com a opção “Browse” marcada
4. Após incluir o campo, basta fechar e abrir o sistema, agora ao abrir o cadastro de produtos, ele vai posicionar na SBM e trazer a informação da descrição para o campo novo criado
Obs.: Fiz o exemplo usando a SBM (Grupo de Produtos), mas você pode adaptar para usar a SB5 ou SBZ
Tenha uma ótima e abençoada terça feira.
Um forte abraço.