Páginas filhas
  • LGX - LZoomMetaData

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Pagetitle
LGX - LZoomMetaData
LGX - LZoomMetaData
Cria e executa uma tela de zoom cadastrado no metadado. Os eventos que se encontram cadastrados no zoom poderão ser substituídos por outros quando executado os métodos para atribuição destes eventos.

Um zoom pode ser utilizado para obter informações de outra entidade da base de dados ou de outros programas. Por padrão, o zoom sempre é executado ao clicar num botão de lupa ao lado do campo, ou ao acionar a tecla de atalho F4 dentro deste mesmo campo.

Os zooms podem ser utilizados tanto em campos de formulários quanto em colunas de uma grid e, possuem dois métodos de exibição de registros: de seleção única ou de múltipla seleção.


Hierarquia



Sintaxe


Informações
iconfalse
LET l_zoom_reference = _ADVPL_create_component( NULL, "LZOOMMETADATA" )




Métodos GET


Métodos acessíveis utilizando a função _ADVPL_get_property, que permite recuperar e manipular os valores do componente: 


Expandir
titleGET ACTIVATE

Método GET: ACTIVATE

Executa um zoom carregado através do método SET ZOOM.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ACTIVATE")



Expandir
titleGET RETURN_BY_TABLE_COLUMN

Método GET: RETURN_BY_TABLE_COLUMN

Retorna o valor de determinado registro do zoom conforme o nome da tabela e coluna informados.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"RETURN_BY_TABLE_COLUMN", < Tabela >, < Coluna >) ==> Referência

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim
TabelaCHARNome da tabela da coluna do zoom que será retornado o valorSim
ColunaCHARNome da coluna do zoom que será retornado o valorSim

Retorno



Tipo

Descrição

CHARValor do registro da coluna informada.

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_value = _ADVPL_get_property( l_form_reference, "RETURN_BY_TABLE_COLUMN", "item","cod_empresa")




Expandir
titleGET ITEM_COUNT

Método GET: ITEM_COUNT

Retorna a quantidade de registros existentes no zoom.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ITEM_COUNT") ==> Quantidade


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim

Retorno



Tipo

Descrição

INTEGERQuantidade de registros existentes no zoom.

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_item_count = _ADVPL_get_property(l_form_reference,"ITEM_COUNT")




Expandir
titleGET INDEX_VALUE

Método GET: INDEX_VALUE

Retorna o valor de determinado registro do zoom conforme o nome da tabela, coluna e linha informadas.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"INDEX_VALUE", < Tabela >, < Coluna >, < Linha > ) ==> Já informou?


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim
TabelaCHARNome da tabela da coluna do zoom que será retornado o valorSim
ColunaCHARNome da coluna do zoom que será retornado o valorSim
LinhaINTEGERLinha da coluna do zoom que será retornado o valorSim

Retorno



Tipo

Descrição

CHARValor do registro da coluna informada

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
 LET l_value = _ADVPL_get_property(< l_form_reference >,"INDEX_VALUE","item","cod_empresa","10")




Expandir
titleGET TABLE_REFERENCE

Método GET: TABLE_REFERENCE

Retorna a referência da grid utilizada no zoom.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_grid_reference >,"TABLE_REFERENCE") ==> Referência


Parâmetros



NomeTipoDescriçãoObrigatório?
 l_grid_reference 
CHAR
Referência da grid utilizada no zoomSim

Retorno



Tipo

Descrição

CHAR

Referência da grid utilizada no zoom.

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_item_count = _ADVPL_get_property( l_grid_reference,"TABLE_REFERENCE")




Expandir
titleGET COMPONENT_REFERENCE

Método GET: COMPONENT_REFERENCE

Retorna a referência de determinada coluna da grid do zoom, conforme nome da tabela e coluna informados.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"COMPONENT_REFERENCE",  < Tabela >, < Coluna >) ==> Referência


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim
TabelaCHARNome da tabela da coluna do formulário da qual deseja-se recuperar a referência da descrição.Sim
ColunaCHARNome da coluna do formulário da qual deseja-se recuperar a referência da descrição.Sim

