Páginas filhas
  • LGX - LFormMetaData

Versões comparadas

Chave

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

Pagetitle
LFormMetaData
LFormMetaData
Classe que permite executar um formulário metadado de cadastro, também chamado de modelo CRUD, que são registrados e mantidos através do programa FRM1002 (Formulário Metadado Cadastral).

Hierarquia


Métodos GET


Métodos acessíveis através da função _ADVPL_get_property que permite recuperar e manipular os valores do componente: 


Expandir
titleBROWSE_ITEM_COUNT

Método GET: BROWSE_ITEM_COUNT

Quantidade de registros encontrados na operação 'Listar' do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"BROWSE_ITEM_COUNT") => INTEGER

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim

Retorno



Tipo

Descrição

INTEGERQuantidade de registros encontrados na operação 'Listar' do formulário.

Exemplo



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

FOR l_ind = 1 TO l_browse_count 
   LET l_cod_item = _ADVPL_get_property(l_form_reference,"BROWSE_VALUE","item","cod_item",l_ind) 
   LET l_den_item = man10021_get_den_item(l_cod_item) 
   CALL _ADVPL_set_property(l_form_reference,"BROWSE_VALUE","item","den_item",l_ind,l_den_item)
END FOR




Expandir
titleBROWSE_VALUE

Método GET: BROWSE_VALUE

Valor de uma determinada linha e coluna da operação 'Listar' do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"BROWSE_VALUE", < l_table >, < l_column >, < l_row >, [ l_alias ]) => VALUE

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim
l_tableCHARNome da tabela da coluna do formulário da qual deseja-se retornar o valor,Sim
l_columnCHARNome da coluna do formulário da qual deseja-se retornar o valor.---Sim
l_rowINTEGERNúmero da linha do grid da operação 'Listar' da qual deseja-se retornar o valor.Sim
l_aliasCHARAlias da tabela com a coluna do formulário da qual deseja-se retornar o valor.Não

Retorno



TipoDescrição
VALUEValor de determinada linha e coluna da grid da operação 'Listar' do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_browse_count = _ADVPL_get_property(l_form_reference,"BROWSE_ITEM_COUNT")

FOR l_ind = 1 TO l_browse_count 
   LET l_cod_item = _ADVPL_get_property(l_form_reference,"BROWSE_VALUE","item","cod_item",l_ind) 
   LET l_den_item = man10021_get_den_item(l_cod_item) 
   CALL _ADVPL_set_property(l_form_reference,"BROWSE_VALUE","item","den_item",l_ind,l_den_item)
END FOR




Expandir
titleCOMPONENT_REFERENCE

Método GET: COMPONENT_REFERENCE

Referência do componente de um determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"COMPONENT_REFERENCE", < l_table >, < l_column >, [ l_alias ]) => CHAR

Parâmetros



Nome

Tipo

Descrição

Obrigatório?

l_form_reference
CHAR
Referência do formulárioSim
l_tableCHARNome da tabela da coluna do formulário da qual deseja-se retornar o valor,Sim
l_columnCHARNome da coluna do formulário da qual deseja-se retornar o valor.---Sim
l_aliasCHARAlias da tabela com a coluna do formulário da qual deseja-se retornar o valor.Não

Retorno



Tipo

Descrição

CHARReferência do componente de um campo do formulário.

Exemplo



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




Expandir
titleCOMPONENT_IS_ENABLE

Método GET: COMPONENT_IS_ENABLE

Identifica quando um campo do formulário está habilitado.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"COMPONENT_IS_ENABLE", < l_table >, < l_column >, [ l_alias ]) => SMALLINT

Parâmetros



Nome

Tipo

Descrição

Obrigatório?

l_form_reference
CHAR
Referência do formulárioSim
l_tableCHARNome da tabela da coluna do formulário que deseja saber se está habilitada ou não,Sim
l_columnCHARNome da coluna do formulário que deseja saber se está habilitada ou não,Sim
l_aliasCHARAlias da tabela com a coluna do formulário que deseja saber se está habilitada ou não,Não

Retorno



Tipo

Descrição

SMALLINTSe componente estiver habilitado (ENABLE), retornará TRUE, caso contrário FALSE.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_field_enabled = _ADVPL_get_property(l_form_reference,"COMPONENT_IS_ENABLE","item","cod_item")




Expandir
titleCOMPONENT_TYPE

Método GET: COMPONENT_TYPE

Retorna o tipo de componente definido para um campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"COMPONENT_TYPE", < l_table >, < l_column >, [ l_alias ]) => SMALLINT

Parâmetros



Nome

Tipo

Descrição

Obrigatório?

l_form_reference
CHAR
Referência do formulárioSim
l_tableCHARNome da tabela da coluna do formulário,Sim
l_columnCHARNome da coluna do formulário,Sim
l_aliasCHARAlias da tabela com a coluna do formulário,Não

Retorno



Tipo

Descrição

CHARTipo do componente utilizado no formulário para o campo informado.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_component_type = _ADVPL_get_property(l_form_reference,"COMPONENT_TYPE","item","cod_item")




