No vídeo de hoje vamos demonstrar em como adicionar legendas numa função padrão onde não tem ponto de entrada para manipular o browse.
A dúvida de hoje foi feita pelo grande Alexandre, onde ele questionou se haveria a possibilidade de adicionar legendas na tela de fornecedores.
Então demonstramos como fazer interceptando o browse através da função FWmBrwActive e depois como manipular as informações (foi usado o ponto de entrada genérico MBlkColor, que serve para alterar a cor de linhas bloqueadas).
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function MBlkColor
Altera a cor da linha bloqueada
@type Function
@author Atilio
@since 27/04/2022
@see http://tdn.totvs.com/display/public/mp/MBlkColor+-+Retorna+cores+a+utilizar
/*/
User Function MBlkColor()
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()
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
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Muito bom, contornou um problema com elegância e de forma assertiva.
Opa, obrigado pelo comentário mano Súlivan, é muita bondade e generosidade sua.
Um grande abraço.