Retorno



Tipo

Descrição

CHARReferência da coluna da grid utilizada no zoom

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_component_reference = _ADVPL_get_property(l_form_reference,"COMPONENT_REFERENCE","item","cod_empresa")




Expandir
titleGET ITEM_SELECTED

Método GET: ITEM_SELECTED

Retorna a linha do registro selecionado no zoom.
Quando o zoom é de múltipla seleção, retorna a quantidade de registros selecionados.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ITEM_SELECTED") ==> Referência


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim

Retorno



Tipo

Descrição

INTEGERLinha do registro selecionado no zoom.

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_row_selected = _ADVPL_get_property(l_form_reference,"ITEM_SELECTED")




Expandir
titleGET ZOOM_TYPE

Método GET: ZOOM_TYPE

Retorna o tipo de zoom utilizado.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ZOOM_TYPE") ==> Referência


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim

Retorno



Tipo

Descrição

INTEGER

Tipo do zoom utilizado, sendo: 0 - Seleção única e 1 - Múltipla seleção.

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_zoom_type = _ADVPL_get_property(l_form_reference,"ZOOM_TYPE")




Expandir
titleGET ALWAYS_SHOW_FILTER

Método GET: ALWAYS_SHOW_FILTER

Retorna se está parametrizado para sempre exibir a tela de filtro de registros antes da exibição do zoom.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ALWAYS_SHOW_FILTER") ==> Referência


Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR

Referência do formulário.

Sim


Retorno



Tipo

Descrição

BOOLEAN

Verdadeiro se está parametrizado para sempre exibir o filtro de registros, falso se não está parametrizado.


Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
LET l_show_filter = _ADVPL_get_property(l_form_reference,"ALWAYS_SHOW_FILTER")





Cleane → Verificar principalmente os exemplos ↓ 

 

Métodos SET 

Métodos acessíveis utilizando a função _ADVPL_set_property que permite alterar e manipular os valores do componente.


Expandir
titleSET ARRAY_RECORD_RETURN

Método SET: ARRAY_RECORD_RETURN

Define um ARRAY OF RECORD do 4GL onde serão carregados os valores selecionados no zoom de múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"ARRAY_RECORD_RETURN", < r_ArrayRecord >)

Parâmetros



NomeTipoDescriçãoObrigatório?
 m_zoom_reference 
CHAR
Referência do formulário.Sim
r_ArrayRecord()

ARRAY OF RECORD do 4GL onde serão carregados os registros selecionados no zoom

Sim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_zoom_empresa_reference,"ARRAY_RECORD_RETURN",ma_zoom_empresa)




Expandir
titleSET ZOOM_COMPONENT

Método SET: ZOOM_COMPONENT

Integra um componente da tela com o zoom.
Com esta integração, ao executar o zoom, o mesmo irá atribuir o foco e o valor para o campo e também irá efetuar outras validações automaticamente.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_zoom_reference >,"ZOOM_COMPONENT",<c_Component>, <n_Type>, <n_Size>, [n_Precision] )

Parâmetros



NomeTipoDescriçãoObrigatório?
 l_zoom_reference 
CHAR
Referência do formulário.Sim
c_ComponentCHARReferência do componente que será integrado com o zoom.Sim
n_TypeINTEGERTipo do componente, sendo: 1–CHAR, 2–SMALLINT, 3–INTEGER, 4–DECIMAL, 5–DATE, 6–DATETIME, 7–VARCHAR, 8–SERIAL e 9–IMAGE.Sim
n_SizeINTEGERTamanho do tipo de dado do componente.Sim
n_PrecisionINTEGERPrecisão do tipo de dado do componenteNão


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property( l_zoom_reference,"ZOOM_COMPONENT","zoom_component",3,10,5)