Expandir
titleCONSTRUCT_REFERENCE

Método GET: CONSTRUCT_REFERENCE

Referência do filtro de consulta utilizado na operação de pesquisa do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"CONSTRUCT_REFERENCE") => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim

Retorno



TipoDescrição
CHARReferência do filtro de pesquisa (LConstruct) utilizado na operação padrão de pesquisa do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_construct_reference = _ADVPL_get_property(l_form_reference,"CONSTRUCT_REFERENCE")




Expandir
titleCURRENT_OPERATION

Método GET: CURRENT_OPERATION

Operação atual em execução no formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"CURRENT_OPERATION") => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim

Retorno



TipoDescrição
CHARNome da operação que está em execução, conforme cadastrado no programa "FRM1001 - Barra de Ferramentas".

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_current_operation = _ADVPL_get_property(l_form_reference,"CURRENT_OPERATION")




Expandir
titleEXECUTE_OPERATION

Método GET: EXECUTE_OPERATION 

Executa uma determinada operação do formulário, conforme cadastrada no programa "FRM1001 - Barra de Ferramentas".

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"EXECUTE_OPERATION") => SMALLINT

Parâmetros



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

Nome da operação do formulário que deseja-se executar, conforme cadastrado no programa "FRM1001 - Barra de Ferramentas".

Sim
l_where_clause
CHAR
Filtro SQL a ser utilizado caso o parâmetro OPERATION seja pesquisa (FIND), modificação (UPDATE) ou exclusão (DELETE).Não

Retorno



TipoDescrição
SMALLINTCaso a operação foi executado com sucesso retornará TRUE, caso contrário retornará FALSE.

(informação) Para a operação FIND, TRUE indica que encontrou registro na pesquisa e FALSE não encontrou registro ou acusou algum erro na pesquisa.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_where_clause = "item.cod_empresa = '01'"
LET l_status = _ADVPL_get_property(l_form_reference,"EXECUTE_OPERATION","find",l_where_clause)




Expandir
titleFORM_NAME

Método GET: FORM_NAME

Nome do formulário

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"FORM_NAME") => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim

Retorno



TipoDescrição
CHARNome do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_form_name = _ADVPL_get_property(l_form_reference,"FORM_NAME")




Expandir
titleGROUP_REFERENCE ou CONTAINER_REFERENCE

Método GET: GROUP_REFERENCE ou GET: CONTAINER_REFERENCE

Referência do componente do grupo de componentes de determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"GROUP_REFERENCE") => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim

Retorno



TipoDescrição
CHARReferência do componente de um grupo de componentes do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_group_reference = _ADVPL_get_property(l_form_reference,"GROUP_REFERENCE","item","cod_item")




Expandir
titleLABEL_REFERENCE

Método GET: LABEL_REFERENCE

Referência do componente de descrição de um determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"LABEL_REFERENCE") => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulárioSim
l_table
CHAR
Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência da descrição.Sim
l_column
CHAR
Nome da coluna do formulário da qual deseja-se recuperar a referência da descrição.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência da descrição.Não

Retorno



TipoDescrição
CHARReferência do componente de descrição de um campo do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_label_reference = _ADVPL_get_property(l_form_reference,"LABEL_REFERENCE","item","cod_item")




Expandir
titleMENU_BUTTON_REFERENCE

Método GET: MENU_BUTTON_REFERENCE

Referência de um botão da barra de ferramentas do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"MENU_BUTTON_REFERENCE", < l_operation > ) => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_operationCHARNome da operação, cadastrada no programa "FRM0001 - Barra de Ferramentas", do formulário da qual deseja-se retornar a referência.Sim

Retorno



TipoDescrição
CHARReferência de um botão da barra de ferramentas (LMenuButton) correspondente à operação informada como parâmetro.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_menubutton_reference = _ADVPL_get_property(l_form_reference,"MENU_BUTTON_REFERENCE","create")




Expandir
titleMENUBAR_REFERENCE

Método GET: MENUBAR_REFERENCE

Referência de um botão da barra de ferramentas do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"MENUBAR_REFERENCE") => CHAR

Parâmetros



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

Retorno



TipoDescrição
CHARReferência da barra de ferramentas (LMenuBar) do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_menubar_reference = _ADVPL_get_property(l_form_reference,"MENUBAR_REFERENCE")




Expandir
titleSTATUS_BAR_REFERENCE

Método GET: STATUS_BAR_REFERENCE

Referência da barra de status do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"STATUS_BAR_REFERENCE") => CHAR

Parâmetros



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

Retorno



TipoDescrição
CHARReferência da barra de status do formulário (LStatusBar).

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_menubar_reference = _ADVPL_get_property(l_form_reference,"STATUS_BAR_REFERENCE")




Expandir
titleTABLE_REFERENCE

Método GET: TABLE_REFERENCE

Referência da barra de status do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"TABLE_REFERENCE", < l_table >, [ l_alias ]) => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Nome da tabela do formulário da qual deseja-se recuperar a referência do grid.Sim
l_alias
CHAR
Alias da tabela do formulário da qual deseja-se recuperar a referência do grid.Não

