FWBreadCrumb

Descrição

Classe responsável por construir um track de rotinas

 

Compatível Países:

Todos

Sistemas Operacionais:

Todos

Compatível às Bases de Dados:

Todos

Nível de Acesso:

Nível 1 (Acesso Clientes)

Idiomas:

Português, Inglês, Espanhol

Versão/Release

12

 

 

New

Sintaxe

FWBreadCrumb():New( <oOwner>, [<lForce>] )-> Objeto FWBreadCrumb

 

Descrição

Método para instanciar a classe

 

Parâmetros

 

Nome

Tipo

Descrição

Default

Obrigatório

Referência

oOwner

Objeto

Container em que o BreadCrumb será criado.

 

 

lForce

Lógico

Força a atualização do path no click

.T.

 

 

Activate

Sintaxe

FWBreadCrumb():Activate()

 

Descrição

Método responsável pela ativação do objeto e criação de componentes visuais.

 

Deactivate

Sintaxe

FWBreadCrumb():Deactivate()

 

Descrição

Método responsável por desativar a classe.

 

SetPath

Sintaxe

FWBreadCrumb():SetPath( <aPath> )

 

Descrição

Método para atribuir o caminho a ser exibido


Parâmetros

Nome

Tipo

Descrição

Default

Obrigatório

Referência

aPath

Array

Array de itens a serem exibidos, deve ter a seguinte extrutura
[1] ID
[2] Titulo

 

 

SetAction

Sintaxe

FWBreadCrumb():SetAction( [<bAction>] )

 

Descrição

Método para setar a ação sempre que os itens forem clicados

Nome

Tipo

Descrição

Default

Obrigatório

Referência

bAction

Bloco de Código

Bloco de código a ser disparado no clique dos itens

 {|| }

 

 

SetRoot

Sintaxe

FWBreadCrumb():SetRoot( <cID> , <cTitle> )

 

Descrição

Método para atribuir o id e o titulo do item raiz

Nome

Tipo

Descrição

Default

Obrigatório

Referência

cID

Caracter

Identificação do item raiz

 

X

 

 

cTitle

Caracter

Título a ser exibido do item raiz

 

X

 

 

 

 

 

 

Fonte de exemplo: ExFWBreadCrumb.prw
Exemplo
#include 'protheus.ch'
//-------------------------------------------------------------------
/*/{Protheus.doc} ExFWBreadCrumb
Função de exemplo para o componente FWBreadCrumb
	
@see FWBreadCrumb
@author arthur.fucher
@since 29/12/2015
@version 1.0
/*/
//-------------------------------------------------------------------
User Function ExFWBreadCrumb()
Local oDlg
Local oBreadCrumb
Local aLevel := {}
Local oHeader
Local oMainPanel
Local oSay
Local oButton
DEFINE MSDIALOG oDlg FROM 000,000 TO 600,800 PIXEL
	
	//-------------------
	//Criação do paineis
	//-------------------
	oHeader       := tPanel():New(01,01,,oDlg,,,,,,100,20)
	oHeader:Align := CONTROL_ALIGN_TOP
	oMainPanel       := tPanel():New(01,01,,oDlg,,,,,,100,20)
	oMainPanel:Align := CONTROL_ALIGN_ALLCLIENT
	
	//---------------------
	//Criação do BreadCrumb
	//---------------------
	oBreadCrumb := FWBreadCrumb():New(oHeader)
	oBreadcrumb:SetAction( {|x| SetLevel( x , aLevel , oSay , oButton) } )
	oBreadcrumb:Activate()
	
	//Criação de conteúdo
	oSay:= TSay():New(01,01,{||'Texto para exibição I'},oMainPanel,,,,,,.T.,,,200,20)
	oButton := TButton():New( 20, 20, "Next",oMainPanel,{| x | nextLevel( oSay , oBreadCrumb , aLevel, oButton)}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. ) 
	
ACTIVATE MSDIALOG oDlg CENTERED
Return 
//-------------------------------------------------------------------
/*/{Protheus.doc} SetLevel
Função auxiliar para tratamento quando o clique do BreadCrumb é disparado
	
@param cID     ID do item do BreadCrumb
@param aLevel  Array com itens do path do BreadCrumb
@param oSay    Objeto TSay da tela
@param oButton Objeto TButton da tela
@author arthur.fucher
@since 29/12/2015
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function SetLevel( cID , aLevel, oSay, oButton)
Local nPos := AScan( aLevel , { |aItem| aItem[1] == cID } )
	
	//--------------------------------------------------
	//Redimensiona o array de acordo com o item clicado
	//--------------------------------------------------
	If nPos > 0
		aLevel := ASize( aLevel , nPos )
	ElseIf cID == "HOME" //DEFAULT do BREADCRUMB
		aLevel := ASize( aLevel , 0 )
	EndIf
	//Altera o texto do TSay para o contexto
	oSay:SetText( cID )
	//Apresenta o botão novamente
	oButton:Show()
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} nextLevel
Função auxiliar para ir para o próximo nível do BreadCrumb
	
@param oSay        Objeto TSay da tela
@param oBreadCrumb Objeto FWBreadCrumb da tela
@param aLevel      Array com itens do path do BreadCrumb
@param oButton     Objeto TButton da tela
@author arthur.fucher
@since 29/12/2015
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function nextLevel( oSay , oBreadCrumb , aLevel , oButton )
Local cLevel := cValToChar(Len(aLevel))
//------------------------------------
//Definido um nível para ser o máximo
//------------------------------------
If cLevel == "7"
	oButton:Hide()
Else
	//Adiciona o novo nível no Array
	AAdd( aLevel , { cLevel , "Titulo" + cLevel } )
	
	//Altera o path do BreadCrumb
	oBreadcrumb:SetPath( aLevel )
	
	//Altera o texto do TSay para o contexto
	oSay:SetText(cLevel)
EndIf
Return