Como definir para exibir apenas algumas colunas na FWmBrowse | Ti Responde 0130

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.

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.

2 Responses

  1. Mardyore disse:

    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.

Deixe uma resposta

Terminal de Informação