Retorno



TipoDescrição
CHARReferência do componente grid de uma tabela do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_table_reference = _ADVPL_get_property(l_form_reference,"TABLE_REFERENCE","item_man")




Expandir
titleVALUE

Método GET: VALUE

Valor de um determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"VALUE", < l_table >, < l_column>, [ l_row ], [ l_alias ]) => VALUE

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Tabela da coluna do formulário da qual deseja-se retornar o valor.Sim
l_column
CHAR
Coluna do formulário da qual deseja-se retornar o valor.Sim
l_row
INTEGER
Linha do grid do formulário da qual deseja-se retornar o valor.Não
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual deseja-se retornar o valor.Não

Retorno



TipoDescrição
VALUEValor de um determinado campo do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_value = _ADVPL_get_property(l_form_reference,"VALUE","item","cod_item")




Expandir
titleZOOM_BUTTON_REFERENCE

Método GET: ZOOM_BUTTON_REFERENCE

Referência do componente do botão de zoom de um determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ZOOM_BUTTON_REFERENCE", < l_table >, [ l_alias ]) => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência do botão de zoom.Sim
l_column
CHAR
Nome da coluna do formulário da qual deseja-se recuperar a referência do botão de zoom.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência do botão de zoom.Não

Retorno



TipoDescrição
CHARReferência do componente do botão de zoom de um campo do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_zoom_button_reference = _ADVPL_get_property(l_form_reference,"ZOOM_BUTTON_REFERENCE","item","cod_item")




Expandir
titleZOOM_REFERENCE

Método GET: ZOOM_REFERENCE

Referência do zoom de um determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_get_property(< l_form_reference >,"ZOOM_REFERENCE", < l_table >, [ l_alias ]) => CHAR

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência do zoom.Sim
l_column
CHAR
Nome da coluna do formulário da qual deseja-se recuperar a referência do zoom.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência do zoom.Não

Retorno



TipoDescrição
CHARReferência do zoom de determinado campo do formulário.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_zoom_reference = _ADVPL_get_property(l_form_reference,"ZOOM_REFERENCE","item","cod_item")




Métodos SET

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


Expandir
titleACTIVATE

Método SET: ACTIVATE

Inicia ou finaliza o formulário.

Sintaxe



Bloco de código
CALL _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_statusSMALLINT

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) Para ativar ou desativar um formulário, deverá ter executado previamente o método "FORM" ou "INIT_FORM" para o mesmo.


Exemplo



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




Expandir
titleBROWSE_VALUE

Método SET: BROWSE_VALUE

Atribui valor para uma determinada linha e coluna da operação 'Listar' do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"BROWSE_VALUE", < l_table >, < l_column >, < l_row >, < l_value >, [ l_alias ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Nome da tabela da coluna do formulário da qual terá o valor alterado.Sim
l_column
CHAR
Nome da coluna do formulário da qual terá o alterado.Sim
l_row
INTEGER
Número da linha do grid</span> da operação 'Listar' da qual terá o valor alterado.Sim
l_value
CHAR
Valor a ser atribuído para a coluna da grid</span> da operação Listar do formulário.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual terá o valor alterado.Não


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
LET l_browse_count = _ADVPL_get_property(l_form_reference,"BROWSE_ITEM_COUNT")

FOR l_ind = 1 TO l_browse_count    
  LET l_cod_item = _ADVPL_get_property(l_form_reference,"BROWSE_VALUE","item","cod_item",l_ind)    
  LET l_den_item = man10021_get_den_item(l_cod_item)        
  CALL _ADVPL_set_property(l_form_reference,"BROWSE_VALUE","item","den_item",l_ind,l_den_item)
END FOR




Expandir
titleCONTAINER_COLUMNS_COUNT

Método SET: CONTAINER_COLUMNS_COUNT

Inicia ou finaliza o formulário.

Sintaxe



Bloco de código
CALL _ADVPL_set_property(< l_form_reference >,"CONTAINER_COLUMNS_COUNT", < l_columns >)

Parâmetros



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

Quantidade máxima de colunas que irá definir o agrupamento dos grupos de componentes do formulário.

Sim

(informação) Este método deve sempre ser chamado uma única vez na função de 'Before Load' do formulário.


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"CONTAINER_COLUMNS_COUNT",2)




Expandir
titleDETAIL_WHERE_CLAUSE

Método SET: DETAIL_WHERE_CLAUSE

