Como criar visão em um Browse


Acredito que alguns de vocês já tenham percebido o uso de visões e gráficos em certas rotinas do sistema, no caso da visão, ela ficará ao lado do titulo, na parte superior da janela e no caso de gráficos, ficará do lado direito do seu browse. A inclusão de visões e gráficos, são bem simples, no exemplo que irei postar, demonstrarei como é fácil fazê-lo. fwdsviewxfwdschart-tela1 [gallery columns="2" size="medium" link="none" ids="3186,3185"] Para habilitar as visões em uma rotina utilize o método SetAttach(.T.) da FWMBrowse. oBrowse:SetAttach( .T. ) oBrowse:SetOpenChart( .T. ) //Define se o gráfico virá aberto ou oculto no carregamento do browse Após habilitado, são adicionados dois menus no browse. Um para acesso às visões e um para acesso aos gráficos Um breve resumo...

Menu de Visões

Este menu é exibido no topo do browse com a descrição da visão ativa. O menu oferece as seguintes possibilidades:

Menu de Gráficos

A área do gráfico está do lado direito do browse com um separador que permite expandir ou retrair a área. O menu dos gráficos é exibido no topo da área com a descrição do gráfico ativo. O menu oferece as seguintes possibilidades: Para criar uma visão, será necessário criar um objeto do tipo FWDSView para cada visão. Métodos obrigatórios para uma visão: setID( cID ) setName( cName ) setOrder( nOrder ) setCollumns( aCollumns ) setPublic( lPublic ) ou setUser( cUser ) Agora, para criarmos um gráfico é necessário anexá-lo ao browse, deve-se criar um objeto FWDSChart para cada gráfico e passa-los para o browse em um array através do método SetChartsDefault( aCharts ). Métodos obrigatórios para um gráfico: setID( cID ) setName( cName ) setTitle( cTitle ) setCollumns( aCollumns ) setType( cType ) setCategory( aCategory ) ou setPeriod( aPeriod ) setPublic( lPublic ) ou setUser( cUser ) Agora vamos ao código fonte:
//Vou incluir algumas bibliotecas
#INCLUDE "PROTHEUS.CH"
#INCLUDE 'FWBROWSE.CH'
 
User Function Exemplo5()
 Local cFiltro := ""
 Local oBrowse 
 Local oFinalizado
 Private cAlias := "ZZL"
 Private cCadastro := "Exemplo usando Visão"
 
 oFinalizado := FWDSView():New()
 //Métodos obrigatórios para uma visão
 oFinalizado:SetID("PROJETOS1") 
 oFinalizado:SetName("Projetos Finalizados") 
 //Defino quais colunas da minha tabela deverão ser apresentadas
 oFinalizado:SetCollumns({"ZZL_PROJET","ZZL_CODPAI","ZZL_PEDVEN","ZZL_ITEMPV","ZZL_PESO","ZZL_NOTA","ZZL_SERIE","ZZL_STATUS"})
 //Defino a ordem
 oFinalizado:SetOrder(1) 
 oFinalizado:SetPublic(.T.)
 //Incluo uma visão com filtro
 oFinalizado:AddFilter( "Projetos Finalizados" , 'ZZL->ZZL_STATUS == "F"' ) 

 oDSChart := FWDSChart():New()
 
 //Métodos obrigatórios para um gráfico
 oDSChart:SetID("ZZL001") 
 oDSChart:SetName("Projeto x Pedido")
 oDSChart:setTitle( "Projeto x Pedido" ) 
 //Define as categorias (eixo x) do gráfico
 oDSChart:setCategory({ {"SC5", "C5_NUM"} })
 //Define o Tipo de gráfico "BARCHART", "BARCOMPCHART", "LINECHART" ou "PIECHART".
 oDSChart:SetType("BARCOMPCHART")
 //Define as séries do gráfico
 oDSChart:setSeries({ {"ZZL","ZZL_PROJET","COUNT"} })
 // Define se será visível por todos os usuários. Se .F., somente o usuário definido em setUser() poderá utilizar a visão.
 oDSChart:SetPublic(.T.)
 // Alinhamento da legenda CONTROL_ALIGN_CENTER, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_RIGHT
 oDSChart:SetLegend(CONTROL_ALIGN_BOTTOM )
 // Alinhamento do título CONTROL_ALIGN_NONE, CONTROL_ALIGN_LEFT, CONTROL_ALIGN_TOP, CONTROL_ALIGN_RIGHT, CONTROL_ALIGN_BOTTOM 
 oDSChart:SetTitleAlign(CONTROL_ALIGN_CENTER)
 oDSChart:SetMask("@E")
 oDSChart:SetPicture("9999999") 
 
 chkFile(cAlias) //Abertura da tabela

 dbSelectArea(cAlias)
 (cAlias)->(dbSetOrder(2))

 oBrowse := FWmBrowse():New()
 oBrowse:SetAlias( cAlias )
 oBrowse:SetDescription( cCadastro ) 
 oBrowse:SetFilterDefault( cFiltro ) 
 oBrowse:SetViewsDefault({oFinalizado}) //define o metodo da visão
 oBrowse:SetChartsDefault( {oDSChart} ) //define o metodo do grafico
 oBrowse:SetAttach( .T. ) //habilita a visão
 oBrowse:SetOpenChart( .T. ) //Define se o gráfico virá aberto ou oculto no carregamento do browse 
 oBrowse:Activate()

 (cAlias)->(dbCloseArea())

Return