Expandir
titleSET ZOOM

Método SET: ZOOM

Carrega as informações do zoom informado, cadastrado no metadado.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_zoom_reference >,"ZOOM",< c_Zoom > )

Parâmetros



NomeTipoDescriçãoObrigatório?
 l_zoom_reference 
CHAR
Referência do formulário.Sim
 c_Zoom 
CHAR
Nome do zoom que será carregado, o mesmo deve estar cadastrado no metadadoSim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property( l_zoom_reference ,"ZOOM","zoom_empresa")




Expandir
titleSET ZOOM_TYPE

Método SET: ZOOM_TYPE

Define o tipo do zoom que será executado, de seleção única ou múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_zoom_reference >,"ZOOM_TYPE",< n_Type >)

Parâmetros



NomeTipoDescriçãoObrigatório?
 l_zoom_reference 
CHAR
Referência do formulário.Sim
 n_Type 
INTEGER
Tipo do zoom que será executando, sendo: 0 - Seleção única e 1 - Múltipla seleçãoSim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property( l_zoom_reference,"ZOOM_TYPE",1)  




Expandir
titleSET SELECT_ITEM

Método SET: SELECT_ITEM

Marca/desmarca um determinado registro do zoom de múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_browse_reference >,"SELECT_ITEM", < n_Row >, < n_Status >)

Parâmetros



NomeTipoDescriçãoObrigatório?
 m_browse_reference 
CHAR
Referência do formulário.Sim
n_Row 
INTEGER
Número da linha do registro que será selecionado.Sim
n_Status INTEGERVerdadeiro para marcar o registro da linha informada, falso para desmarcar.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"SELECT_ITEM",1,5)




Expandir
titleSET CLEAR_SELECT_ITEM

Método SET: CLEAR_SELECT_ITEM

Desmarca todos registros do zoom de múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(<  l_zoom_reference  >,"CLEAR_SELECT_ITEM")

Parâmetros



NomeTipoDescriçãoObrigatório?
  l_zoom_reference  
CHAR
Referência do formulário.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"CLEAR_SELECT_ITEM")




Expandir
titleSET SELECT_ITEM_ALL

Método SET: SELECT_ITEM_ALL

Marca/desmarca todos os registros do zoom de múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_zoom_reference >,"SELECT_ITEM_ALL",< n_Select >)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_zoom_reference  
CHAR
Referência do formulário.Sim
n_Select INTEGERVerdadeiro para marcar todos os registros do zoom, falso para desmarcar.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"SELECT_ITEM_ALL",1)




Expandir
titleSET BEFORE_LOAD_EVENT

Método SET: BEFORE_LOAD_EVENT

Define um evento que será executado após o carregamento do zoom, porém antes de sua abertura.
A função cadastrada para este método deve retornar verdadeiro ou falso para continuar ou interromper a abertura do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"BEFORE_LOAD_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada antes da abertura do zoomSim

(informação) Ao utilizar este método, se houver uma função cadastrada no Before Load no metadado do zoom, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"SELECT_ITEM_ALL","zoom_metadata_execute_zoom")




Expandir
titleSET AFTER_LOAD_EVENT

Método SET: AFTER_LOAD_EVENT

Define um evento que será executado na abertura do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"AFTER_LOAD_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada na abertura do zoomSim

(informação) Ao utilizar este método, se houver uma função cadastrada no After Load no metadado do zoom, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"AFTER_LOAD_EVENT","zoom_metadata_execute_zoom")




Expandir
titleSET CONFIRM_EVENT

Método SET: CONFIRM_EVENT

Define um evento que será executado ao confirmar a seleção dos registros no zoom.
A função cadastrada para este método deve retornar verdadeiro ou falso para continuar ou interromper a confirmação do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"CONFIRM_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada na confirmação do zoom.Sim