Filtro de consulta padrão para uma tabela de detalhe. Este filtro será utilizado para cada pesquisa que o usuário executar.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"DETAIL_WHERE_CLAUSE", < l_where_clause >, <l_table >, [ l_alias ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_where_clause
CHAR
Filtro de pesquisa SQL para ser utilizado na operação de pesquisa padrão do formulário.Sim
l_table
CHAR
Nome da tabela da qual será definido o filtro.Sim
l_alias
CHAR
Alias da tabela da qual será definido o filtro.Não

(informação) Este filtro será utilizado dentro das cláusulas de junção das tabelas no SQL.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
##Definir filtro para a tabela detalhe ITEM_MAN de cardinalidade N..0 que possui junção com uma tabela mestre ITEM
LET l_where_clause = "item_man.cod_item = '8575'"

CALL _ADVPL_set_property(l_form_reference,"DETAIL_WHERE_CLAUSE",l_where_clause,"item_man")

Neste exemplo acima, quando o usuário executar a pesquisa no formulário o filtro SQL será montado da seguinte forma:

 
FROM item LEFT OUTER JOIN item_man
ON item_man.cod_empresa = item.cod_empresa
AND item_man.cod_item = item.cod_item
AND item_man.cod_item = '8575'




Expandir
titleENABLE_COMPONENTS

Método SET: ENABLE_COMPONENTS

Habilita/desabilita os campos em tela que estiverem registrados no formulário como Editável no cadastro de formulários cadastrais (FRM1002).

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ENABLE_COMPONENTS", < l_status >, [ l_operation ])

Parâmetros



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

Indicador que define se irá habilitar ou desabilitar os campos da tela para edição.

TRUE - Habilitar campos

FALSE - Desabilitar campos

Sim
l_operation
CHAR/SMALLINT

Quando STATUS (Parâmetro l_status) tiver valor TRUE este parâmetro deve indicar a operação que será utilizada para identificar os campos que devem ou não ser habilitados para edição em tela.

create - Inclusão de dados. 
copy - Cópia de dados.
update - Modificação de dados. Não habilita os campos chave.

   (ideia) Se operação não for informada, será considerada a operação create por padrão.


Quando STATUS (Parâmetro l_status) tiver valor FALSE, este parâmetro indicará se para desabilitar a edição dos campos, continuará permitindo que o usuário permita acessar o conteúdo dos campos desabilitados para copiar seu conteúdo ou não.

TRUE -  Permitirá copiar conteúdo do campo desabilitado.
FALSE - Não permitirá copiar conteúdo do campo desabilitado.

   (ideia) Quando não for informado, será considerada valor FALSE por padrão.

Não

Exemplo



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

CALL _ADVPL_set_property(l_form_reference,"ENABLE_COMPONENTS",FALSE,TRUE)




Expandir
titleENABLE_VALID_FOREIGN_KEY

Método SET: ENABLE_VALID_FOREIGN_KEY

Habilita/desabilita a validação de chaves estrangeiras para determinada(s) tabelas do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_FOREIGN_KEY", < l_status >, [ l_table ], [ l_alias ])

Parâmetros



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

Indicador que define se será habilitada ou desabilitada a validação de chaves estrangeiras de uma ou mais tabelas do formulário.

TRUE - Habilitar validação de chaves estrangeiras.

FALSE - Desabilitar validação de chaves estrangeiras.

Sim
l_table
CHAR

Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves estrangeiras.

(informação) Quando não for informar a tabela, todas as tabelas do formulário serão afetadas. 

Não
l_alias
CHAR
Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves estrangeiras.Não


Exemplo



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




Expandir
titleENABLE_VALID_NOT_NULL

Método SET: ENABLE_VALID_NOT_NULL

Habilita/desabilita a validação de campos obrigatório para determinada(s) tabelas do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_NOT_NULL", < l_status >, [ l_table ], [ l_alias ])

Parâmetros



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

Indicador que define se será habilitada ou desabilitada a validação de campos obrigatório de uma ou mais tabelas do formulário.

TRUE - Habilitar validação de campos obrigatórios.

FALSE - Desabilitar validação de campos obrigatórios.

Sim
l_table
CHAR

Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de campos obrigatórios.

(informação) Quando não for informada a tabela, todas as tabelas do formulário serão consideradas.

Não
l_alias
CHAR
Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de campos obrigatórios.Não

Exemplo



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




Expandir
titleENABLE_VALID_PRIMARY_KEY

Método SET: ENABLE_VALID_PRIMARY_KEY

Habilita/desabilita a validação de chaves primárias para determinada(s) tabelas do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_FOREIGN_KEY", < l_status >, [ l_table ], [ l_alias ])

Parâmetros



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

Indicador que define se será habilitada ou desabilitada a validação de chave primária de uma ou mais tabelas do formulário.

TRUE - Habilitar validação de chaves primárias.

FALSE - Desabilitar validação de chaves primárias.

Sim
l_table
CHAR

Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves primárias.

(informação) Quando não for informar a tabela, todas as tabelas do formulário serão afetadas. 

Não
l_alias
CHAR
Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves primárias.Não

Exemplo



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




Expandir
titleFORM

Método SET: FORM

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 >,"FORM", < l_form_name >, <l_4glRecord1>, < l_4glRecord2 >, ..., <l_4GLrecordNz> )

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário de cadastro (FRM1002)Sim
l_4glRecord (1,2,..,N)
4GL 
RECORD

Variáveis RECORD ou ARRAY OF RECORD, separadas por vírgula, que irão controlar o conteúdo do formulário, sendo que para cada tabela informada no formulário é necessário uma variável RECORD para tabelas do tipo mestre e ARRAY OF RECORD para as tabelas do tipo detalhe ou mestre-detalhe.

