Interceptando o browse com FWmBrwActive e GetObjBrow – Maratona AdvPL e TL++ 231

Nesse vídeo demonstraremos a utilização das funções FWmBrwActive e GetObjBrow, que servem para interceptar o browse aberto em memória.

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

//Bibliotecas
#Include "Totvs.ch"

/*/{Protheus.doc} User Function zExe231
Intercepta o browse aberto em memória
@type Function
@author Atilio
@since 20/02/2023
@see https://tdn.totvs.com/display/public/framework/FWmBrwActive
@obs 

    Função FWmBrwActive
    Parâmetros
        Função não tem parâmetros
    Retorno
        Retorna o objeto do browse (FWmBrowse)

    Função GetObjBrow
    Parâmetros
        Função não tem parâmetros
    Retorno
        Retorna o objeto do browse (mBrowse)

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

User Function zExe231()
    Local aArea     := FWGetArea()
    Local oBrowse   := Nil
    Local nColunas  := 0

    //Se a última tabela aberta for a de Fornecedor e vier da rotina MATA020
    If aArea[1] == 'SA2' .And. FWIsInCallStack("MATA020")
        //Intercepta o Browse - similar a antiga GetObjBrow()
        //oBrowseAnt := GetObjBrow()
        oBrowse := FWmBrwActive()
        
        //Se o Browse já estiver na memória
        If ValType(oBrowse) == "O"
            //Se não tiver legendas, irá adicionar
            If Len(oBrowse:aLegends) == 0
                oBrowse:AddLegend( "SA2->A2_TIPO == 'F'", "WHITE",  "Fisico" )
                oBrowse:AddLegend( "SA2->A2_TIPO == 'J'", "BLACK",  "Juridico" )
                oBrowse:AddLegend( "SA2->A2_TIPO == 'X'", "RED",   	"Outros" )

                //Pega o total de colunas, insere um elemento, e fala que será na posição 1
                nColunas := Len(oBrowse:aColumns)
                aSize(oBrowse:aColumns, nColunas + 1)
                aIns(oBrowse:aColumns, 1)

                //Copia a última posição (que é a legenda) para a primeira, e depois exclui ela do final
                oBrowse:aColumns[1] := oBrowse:aColumns[nColunas + 1]
                aDel(oBrowse:aColumns, nColunas + 1)
                aSize(oBrowse:aColumns, nColunas)
            EndIf
        EndIf
    EndIf

    FWRestArea(aArea)
Return

/*/{Protheus.doc} User Function MBlkColor
Altera a cor da linha bloqueada
@type  Function
@author Atilio
@since 20/02/2023
@see http://tdn.totvs.com/display/public/mp/MBlkColor+-+Retorna+cores+a+utilizar
/*/

User Function MBlkColor()
    u_zExe231()
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