(informação) Ao utilizar este método, se houver uma função cadastrada no Confirm no metadado do zoom, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"CONFIRM_EVENT","zoom_metadata_execute_zoom")




Expandir
titleSET CANCEL_EVENT

Método SET: CANCEL_EVENT

Define um evento que será executado ao cancelar a seleção dos registros no zoom.
A função cadastrada para este método deve retornar verdadeiro ou falso para continuar ou interromper o cancelamento do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"CANCEL_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada no cancelamento do zoom.Sim

(informação) Ao utilizar este método, se houver uma função cadastrada no Cancel no metadado do zoom, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"CANCEL_EVENT","zoom_metadata_execute_zoom")




Expandir
titleSET BEFORE_ZOOM_EVENT

Método SET: BEFORE_ZOOM_EVENT

Define um evento que será executado antes do carregamento e da abertura do zoom.
A função cadastrada para este método deve retornar verdadeiro ou falso para continuar ou interromper a abertura do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"BEFORE_ZOOM_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada antes da abertura do zoom.Sim

(informação) Ao utilizar este método, se houver uma função cadastrada no Before Zoom no metadado do formulário, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"BEFORE_ZOOM_EVENT","zoom_metadata_execute_zoom")




Expandir
titleSET AFTER_ZOOM_EVENT

Método SET: AFTER_ZOOM_EVENT

Define um evento que será executado após a finalização do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"AFTER_ZOOM_EVENT",< c_Event >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
c_Event ( )Função 4GL que será executada após a finalização do zoom.Sim

(informação) Ao utilizar este método, se houver uma função cadastrada no After Zoom no metadado do formulário, a mesma será desconsiderada.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"AFTER_ZOOM_EVENT","zoom_metadata_execute_zoom")




Expandir
titleSET SELECTED

Método SET: SELECTED

Define a quantidade de registros pré-selecionados no zoom de múltipla seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"SELECTED",< n_Selected >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference  
CHAR
Referência do formulário.Sim
 n_Selected INTEGERQuantidade de registros pré-selecionados no zoom.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"SELECTED",10)




Expandir
titleSET CAN_EDIT

Método SET: CAN_EDIT

Habilita/desabilita a edição dos registros do zoom, caso o mesmo possua um formulário cadastrado para edição.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"CAN_EDIT",< n_Edit >)

Parâmetros



NomeTipoDescriçãoObrigatório?
 m_zoom_reference
CHAR
Referência do formulário.Sim
  n_Edit INTEGERVerdadeiro para habilitar a edição dos registros do zoom, falo para desabilitar.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"CAN_EDIT",10)




Expandir
titleSET CAN_FILTER

Método SET: CAN_FILTER

Habilita/desabilita filtrar os registros do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"CAN_FILTER",< n_Filter >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference
CHAR
Referência do formulário.Sim
n_Filter INTEGERVerdadeiro para habilitar filtrar os registros do zoom, falso para desabilitarSim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"CAN_FILTER",1)




Exemplo
Expandir
titleSET ALWAYS_SHOW_FILTER

Método SET: ALWAYS_SHOW_FILTER

Habilita/desabilita a exibição do filtro de registros antes da exibição do zoom.

Sintaxe



Bloco de código
_ADVPL_set_property(< m_zoom_reference >,"ALWAYS_SHOW_FILTER",< n_ShowFilter >)

Parâmetros



NomeTipoDescriçãoObrigatório?
m_zoom_reference
CHAR
Referência do formulário.Sim
n_ShowFilter INTEGERVerdadeiro para habilitar a exibição do filtro de registros antes da exibição do zoom, falo para desabilitar.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(m_browse_filter_reference,"ALWAYS_SHOW_FILTER",1)
Expandir
titleCódigo de Exemplo





Exemplo


Clique no link na lateral direita para expandir o código de exemplo.