Dica
iconfalse
A  ordem das variáveis RECORD ou ARRAY OF RECORD deve obedecer a ordem informada no campo "Posição Record 4GL" no cadastro de formulários cadastrais (FRM0002).
Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"FORM","man10021",mr_item,ma_item_man)




Expandir
titleGET_FOCUS

Método SET: GET_FOCUS

Forçar o foco do cursor para um determinado campo do formulário, sendo que este apenas obterá foco se permitido.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"GET_FOCUS", < l_table_alias >, < l_column >, [ l_row ], [ l_alias ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Nome da tabela no formulário.Sim
l_column
CHAR
Nome da coluna no formulário.Sim
l_row
INTEGER

Linha do grid do formulário para qual deseja forçar o foco.

Não
l_alias
CHAR
Alias da tabela com a coluna do formulário para qual deseja forçar o foco.Não

Exemplo



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




Expandir
titleHOTKEY

Método SET: HOTKEY

Define uma tecla de atalho para executar uma ação específica no formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"HOTKEY", < l_hotkey >, < l_function >, < l_description >)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário de cadastro (FRM1002)Sim
l_hotkey
CHAR

Tecla de atalho.

Informe o código numérico correspondente da tecla desejada ou então o nome da tecla que deve respeitar uma lista pré-definida de nomes previstos no metadado.

Expandir
titleLista de teclas previstas no metadado
Sim
l_function
CHAR

Nome da função 4GL que será acionada ao invocar o atalho da tecla de atalho.

Sim
l_description
CHAR

Texto de descrição da tecla de atalho.

Nãao

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
 CALL _ADVPL_set_property(m_form, "HOTKEY", "CTRL-H", "xxx9999_funcao_especifica","Executa função específica")




Expandir
titleINIT_FORM

Método SET: INIT_FORM

Junção dos métodos "FORM" e "ACTIVATE" para carregar as informações do formulário e executá-lo em seguida.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"INIT_FORM", < l_form_name >, <l_4glRecord1>, < l_4glRecord2 >, ..., <l_4GLrecordNz> )

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário de cadastro (FRM1002)Sim
l_4glRecord (1,2,..,N)
4GL 
RECORD

Variáveis RECORD ou ARRAY OF RECORD, separadas por vírgula, que irão controlar o conteúdo do formulário, sendo que para cada tabela informada no formulário é necessário uma variável RECORD para tabelas do tipo mestre e ARRAY OF RECORD para as tabelas do tipo detalhe ou mestre-detalhe.

Dica
iconfalse
A  ordem das variáveis RECORD ou ARRAY OF RECORD deve obedecer a ordem informada no campo "Posição Record 4GL" no cadastro de formulários cadastrais (FRM0002).
Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"INIT_FORM","man10021",mr_item,ma_item_man)




Expandir
titlePROPERTY

Método SET: PROPERTY

Ajustar o valor de uma propriedade de um campo do formulário antes que ele seja carregado em memória (evento BEFORE_LOAD), para que ele passe a respeitar o valor da propriedade durante a carga da tela.

(aviso) Esta ação somente é válida quando acionada no evento BEFORE_LOAD do formulário. (aviso) 

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"PROPERTY", < l_property >, < l_value_property >, < l_table >, < l_column > )

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_property
CHAR
Nome da propriedade do componente da coluna do formulário.Sim
l_value_property
CHAR
Valor a ser atribuído para a propriedade informada.Sim
l_table
CHAR
Nome da tabela no formulário.Sim
l_column
CHAR
Nome da coluna no formulário.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário.Não

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
 CALL _ADVPL_set_property(m_form_reference,"PROPERTY","IS_VISIBLE",FALSE,"empresa","rastreada","a")




Expandir
titleORDER_BY

Método SET: ORDER_BY

Ordem de consulta padrão para determinado(s) campos do formulário que será utilizada para toda pesquisa executada no formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ORDER_BY", < l_table_alias >, < l_column >, [ l_order ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table_alias
CHAR
Nome da tabela OU alias. Ccaso a tabela tenha alias definido no formulário, deverá ser informado apenas o alias para definir a ordenação a ser utilizada na operação de pesquisa padrão do formulário.Sim
l_column
CHAR
Nome da coluna da qual deseja definir a ordenação para ser utilizada na operação de pesquisa padrão do formulário.Sim
l_order
CHAR

Ordenação da coluna a ser respeitada.
ASC - ordenação crescente.
DESC - ordenação decrescente.

(informação) Quando não informado irá assumir automaticamente a ordenação como ASC.

Não

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"ORDER_BY","item","cod_item","DESC")




Expandir
titleVALUE

Método SET: VALUE

Atribui valor para determinado campo do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"VALUE", < l_table>, < l_column >, < l_value >, [ l_row ], [ l_alias ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_table
CHAR
Tabela da coluna do formulário da qual terá o valor alterado.Sim
l_column
CHAR
Coluna do formulário da qual terá o alterado.Sim
l_value
-
Qualquer valor a ser atribuído para a coluna do formulário, respeitando o tipo de dado.Sim
l_row
INTEGER
Linha do grid do formulário da qual terá o valor alteradoNão
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual terá o valor alterado.Não

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"VALUE","item","cod_empresa","50")




