FWMBrowse x Tabela Temporária x SX5

Blog Advpl - Share knowledge

FWMBrowse x Tabela Temporária x SX5

O exemplo a seguir, é uma demonstração do uso do componente FWMBrowse com alias temporário usando a tabela SX5.

Usaremos apenas os includes TOTVS.CH e FWMVCDEF.CH

#include "totvs.ch"
#INCLUDE "FWMVCDEF.CH"

user function AGPE001()
    //Declarar variaveis locais
    Local aSeek   	:= {}
    Local aFields 	:= {}
    Local aIndex  	:= {}
    Local aFieFilter:= {}
    //Declarar variaveis privadas
    Private oBrowse 	:= Nil
    Private cCadastro := "Cadastro de Gestores"
    Private aRotina	 	:= Menudef()
    
    //Cria e popula a tabela temporária
    AGPE001TRB()

    //Campos que serão exibidos no browse
    Aadd(aFields,{"Tabela"		,"X5_TABELA" 	,TamSx3("X5_TABELA")[3] ,TamSx3("X5_TABELA")[1] ,TamSx3("X5_TABELA")[2] ,PESQPICT("SX5","X5_TABELA")})
    Aadd(aFields,{"Código"		,"X5_CHAVE"    	,TamSx3("X5_CHAVE")[3]  ,TamSx3("X5_CHAVE")[1]  ,TamSx3("X5_CHAVE")[2]  ,PESQPICT("SX5","X5_CHAVE")})
    Aadd(aFields,{"Nome"		,"X5_DESCRI"	,TamSx3("X5_DESCRI")[3]	,TamSx3("X5_DESCRI")[1]	,TamSx3("X5_DESCRI")[2]	,PESQPICT("SX5","X5_DESCRI")})
    Aadd(aFields,{"Localidade"	,"X5_DESCSPA"	,TamSx3("X5_DESCSPA")[3],3,0,PESQPICT("SX5","X5_DESCSPA")})
    Aadd(aFields,{"Desc.Local"	,"X5_DESCENG"	,TamSx3("X5_DESCENG")[3],TamSx3("X5_DESCENG")[1],TamSx3("X5_DESCENG")[2],PESQPICT("SX5","X5_DESCENG")})

    //Campos que irão compor a tela de filtro
    Aadd(aFieFilter,{"X5_CHAVE"		, "Código"  	, "C", TamSx3("X5_CHAVE")[1]  , 0,PESQPICT("SX5","X5_CHAVE")})
    Aadd(aFieFilter,{"X5_DESCRI"	, "Nome"		, "C", TamSx3("X5_DESCRI")[1] , 0,PESQPICT("SX5","X5_DESCRI")})
    Aadd(aFieFilter,{"X5_DESCSPA"	, "Localidade"	, "C", TamSx3("X5_DESCSPA")[1], 0,PESQPICT("SX5","X5_DESCSPA")})

    DbSelectArea("TRB")
    dbGoTop()

    //Campo da pesquisa
    Aadd(aSeek  , {"Código"		, {{"","C", TamSx3("X5_CHAVE")[1]	, TamSx3("X5_CHAVE")[1]	 , 1, "X5_CHAVE"}} } )
    Aadd(aSeek  , {"Nome"		, {{"","C", TamSx3("X5_DESCRI")[1]	, TamSx3("X5_DESCRI")[1] , 2, "X5_DESCRI"}} } )
    Aadd(aSeek  , {"Localidade"	, {{"","C", TamSx3("X5_DESCSPA")[1]	, TamSx3("X5_DESCSPA")[1], 3, "X5_DESCSPA"}} } )

    //Indice de pesquisa
    Aadd( aIndex, "X5_CHAVE" )
    Aadd( aIndex, "X5_DESCRI" )
    Aadd( aIndex, "X5_DESCSPA" )

    //aStruct := TRB->(DBStruct())
    //aStructCon := aClone(aStruct)

    oBrowse := FWMBrowse():New()
    oBrowse:SetDescription( cCadastro )
    oBrowse:SetAlias("TRB")
    oBrowse:SetQueryIndex(aIndex)
    oBrowse:SetTemporary(.T.)
    oBrowse:SetSeek(,aSeek)
    oBrowse:SetFields(aFields)
    oBrowse:SetTemporary(.T.)
    oBrowse:DisableConfig()
    oBrowse:SetFieldFilter(aFieFilter)
    oBrowse:SetFilterDefault("")
    oBrowse:SetDBFFilter(.T.)
    oBrowse:SetUseFilter(.T.)
    oBrowse:SetLocate()
    oBrowse:ForceQuitButton()
    oBrowse:Activate()
Return

 

Criamos aqui os menus que serão apresentados

Static Function MenuDef()
    Local aRotina := {}
    ADD OPTION aRotina Title 'Pesquisar' 	Action 'PesqBrw'    OPERATION 1 ACCESS 0
    ADD OPTION aRotina Title 'Visualizar'   Action 'U_AGPE001A(2)' 	OPERATION 2 ACCESS 0
    ADD OPTION aRotina Title 'Incluir'      Action 'U_AGPE001A(3)' 	OPERATION 3 ACCESS 0
    ADD OPTION aRotina Title 'Alterar'      Action 'U_AGPE001A(4)' 	OPERATION 4 ACCESS 0
    ADD OPTION aRotina Title 'Excluir'      Action 'U_AGPE001A(5)'	OPERATION 5 ACCESS 0
Return( aRotina )

continua página 2