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")




Expandir
titleCódigo de Exemplo

Exemplo



Bloco de código
languageruby
themeEclipse
linenumberstrue
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





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 ACTIVATE

Método SET: ACTIVATE

Ativa/Desativa a janela da aplicação.

Sintaxe



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

Parâmetros



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

Indicador que define se será ativado ou desativado o formulário.

   TRUE - Ativa o formulário

   FALSE - Desativa/Fecha o formulário.

Sim

(informação) Importante: para ativar ou desativar um formulário, deverá ter executado previamente o método "PARAMETER" ou "INIT_PARAMETER" para o mesmo.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"ACTIVATE",TRUE)




Expandir
titleSET ENABLE_VALID_DUPLICATE_VALUES

Método SET: ENABLE_VALID_DUPLICATE_VALUES

Habilita/desabilita a validação de valores duplicados no(s) multivalorado(s) do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_DUPLICATE_VALUES",< Habilita? >)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
Habilita?BOOLEANIndicador que define se será habilitada ou desabilitada a validação de valores duplicados no(s) multivalorado(s) do formulário.Sim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"ENABLE_VALID_DUPLICATE_VALUES",FALSE)




Expandir
titleSET INFORMED

Método SET: INFORMED

Força a definição da verificação se os parâmetros do formulário já foram informados ou não no formulário. Utilizados em casos e que o formulário é carregado manualmente.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"INFORMED",< Já informou?>)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
Já informou?
BOOLEAN
Indicador que força a definição de verificação se os parâmetros foram ou não informados no formulário.Sim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"INFORMED",TRUE)




Expandir
titleSET INIT_PARAMETER

Método SET: INIT_PARAMETER

Junção dos métodos "PARAMETER" e "ACTIVATE", carrega as informações do formulário e executa-o em seguida.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"INIT_PARAMETER",< Formulário >, [ Record ], [ Array of Record ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
Formulário 
CHAR
Nome do formulário cadastrado no programa "FRM0003 - Formulários de Parâmetros/Processamento".Sim
RecordRECORDVariável RECORD que irá controlar o conteúdo dos campos monovalorados do formulário.Sim
Array of RecordARRAY OF RECORDVariável ARRAY OF RECORD que irá controlar o conteúdo dos campos multivalorados do formulário.Sim

(informação) Importante: para ativar ou desativar um formulário, deverá ter executado previamente o método "PARAMETER" ou "INIT_PARAMETER" para o mesmo.


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DATABASE logix GLOBALS
     DEFINE p_user
        LIKE usuarios.cod_usuario
     DEFINE p_cod_empresa LIKE empresa.cod_empresa END GLOBALS DEFINE mr_tela
           RECORD
                              cod_empresa LIKE empresa.cod_empresa,
                              den_empresa LIKE empresa.den_empresa
                          END RECORD DEFINE ma_tela
           ARRAY[100] OF
                          RECORD
                              cod_item LIKE item.cod_item,
                              den_item LIKE item.den_item
                          END RECORD DEFINE m_form_reference
  VARCHAR(100)
#--------------------# 
FUNCTION man100220()
#--------------------#
     # Verifica o acesso do usuário conforme módulo do programa.
     IF  LOG_initApp("PADRAO") <> 0 THEN
         RETURN
     END IF
     INITIALIZE mr_tela.*, ma_tela TO NULL
     LET l_form_reference = _ADVPL_create_component(NULL,"LPARMETADATA")
     CALL _ADVPL_set_property(l_form_reference,"INIT_PARAMETER","man100220",mr_tela,ma_tela)
 END FUNCTION




Expandir
titleSET ITEM_COUNT

Método SET: ITEM_COUNT

Quantidade de linhas de um determinado multivalorado do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ITEM_COUNT", < Associação >, < Quantidade >)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
 Associação 
CHAR
Nome da associação do multivalorado do formulário.Sim
QuantidadeINTEGERNúmero de linhas que será atribuído para um determinado multivalorado do formulário.Sim

(informação) Importante: caso o multivalorado possua apenas um campo e não possua associação, deverá ser passado no primeiro parâmetro o nome do campo multivalorado.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"ITEM_COUNT","item",10)




Expandir
titleSET PARAMETER

Método SET: PARAMETER

Carrega as informações do formulário, mas não o executa. Utilizado em casos em que é necessário carregar o formulário e após isso executar diretamente uma operação do mesmo.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"PARAMETER",< Formulário >, [ Record ], [ Array of Record ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_fFormulárioorm_reference
CHAR
Referência do formulário.Sim
Formulário 
CHAR
Nome do formulário cadastrado no programa "FRM0003 - Formulários de Parâmetros/Processamento".Sim
RecordRECORDVariável RECORD que irá controlar o conteúdo dos campos monovalorados do formulário.Não
Array of RecordARRAY OF RECORDVariável ARRAY OF RECORD que irá controlar o conteúdo dos campos multivalorados do formulário.Não

(informação) Importante: a ordem das variáveis deve ser sempre a mesma, independente do formulário ter ou não campos monovalorados ou multivalorados, primeiro o RECORD para os campos monovalorados e depois o ARRAY OF RECORD para os campos multivalorados.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"PARAMETER","man10022",mr_tela,ma_tela)