Expandir
titleWHERE_CLAUSE

Método SET: WHERE_CLAUSE

Filtro de consulta padrão para o formulário que será utilizado para toda pesquisa realizada.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"WHERE_CLAUSE", < l_where_clause >)

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_where_clause
CHAR
Filtro de pesquisa SQL para ser utilizado na operação de pesquisa padrão do formulário.Sim

(informação) Este filtro será utilizado no filtro WHERE do SQL padrão do metadado.

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Definir um filtro para uma tabela mestre (item):
LET l_where_clause = "item.cod_empresa = '50'"

CALL _ADVPL_set_property(l_form_reference,"WHERE_CLAUSE",l_where_clause)

Neste exemplo acima, quando o usuário executar a pesquisa, este filtro será montado da seguinte forma:


FROM item WHERE item_man.cod_empresa = '50'




Expandir
titleREFRESH_COMPONENTS

Método SET: REFRESH_COMPONENTS

Força atualização da exibição de todos campos do formulário.

Sintaxe



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

Parâmetros



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

Exemplo



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



Expandir
titleZOOM_NAME

Método SET: ZOOM_NAME

Atribui valor para uma determinada linha e coluna da operação 'Listar' do formulário.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_form_reference >,"ZOOM_NAME", < l_zoom_name 	>, <l_table >, [ l_alias ])

Parâmetros



NomeTipoDescriçãoObrigatório?
l_form_reference
CHAR
Referência do formulário.Sim
l_zoom_name
CHAR
Nome do novo zoom que será atribuído para o campo. Este zoom deve estar cadastrado no programa "FRM1008 - Zoom".Sim
l_table
CHAR
Nome da tabela da coluna do formulário da qual terá o zoom alterado.Sim
l_column
CHAR
Nome da coluna do formulário da qual terá o zoom alterado.Sim
l_alias
CHAR
Alias da tabela com a coluna do formulário da qual terá o zoom alterado.Não

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
CALL _ADVPL_set_property(l_form_reference,"ZOOM_NAME","zoom_item_man","item","cod_item")
 



Sintaxe


Bloco de código
LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA")     
CALL _ADVPL_set_property(m_form_reference,"INIT_FORM",<form_name>,<4GLrecord1>,<4GLrecord2>,...,<4GLrecordN>) 

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_item           RECORD LIKE item.* 

DEFINE ma_item_man       ARRAY[100] OF RECORD LIKE item_man.* 

DEFINE m_form_reference  VARCHAR(10)

##------------------------------------------------------------------------------------------------------------#
# PROGRAMA: crud1                                                                                            #
# OBJETIVO: Modelo 01 de formulário CRUD                                                                     #
#------------------------------------------------------------------------------------------------------------#
# OBS: Este formulário possui um componente de imagem instanciado em componente                              #
#      FREEFORM para demonstrar uso em paralelo com os eventos do formulário CRUD.                           #
#------------------------------------------------------------------------------------------------------------#
#SCRIPT SQL PARA CRIAÇÃO DA TABELA USADA NESTE PROGRAMA MODELO DE FORMULÁRIO CRUD METADADO NO BANCO DE DADOS:#
#------------------------------------------------------------------------------------------------------------#
#   CREATE TABLE frm_modelo_crud1                                                                            #
#         (crud_id CHAR(10) NOT NULL,                                                                        # 
#          crud_description CHAR(30) NOT NULL,                                                               # 
#          crud_image_button CHAR(50) NOT NULL,                                                              # 
#          crud_status CHAR(1) NOT NULL);                                                                    # 
#                                                                                                            # 
#   ALTER TABLE frm_modelo_crud1 ADD CONSTRAINT pk_frm_modelo_crud1 PRIMARY KEY (crud_id);                   #
#------------------------------------------------------------------------------------------------------------#
DATABASE logix

DEFINE mr_frm_modelo_crud1          RECORD
                                    END RECORD

DEFINE m_container_reference        VARCHAR(10)
DEFINE m_form_reference             VARCHAR(10)
DEFINE m_image_reference            VARCHAR(10)
DEFINE m_button_reference           VARCHAR(10)

#------------------------------------------------------------------#
 FUNCTION crud1_runInContainer(l_container_reference)
#------------------------------------------------------------------#
#OBJETIVO: função para acionamento de programa a partir de uma tela COCKPIT, 
#          onde deverá passar a referencia do painel lateral do cockpit, onde 
#          o formulário deverá ser renderizado, como parâmetro.
    DEFINE l_container_reference  VARCHAR(10)

    LET m_container_reference = l_container_reference

    RETURN crud1() #TRUE - Formulario executado com sucesso  / FALSE - Falha na carga/execução do formulário
 END FUNCTION 

#------------------------------------------------------------------#
 FUNCTION crud1()