Bloco de código
languageruby
themeEclipse
titleExemplos de uso do componente LZoomMetadata
linenumberstrue
collapsetrue
DATABASE logix
 
 DEFINE m_cod_item_reference,
        m_den_item_reference,
        m_count_empresas_reference VARCHAR(10)
 
 DEFINE m_zoom_item_reference,
        m_zoom_empresa_reference VARCHAR(10)
 
 DEFINE mr_tela RECORD
                    cod_item       CHAR(15),
                    den_item       CHAR(76),
                    count_empresas SMALLINT
                END RECORD
 
 DEFINE ma_zoom_empresa ARRAY[1000] OF
                        RECORD
                            cod_empresa CHAR(02),
                            den_empresa CHAR(36)
                        END RECORD
 
#-----------------------#
 FUNCTION zoommetadata()
#-----------------------#
     DEFINE l_dialog_reference,
            l_panel_reference,
            l_layout_reference,
            l_label_reference,
            l_component_reference,
            l_imagebutton_reference VARCHAR(10)
 
     INITIALIZE mr_tela.*,ma_zoom_empresa TO NULL
 
     #Conecta ao banco de dados
     CALL LOG_connectDatabase("DEFAULT")
 
     LET l_dialog_reference = _ADVPL_create_component(NULL,"LDIALOG")
     CALL _ADVPL_set_property(l_dialog_reference,"SIZE",400,200)
     CALL _ADVPL_set_property(l_dialog_reference,"TITLE","Exemplo de Utilização: LZOOMMETADATA")
 
     LET l_panel_reference = _ADVPL_create_component(NULL,"LPANEL",l_dialog_reference)
     CALL _ADVPL_set_property(l_panel_reference,"ALIGN","CENTER")
 
     LET l_layout_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference)
     CALL _ADVPL_set_property(l_layout_reference,"COLUMNS_COUNT",4)
     CALL _ADVPL_set_property(l_layout_reference,"MARGIN",TRUE)
 
     LET l_label_reference = _ADVPL_create_component(NULL,"LLABEL",l_layout_reference)
     CALL _ADVPL_set_property(l_label_reference,"TEXT","Item: ")
 
     LET m_cod_item_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_reference)
     CALL _ADVPL_set_property(m_cod_item_reference,"ENABLE",FALSE)
     CALL _ADVPL_set_property(m_cod_item_reference,"LENGTH",15)
     CALL _ADVPL_set_property(m_cod_item_reference,"PICTURE","@!")
     CALL _ADVPL_set_property(m_cod_item_reference,"VARIABLE",mr_tela,"cod_item")
     CALL _ADVPL_set_property(m_cod_item_reference,"WIDTH",50)
 
     LET l_imagebutton_reference = _ADVPL_create_component(NULL,"LIMAGEBUTTON",l_layout_reference)
     CALL _ADVPL_set_property(l_imagebutton_reference,"CLICK_EVENT","zoommetadata_execute_zoom_item")
     CALL _ADVPL_set_property(l_imagebutton_reference,"IMAGE","BTPESQ")
     CALL _ADVPL_set_property(l_imagebutton_reference,"SIZE",24,20)
 
     LET m_den_item_reference = _ADVPL_create_component(NULL,"LTEXTFIELD",l_layout_reference)
     CALL _ADVPL_set_property(m_den_item_reference,"ENABLE",FALSE)
     CALL _ADVPL_set_property(m_den_item_reference,"LENGTH",76)
     CALL _ADVPL_set_property(m_den_item_reference,"PICTURE","@!")
     CALL _ADVPL_set_property(m_den_item_reference,"VARIABLE",mr_tela,"den_item")
     CALL _ADVPL_set_property(m_den_item_reference,"WIDTH",200)
 
     LET l_label_reference = _ADVPL_create_component(NULL,"LLABEL",l_layout_reference)
     CALL _ADVPL_set_property(l_label_reference,"TEXT","Empresas: ")
 
     LET m_count_empresas_reference = _ADVPL_create_component(NULL,"LNUMERICFIELD",l_layout_reference)
     CALL _ADVPL_set_property(m_count_empresas_reference,"ENABLE",FALSE)
     CALL _ADVPL_set_property(m_count_empresas_reference,"LENGTH",04)
     CALL _ADVPL_set_property(m_count_empresas_reference,"VARIABLE",mr_tela,"count_empresas")
     CALL _ADVPL_set_property(m_count_empresas_reference,"WIDTH",50)
 
     LET l_imagebutton_reference = _ADVPL_create_component(NULL,"LIMAGEBUTTON",l_layout_reference)
     CALL _ADVPL_set_property(l_imagebutton_reference,"CLICK_EVENT","zoommetadata_execute_zoom_empresa")
     CALL _ADVPL_set_property(l_imagebutton_reference,"IMAGE","BTPESQ")
     CALL _ADVPL_set_property(l_imagebutton_reference,"SIZE",24,20)
 
     CALL _ADVPL_set_property(l_layout_reference,"ADD_EMPTY_COLUMN")
 
     CALL _ADVPL_set_property(l_dialog_reference,"ACTIVATE",TRUE)
 END FUNCTION
 
