Descrição:

Classe utilizada para controle de relacionamento entre Browses

A classe cria um cenário onde a movimentação em um determinado browse provoca o reposicionamento do outro browse conforme o relacionamento criado.


Métodos:



New

Descrição:
Método para instanciar a classe (construtor)


Sintaxe:

FWBrwRelation():New() -> Objeto FWBrwRelation


AddRelation

Descrição:
Método que permite informar o critério de relacionamento entre os browses do tipo tabela (Query ou Alias).


Sintaxe:

FWBrwRelation():AddRelation(<oBrowse1>,<oBrowse2>,<aRelation>)

Parâmetros

NomeTipoDescriçãoObrigatório
oBrowse1ObjetoObjeto do Browse de origem do relacionamentoX
oBrowse2ObjetoObjeto do Browse de destino do relacionamentoX
aRelationArrayEstrutura com critério de relacionamento X


Activate

Descrição:
Método de ativação da classe, quando a classe é ativada, os relacionamentos são executados.


Sintaxe:

FWBrwRelation():Activate()

Exemplo geral de uso da classe

//-------------------------------------------------------------------
/*/{Protheus.doc} 
Função de exemplo de relacionamento entre browses

@author Julio Teixeira
@since 29/01/2024
@version 1.0
/*/
//-------------------------------------------------------------------
User Function BrwRelat()

	Local aCoors      AS ARRAY
	Local aRelation   AS ARRAY
	Local oPanelUp    AS OBJECT
	Local oFWLayer    AS OBJECT
	Local oPanelDown  AS OBJECT
	Local oDlgPrinc   AS OBJECT
	Local oBrowseUp   AS OBJECT
	Local oBrwDown    AS OBJECT
	Local oRelation   AS OBJECT

	aCoors := FWGetDialogSize( oMainWnd ) 
	Define MsDialog oDlgPrinc Title "BrwRelat" From aCoors[1],aCoors[2] To aCoors[3],aCoors[4] Pixel 

	// Cria o container onde serão colocados os browses
	oFWLayer := FWLayer():New()
	oFWLayer:Init( oDlgPrinc, .F., .T. )
	
	// Define Painel Superior
	oFWLayer:AddLine( 'UPLINE', 55, .F. )
	oFWLayer:AddCollumn( 'UPCOL', 100, .T., 'UPLINE' )
	// Obtém objeto painel superior
	oPanelUp := oFWLayer:GetColPanel( 'UPCOL', 'UPLINE' )
	
	// Painel Inferior
	oFWLayer:AddLine( 'DOWNLINE', 45, .F. )
	oFWLayer:AddCollumn( 'DOWNCOL' ,  100, .T., 'DOWNLINE' )
	// Obtém objeto painel inferior
	oPanelDown := oFWLayer:GetColPanel( 'DOWNCOL' , 'DOWNLINE' )

	// FWMBrowse superior 
	oBrowseUp := FWMBrowse():New()
	oBrowseUp:SetOwner( oPanelUp )
	oBrowseUp:SetDescription( "Cabeçalho" ) 
	oBrowseUp:DisableDetails()
	oBrowseUp:SetAlias( 'SF1' )
	oBrowseUp:Activate()
	
	// FWMBrowse inferior
	oBrwDown := FWMBrowse():New()
	oBrwDown:SetOwner( oPanelDown )
	oBrwDown:SetDescription( "Itens" ) 
	oBrwDown:DisableDetails()
	oBrwDown:SetAlias( 'SD1' )
	oBrwDown:Activate() 

	// Relacionamento entre os browses
	oRelation := FWBrwRelation():New()
	aRelation := { { 'D1_FILIAL', 'F1_FILIAL' }, { 'D1_DOC', 'F1_DOC'  }, {'D1_SERIE','F1_SERIE'}, {'D1_FORNECE','F1_FORNECE'}, {'D1_LOJA','F1_LOJA'} }
	oRelation:AddRelation( oBrowseUp  , oBrwDown , aRelation ) 
	oRelation:Activate()

	Activate MsDialog oDlgPrinc Center

	oBrowseUp:DeActivate()
	oBrowseUp:Destroy()

	oBrwDown:DeActivate()
	oBrwDown:Destroy()

	FreeObj(oBrowseUp)
	FreeObj(oBrwDown)
	FreeObj(oRelation)
	FreeObj(oDlgPrinc)
	FreeObj(oPanelUp)
	FreeObj(oFWLayer)
	FreeObj(oPanelDown)
	
Return