#------------------------------------------------------------------#
    INITIALIZE m_form_reference TO NULL
    
    IF LOG_initApp("PADRAO") = 0 THEN
        IF m_container_reference <> " " THEN
            LET m_container_reference = _ADVPL_create_component(NULL,"LSCROLLPANEL",m_container_reference)
            CALL _ADVPL_set_property(m_container_reference,"ALIGN","CENTER")
        END IF
        LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA",m_container_reference)
        CALL _ADVPL_set_property(m_form_reference,"INIT_FORM","crud1",mr_frm_modelo_crud1)
    END IF

    RETURN (m_form_reference IS NOT NULL)  #TRUE - Formulario executado com sucesso  / FALSE - Falha na carga/execução do formulário
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_create_before_input()
#------------------------------------------------------------------#
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",TRUE)

    # Esta função tbem é usada na copia entao não deve limpar a imagem na cópia
    IF UPSHIFT(_ADVPL_get_property(m_form_reference,"CURRENT_OPERATION")) = "CREATE" THEN 
        CALL _ADVPL_set_property(m_image_reference,"IMAGE","x")
    END IF
    RETURN TRUE 
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_create_cancel_input()
#------------------------------------------------------------------#
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",FALSE)
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_create_after_confirm()
#------------------------------------------------------------------#
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",FALSE)
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_create_before_confirm()
#------------------------------------------------------------------#
    #Validações antes de gravar novo registro (retornar FALSE quando ocorrer uma falha)
    
    RETURN TRUE #inclusão permitida
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_update_before_confirm()
#------------------------------------------------------------------#
    #Validações antes de alterar registro (retornar FALSE quando ocorrer uma falha)
    
    RETURN TRUE #aleraçao permitida
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_find_before_input()
#------------------------------------------------------------------#
    #Limpar o campo de imagem da tela quando acionar nova consulta
    CALL _ADVPL_set_property(m_image_reference,"IMAGE","x")
    RETURN TRUE
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_update_before_input()
#------------------------------------------------------------------#
    #Habilitar campo de imagem da tela quando acionar nova inclusão de registro
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",TRUE)
    RETURN TRUE
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_update_cancel_input()
#------------------------------------------------------------------#
    #Desabilitar campo de imagem da tela quando cancelar modificacao de registro
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",FALSE)
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_update_after_confirm()
#------------------------------------------------------------------#
    #Desabilitar campo de imagem da tela quando finalizar modificacao de registro
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",FALSE)
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_find_confirm()
#------------------------------------------------------------------#
    #Mostrar imagem indicada no registro na tela
    CALL crud1_show_image(mr_frm_modelo_crud1.crud_image_button)
    RETURN TRUE
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_after_load()
#------------------------------------------------------------------#
    DEFINE l_group_reference  VARCHAR(10)
    DEFINE l_panel_reference  VARCHAR(10)
    DEFINE l_layout_reference VARCHAR(10)
    DEFINE l_panel_button     VARCHAR(10)
    DEFINE l_component_reference VARCHAR(10)

    #obter referencia do componente da coluna CRUD_STATUS para tomar como base de posicionamento para criar campo de imagem na tela
    LET l_component_reference = _ADVPL_get_property(m_form_reference,"LABEL_REFERENCE","frm_modelo_crud1","crud_status")

    #obter referencia do grupo de componentes do formulário em que está registrado a coluna CRUD_ID, pois é a referencia do CONTAINER onde será instanciado componente de imagem
    CALL LOG_retorna_referencia_grupo_componentes(m_form_reference,'frm_modelo_crud1','crud_id')
       RETURNING l_group_reference

    #criar novo painel com título onde será exibida a imagem e botão para selecionar nova imagem.
    LET l_panel_reference = _ADVPL_create_component(NULL,"LTitledPanelEx",l_group_reference)
    #Definir posição relativa do novo painel com base na posição da coluna CRUD_STATUS
    CALL _ADVPL_set_property(l_panel_reference,"BOUNDS",_ADVPL_get_property(l_component_reference,"X")+400,
                                                        _ADVPL_get_property(l_component_reference,"Y"),350,350)
    CALL _ADVPL_set_property(l_panel_reference,"TITLE","Imagem de identificação")

    #componente de layout para renderização automática de componentes dentro do container (PANEL)
    LET l_layout_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",l_panel_reference)
    CALL _ADVPL_set_property(l_layout_reference,"MARGIN",TRUE)
    CALL _ADVPL_set_property(l_layout_reference,"COLUMNS_COUNT",1)

    #Campo de imagem posicionado no topo/centro do painel
    LET m_image_reference = _ADVPL_create_component(NULL,"LImage",l_layout_reference)
    CALL _ADVPL_set_property(m_image_reference,"SIZE",120,120)
    CALL _ADVPL_set_property(m_image_reference,"ALIGN","CENTER")

    #Painel posicionado abaixo da imagem pra acondicionar um botão pra escolher nova imagem (posicionado no rodapé do painel)
    LET l_panel_button = _ADVPL_create_component(NULL,"LPANEL",l_layout_reference)
    CALL _ADVPL_set_property(l_panel_button,"HEIGHT",24)
    CALL _ADVPL_set_property(l_panel_button,"ALIGN","BOTTOM")

    #Botão posicionado abaixo da imagem para escolher nova imagem    
    LET m_button_reference = _ADVPL_create_component(NULL,"LBUTTON",l_panel_button)
    CALL _ADVPL_set_property(m_button_reference,"SIZE",120,24)
    CALL _ADVPL_set_property(m_button_reference,"FOCAL",TRUE)
    CALL _ADVPL_set_property(m_button_reference,"ALIGN","RIGHT")
    CALL _ADVPL_set_property(m_button_reference,"TEXT","&Trocar Imagem")
    CALL _ADVPL_set_property(m_button_reference,"CLICK_EVENT","crud1_change_image")
    CALL _ADVPL_set_property(m_button_reference,"ENABLE",FALSE)

    #Mostrar uma imagem padrao qdo nao tiver nenhuma imagem escolhida (Imagem não definida)
    CALL crud1_show_image("x.png")
 END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_change_image()
