Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Criada documentação e colocado fonte de exemplo.
Sintaxe

FWTemporaryTable():SetFields( <aFields> )

 

Descrição

Define os campos da estrutura.

Array com estrutura de campos:
[1] Nome
[2] Tipo
[3] Tamanho
[4] Decimal

 

X

 

Painel
bgColorWhite
titleFWBreadCrumb

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

 

 

Painel
titleNew

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

Array com estrutura de campos:
[1] Nome
[2] Tipo
[3] Tamanho
[4] Decimal

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

.T.{}

 

 

Painel
titleCreate

Sintaxe

FWTemporaryTableFWBreadCrumb():CreateActivate()

 

Descrição

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

 

Painel
titleDelete

Sintaxe

FWTemporaryTableFWBreadCrumb():DeleteDeactivate()

 

Descrição

Método responsável por efetuar a exclusão da tabela, e fechar o aliasdesativar a classe.

 

Painel
titleAddIndex

Sintaxe

FWTemporaryTableFWBreadCrumb():AddIndexSetPath( <cIndexName>, <aFields> <aPath> )

 

DescriçãoAdiciona um índice na tabela. 

Método para atribuir o caminho a ser exibido


Parâmetros

Nome

Tipo

Descrição

Default

Obrigatório

Referência

cIndexName

Caracter

Nome do índice

 

 

aPath

aFields

Array

Array com os campos a serem utilizados no índice:de itens a serem exibidos, deve ter a seguinte extrutura
[1] ID
[2] NomeTitulo

 

 

Painel
titleGetRealName

Sintaxe

FWTemporaryTableFWBreadCrumb():GetRealNameSetAction( [<bAction>] ) -> cRealName

 

Descrição

Retorna o nome com o qual a tabela foi criada no BD. 

Painel
titleInsertSelect

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

Sintaxe

FWTemporaryTable():InsertSelect( <cTableFrom> , <aFieldsFrom> )

 

Descrição

Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT.
Este método deve ser utilizado quando todos os campos da estrutura da tabela serão preenchidos.

cTableFrom

Nome

Tipo

Descrição

Default

Obrigatório

Referência

bAction

Caracter

Tabela da qual os valores serão carregados.

 

X

 

 

aFieldsFrom

Array

Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga

 

Bloco de Código

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

 {|| }

 X

 

Painel
titleInsertIntoSelectInsertSelect

Sintaxe

FWTemporaryTableFWBreadCrumb():InsertIntoSelectSetRoot( <aFieldsTo><cID> , <cTableFrom> , <aFieldsFrom> <cTitle> )

 

Descrição

Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT.
Este método deve ser utilizado quando somente alguns campos da estrutura da tabela serão preenchidos.

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

Array contendo o nome dos campos da tabela que deverão ser preenchidoscTableFrom
Nome

Tipo

Descrição

Default

Obrigatório

Referência

aFieldsTocIDArray

Caracter

Identificação do item raiz

 

X

 

Caracter

Tabela da qual os valores serão carregados.

 X

cTitle

 

Caracter

Título a ser exibido do item raiz

aFieldsFrom

Array

Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga

 

X

 
Painel
titleGetAlias

Sintaxe

FWTemporaryTable():GetAlias( ) -> cAlias

 

Descrição

Retorna o alias utilizado pelo arquivo.

Painel
titleSetFields
Nome

Tipo

Descrição

Default

Obrigatório

Referência

aFieldsArray

 

Fonte de exemplo: ExFWTemporaryTableExFWBreadCrumb.prw
Bloco de código
languagecpp
themeEclipse
firstline1
titleExemplo
linenumberstrue
collapsetrue
#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 ExFWTemporaryTableExFWBreadCrumb()
Local aFieldsoDlg
Local oBreadCrumb
Local aLevel := {}
Local oHeader
Local oTempTableoMainPanel
Local nIoSay
Local cAlias := "MEUALIAS"
Local cQuery
 oButton
DEFINE MSDIALOG oDlg FROM 000,000 TO 600,800 PIXEL
	
	//-------------------
	//Criação do objetopaineis
	//-------------------
oTempTable	oHeader       := FWTemporaryTabletPanel():New( cAlias )
//-----01,01,,oDlg,,,,,,100,20)
	oHeader:Align := CONTROL_ALIGN_TOP
	oMainPanel       := tPanel():New(01,01,,oDlg,,,,,,100,20)
	oMainPanel:Align := CONTROL_ALIGN_ALLCLIENT
	
	//---------------------
	//MontaCriação os campos da tabela
do BreadCrumb
	//--------------------------
aadd(aFields,{"DESCR","C",30,0})
aadd(aFields,{"CONTR","N",3,1})
aadd(aFields,{"ALIAS","C",3,0})
oTemptable:SetFields( aFields )
oTempTable:AddIndex("indice1", {"DESCR"} )
oTempTable:AddIndex("indice2", {"CONTR", "ALIAS"} )
//
	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 
//-------------------------------------
//Criação da tabela
//------------------------------
oTempTable:Create()

conout("Executando a cópia dos registros da tabela: " + RetSqlName("CT0") )
//------/*/{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
/*/
//--------------------------------------------------------------------
//CasoStatic oFunction INSERTSetLevel( INTOcID SELECT, preencha todos os campos, este será um método facilitador
//Caso contrário deverá ser chamado o InsertIntoSelect():
 // oTempTable:InsertIntoSelect( {"DESCR", "CONTR" } , RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR" } )
//aLevel, oSay, oButton)
Local nPos := AScan( aLevel , { |aItem| aItem[1] == cID } )
	
	//--------------------------------------------------
	//Redimensiona o array de acordo com o item clicado
	//--------------------------------------------------
oTempTable:InsertSelect( RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR", "CT0_ALIAS" } )
	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
//-------------------------------------------------------------------
//Executa query para leitura da tabela
//*/{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
/*/
//-------------------------------------------------------
cQuery := "select * from "+ oTempTable:GetRealName()
MPSysOpenQuery( cQuery, 'QRYTMP' )
DbSelectArea('QRYTMP')
while !eof()
	for nI := 1 to fcount()
		varinfo(fieldname(nI),fieldget(ni))
	next
	dbskip()
Enddo
	
//------------
Static Function nextLevel( oSay , oBreadCrumb , aLevel , oButton )
Local cLevel := cValToChar(Len(aLevel))
//------------------------------------
//Exclui a tabela Definido um nível para ser o máximo
//------------------------------------
oTempTable:Delete() 

return
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