#-----------------------------------------#
 FUNCTION zoommetadata_execute_zoom_item()
#-----------------------------------------#
     DEFINE l_cod_item CHAR(15),
            l_den_item CHAR(76)
 
     #Carrega o zoom de itens, se o mesmo ainda não foi carregado
     IF  m_zoom_item_reference IS NULL THEN
         LET m_zoom_item_reference = _ADVPL_create_component(NULL,"LZOOMMETADATA")
         CALL _ADVPL_set_property(m_zoom_item_reference,"ZOOM","zoom_item")
     END IF
 
     #Ativa o zoom de itens
     CALL _ADVPL_get_property(m_zoom_item_reference,"ACTIVATE")
 
     #Recupera os valores selecionados no zoom
     LET l_cod_item = _ADVPL_get_property(m_zoom_item_reference,"RETURN_BY_TABLE_COLUMN","item","cod_item")
     LET l_den_item = _ADVPL_get_property(m_zoom_item_reference,"RETURN_BY_TABLE_COLUMN","item","den_item_reduz")
 
     IF  l_cod_item IS NOT NULL OR l_den_item IS NOT NULL THEN
         LET mr_tela.cod_item = l_cod_item
         LET mr_tela.den_item = l_den_item
     END IF
 
     CALL _ADVPL_set_property(m_cod_item_reference,"VALUE",mr_tela.cod_item)
     CALL _ADVPL_set_property(m_den_item_reference,"VALUE",mr_tela.den_item)
 END FUNCTION
 
#--------------------------------------------#
 FUNCTION zoommetadata_execute_zoom_empresa()
#--------------------------------------------#
     #Carrega o zoom de empresas, se o mesmo ainda não foi carregado
     IF  m_zoom_empresa_reference IS NULL THEN
         LET m_zoom_empresa_reference = _ADVPL_create_component(NULL,"LZOOMMETADATA")
         CALL _ADVPL_set_property(m_zoom_empresa_reference,"ZOOM","zoom_empresa")
         CALL _ADVPL_set_property(m_zoom_empresa_reference,"ZOOM_TYPE",1)
         CALL _ADVPL_set_property(m_zoom_empresa_reference,"ARRAY_RECORD_RETURN",ma_zoom_empresa)
     END IF
 
     #Ativa o zoom de empresas
     CALL _ADVPL_get_property(m_zoom_empresa_reference,"ACTIVATE")
 
     #Recupera a quantidade de registros selecionados no zoom
     LET mr_tela.count_empresas = _ADVPL_get_property(m_zoom_empresa_reference,"RETURN")
     CALL _ADVPL_set_property(m_count_empresas_reference,"VALUE",mr_tela.count_empresas)
 END FUNCTION