#------------------------------------------------------------------#
    DEFINE l_file      CHAR(250)
    DEFINE l_image     IMAGE
    
    #Zoom de imagens contidas no RPO respeitando o filtro prefixo at_* e extensão .png
    LET l_file = _ADVPL_LOG_zoom_images("Imagem de identificação","at_*","*.png")

    IF NOT crud1_show_image(l_file) THEN
        CALL log0030_mensagem("Não foi possível carregar a imagem escolhida.","excl")
    END IF
 END FUNCTION

#------------------------------------------------------------------#
 PRIVATE FUNCTION crud1_show_image(l_file)
#------------------------------------------------------------------#
    DEFINE l_file      CHAR(50)
    DEFINE l_image     IMAGE,
           l_tempFile  CHAR(250)

    IF STRING_isEmpty(l_file) THEN
       RETURN
    END IF

    #Copia a imagem do RPO para a pasta temporária local.
    LET l_tempFile = _ADVPL_getSrvTempPath(TRUE)||"BTCRUD1.PNG" #Nome PNG qquer apenas para definir nome de imagem temporária para permitir exibição na tela, pois ela é baixada do RPO em disco

    CALL LOG_file_remove(l_tempFile,FALSE)
    IF _ADVPL_LOG_resource2File(l_file,l_tempFile) THEN
        LET l_image = LOAD_IMAGE(l_tempFile,1)
        IF status <> 0 THEN
            CALL LOG_show_status_bar_text(m_form_reference,"Não foi possível carregar a imagem.","ERROR_TEXT")
        ELSE
            #Carregar a imagem na tela
            CALL _ADVPL_set_property(m_image_reference, "IMAGE_BUFFER", "imagem", l_image)
            LET mr_frm_modelo_crud1.crud_image_button = l_file #Salvar nome da imagem no registro da tabela.
        END IF
        CALL LOG_file_remove(l_tempFile,FALSE) #Eliminar o arquivo PNG temporário usado pra baixar imagem do RPO.
    ELSE
        CALL LOG_show_status_bar_text(m_form_reference,"Não foi possível carregar a imagem.","ERROR_TEXT")
    END IF
END FUNCTION

#------------------------------------------------------------------#
 FUNCTION crud1_load_image()
#------------------------------------------------------------------#
    IF mr_frm_modelo_crud1.crud_image_button IS NULL OR UPSHIFT(_ADVPL_get_property(m_form_reference,"CURRENT_OPERATION")) = "DELETE" THEN
        #quando eliminar registro limpar a imagem da tela e exibir a imagem padrao (IMAGEM NAO DEFINIDA)
        CALL _ADVPL_set_property(m_image_reference,"IMAGE","x")
    ELSE
        #Mostrar a imagem na tela
        CALL crud1_show_image(mr_frm_modelo_crud1.crud_image_button)
    END IF
END FUNCTION

#------------------------------------------------------------------#
FUNCTION crud1_version_info()
#---------------------------------# 
 FUNCTION man10021()
#------------------------------#     
	# Verifica permissão para o usuário conforme módulo do programa.     

	IF  LOG_initApp("PADRAO") <> 0 THEN         
		RETURN     
	END IF     

	INITIALIZE mr_item.*, ma_item_man TO NULL     
	LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA")     
	CALL _ADVPL_set_property(m_form_reference,"INIT_FORM","man10021",mr_item,ma_item_man) 
END FUNCTION

Image Removed

Informações
---#
RETURN "$Archive: crud1.4gl $|$Revision: 1 $|$Date: 16/05/23 00:38 $|$Modtime: 16/05/23 00:38 $" # Informações do controle de versão de fontes Logix - Não remover esta linha (FRAMEWORK)
END FUNCTION


Image Added

Informações


O arquivo CRUD1.ZIP anexo contém os arquivos XML da tabela e formulário para importar via sincronizador metadado e o cógigo fonte 4GL de exemplo do programa metadado CRUD1 apresentado no exemplo acima.

Este formulário possui também um componente de imagem adicional em tela, instanciado no modelo livre (FREEFORM) para demonstrar uso em paralelo com os eventos do formulário CRUD metadado.

View file
namecrud1.zip
height150