- Criado por Cleane Hermann, última alteração em 13 dez, 2023
Hierarquia
- LCOMPONENT
- LMetadata
- LFormMetadata
- LMetadata
Métodos GET
Métodos acessíveis através da função _ADVPL_get_property
que permite recuperar e manipular os valores do componente:
Método GET: BROWSE_ITEM_COUNT
Quantidade de registros encontrados na operação 'Listar' do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"BROWSE_ITEM_COUNT") => INTEGER
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
Retorno
Tipo | Descrição |
---|---|
INTEGER | Quantidade de registros encontrados na operação 'Listar' do formulário. |
Exemplo
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
Método GET: BROWSE_VALUE
Valor de uma determinada linha e coluna da operação 'Listar' do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"BROWSE_VALUE", < l_table >, < l_column >, < l_row >, [< l_alias >]) => VALUE
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
l_table | CHAR | Nome da tabela da coluna do formulário da qual deseja-se retornar o valor, | Sim |
l_column | CHAR | Nome da coluna do formulário da qual deseja-se retornar o valor.--- | Sim |
l_row | INTEGER | Número da linha do grid da operação 'Listar' da qual deseja-se retornar o valor. | Sim |
l_alias | CHAR | Alias da tabela com a coluna do formulário da qual deseja-se retornar o valor. | Não |
Retorno
Tipo | Descrição |
---|---|
VALUE | Valor de determinada linha e coluna da grid da operação 'Listar' do formulário. |
Exemplo
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
Método GET: COMPONENT_REFERENCE
Referência do componente de um determinado campo do formulário.
Sintaxe
_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 |
| Referência do formulário | Sim |
l_table | CHAR | Nome da tabela da coluna do formulário da qual deseja-se retornar o valor, | Sim |
l_column | CHAR | Nome da coluna do formulário da qual deseja-se retornar o valor.--- | Sim |
l_alias | CHAR | Alias da tabela com a coluna do formulário da qual deseja-se retornar o valor. | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do componente de um campo do formulário. |
Exemplo
LET l_component_reference = _ADVPL_get_property(l_form_reference,"COMPONENT_REFERENCE","item","cod_item")
Método GET: COMPONENT_IS_ENABLE
Identifica quando um campo do formulário está habilitado.
Sintaxe
_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 |
| Referência do formulário | Sim |
l_table | CHAR | Nome da tabela da coluna do formulário que deseja saber se está habilitada ou não, | Sim |
l_column | CHAR | Nome da coluna do formulário que deseja saber se está habilitada ou não, | Sim |
l_alias | CHAR | Alias da tabela com a coluna do formulário que deseja saber se está habilitada ou não, | Não |
Retorno
Tipo | Descrição |
---|---|
SMALLINT | Se componente estiver habilitado (ENABLE), retornará TRUE, caso contrário FALSE. |
Exemplo
LET l_field_enabled = _ADVPL_get_property(l_form_reference,"COMPONENT_IS_ENABLE","item","cod_item")
Método GET: COMPONENT_TYPE
Retorna o tipo de componente definido para um campo do formulário.
Sintaxe
_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 |
| Referência do formulário | Sim |
l_table | CHAR | Nome da tabela da coluna do formulário, | Sim |
l_column | CHAR | Nome da coluna do formulário, | Sim |
l_alias | CHAR | Alias da tabela com a coluna do formulário, | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Tipo do componente utilizado no formulário para o campo informado. |
Exemplo
LET l_component_type = _ADVPL_get_property(l_form_reference,"COMPONENT_TYPE","item","cod_item")
Método GET: CONSTRUCT_REFERENCE
Referência do filtro de consulta utilizado na operação de pesquisa do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"CONSTRUCT_REFERENCE") => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do filtro de pesquisa (LConstruct) utilizado na operação padrão de pesquisa do formulário. |
Exemplo
LET l_construct_reference = _ADVPL_get_property(l_form_reference,"CONSTRUCT_REFERENCE")
Método GET: CURRENT_OPERATION
Operação atual em execução no formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"CURRENT_OPERATION") => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Nome da operação que está em execução, conforme cadastrado no programa "FRM1001 - Barra de Ferramentas". |
Exemplo
LET l_current_operation = _ADVPL_get_property(l_form_reference,"CURRENT_OPERATION")
Método GET: EXECUTE_OPERATION
Executa uma determinada operação do formulário, conforme cadastrada no programa "FRM1001 - Barra de Ferramentas".
Sintaxe
_ADVPL_get_property(< l_form_reference >,"EXECUTE_OPERATION") => SMALLINT
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_operation |
| Nome da operação do formulário que deseja-se executar, conforme cadastrado no programa "FRM1001 - Barra de Ferramentas". | Sim |
l_where_clause |
| Filtro SQL a ser utilizado caso o parâmetro OPERATION seja pesquisa (FIND), modificação (UPDATE) ou exclusão (DELETE). | Não |
Retorno
Tipo | Descrição |
---|---|
SMALLINT | Caso a operação foi executado com sucesso retornará TRUE, caso contrário retornará FALSE. 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
LET l_where_clause = "item.cod_empresa = '01'" LET l_status = _ADVPL_get_property(l_form_reference,"EXECUTE_OPERATION","find",l_where_clause)
Método GET: FORM_NAME
Nome do formulário
Sintaxe
_ADVPL_get_property(< l_form_reference >,"FORM_NAME") => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Nome do formulário. |
Exemplo
LET l_form_name = _ADVPL_get_property(l_form_reference,"FORM_NAME")
Método GET: GROUP_REFERENCE ou GET: CONTAINER_REFERENCE
Referência do componente do grupo de componentes de determinado campo do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"GROUP_REFERENCE",< l_table >,< l_column >,[< l_alias >]) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência da descrição. | Sim |
l_column |
| Nome da coluna do formulário da qual deseja-se recuperar a referência da descrição. | Sim |
l_alias |
| Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência da descrição. | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do componente de um grupo de componentes do formulário. |
Exemplo
LET l_group_reference = _ADVPL_get_property(l_form_reference,"GROUP_REFERENCE","item","cod_item")
Método GET: LABEL_REFERENCE
Referência do componente de descrição de um determinado campo do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"LABEL_REFERENCE",,< l_table >,< l_column >,[< l_alias >]) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência da descrição. | Sim |
l_column |
| Nome da coluna do formulário da qual deseja-se recuperar a referência da descrição. | Sim |
l_alias |
| Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência da descrição. | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do componente de descrição de um campo do formulário. |
Exemplo
LET l_label_reference = _ADVPL_get_property(l_form_reference,"LABEL_REFERENCE","item","cod_item")
Método GET: MENU_BUTTON_REFERENCE
Referência de um botão da barra de ferramentas do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"MENU_BUTTON_REFERENCE", < l_operation > ) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_operation | CHAR | Nome da operação, cadastrada no programa "FRM0001 - Barra de Ferramentas", do formulário da qual deseja-se retornar a referência. | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência de um botão da barra de ferramentas (LMenuButton) correspondente à operação informada como parâmetro. |
Exemplo
LET l_menubutton_reference = _ADVPL_get_property(l_form_reference,"MENU_BUTTON_REFERENCE","create")
Método GET: MENUBAR_REFERENCE
Referência de um botão da barra de ferramentas do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"MENUBAR_REFERENCE") => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência da barra de ferramentas (LMenuBar) do formulário. |
Exemplo
LET l_menubar_reference = _ADVPL_get_property(l_form_reference,"MENUBAR_REFERENCE")
Método GET: STATUS_BAR_REFERENCE
Referência da barra de status do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"STATUS_BAR_REFERENCE") => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência da barra de status do formulário (LStatusBar). |
Exemplo
LET l_menubar_reference = _ADVPL_get_property(l_form_reference,"STATUS_BAR_REFERENCE")
Método GET: TABLE_REFERENCE
Referência da barra de status do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"TABLE_REFERENCE", < l_table >, [< l_alias >]) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Nome da tabela do formulário da qual deseja-se recuperar a referência do grid. | Sim |
l_alias |
| Alias da tabela do formulário da qual deseja-se recuperar a referência do grid. | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do componente grid de uma tabela do formulário. |
Exemplo
LET l_table_reference = _ADVPL_get_property(l_form_reference,"TABLE_REFERENCE","item_man")
Método GET: VALUE
Valor de um determinado campo do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"VALUE", < l_table >, < l_column>, [< l_row >], [< l_alias >]) => VALUE
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Tabela da coluna do formulário da qual deseja-se retornar o valor. | Sim |
l_column |
| Coluna do formulário da qual deseja-se retornar o valor. | Sim |
l_row |
| Linha do grid do formulário da qual deseja-se retornar o valor. | Não |
l_alias |
| Alias da tabela com a coluna do formulário da qual deseja-se retornar o valor. | Não |
Retorno
Tipo | Descrição |
---|---|
VALUE | Valor de um determinado campo do formulário. |
Exemplo
LET l_value = _ADVPL_get_property(l_form_reference,"VALUE","item","cod_item")
Método GET: ZOOM_BUTTON_REFERENCE
Referência do componente do botão de zoom de um determinado campo do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"ZOOM_BUTTON_REFERENCE",< l_table >,< l_column >,[< l_alias >]) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência do botão de zoom. | Sim |
l_column |
| Nome da coluna do formulário da qual deseja-se recuperar a referência do botão de zoom. | Sim |
l_alias |
| 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
Tipo | Descrição |
---|---|
CHAR | Referência do componente do botão de zoom de um campo do formulário. |
Exemplo
LET l_zoom_button_reference = _ADVPL_get_property(l_form_reference,"ZOOM_BUTTON_REFERENCE","item","cod_item")
Método GET: ZOOM_REFERENCE
Referência do zoom de um determinado campo do formulário.
Sintaxe
_ADVPL_get_property(< l_form_reference >,"ZOOM_REFERENCE",< l_table >,< l_column >,[< l_alias >]) => CHAR
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual deseja-se recuperar a referência do zoom. | Sim |
l_column |
| Nome da coluna do formulário da qual deseja-se recuperar a referência do zoom. | Sim |
l_alias |
| Alias da tabela com a coluna do formulário da qual deseja-se recuperar a referência do zoom. | Não |
Retorno
Tipo | Descrição |
---|---|
CHAR | Referência do zoom de determinado campo do formulário. |
Exemplo
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.
Método SET: ACTIVATE
Inicia ou finaliza o formulário.
Sintaxe
CALL _ADVPL_set_property(< l_form_reference >,"ACTIVATE", < l_status >)
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_status | SMALLINT | Indicador que define se será ativado ou desativado o formulário. TRUE - Ativa o formulário FALSE - Desativa/Fecha o formulário. | Sim |
Para ativar ou desativar um formulário, deverá ter executado previamente o método "FORM" ou "INIT_FORM" para o mesmo.
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ACTIVATE",TRUE)
Método SET: BROWSE_VALUE
Atribui valor para uma determinada linha e coluna da operação 'Listar' do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"BROWSE_VALUE", < l_table >, < l_column >, < l_row >, < l_value >, [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual terá o valor alterado. | Sim |
l_column |
| Nome da coluna do formulário da qual terá o alterado. | Sim |
l_row |
| Número da linha do grid</span> da operação 'Listar' da qual terá o valor alterado. | Sim |
l_value |
| Valor a ser atribuído para a coluna da grid</span> da operação Listar do formulário. | Sim |
l_alias |
| Alias da tabela com a coluna do formulário da qual terá o valor alterado. | Não |
Exemplo
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
Método SET: CONTAINER_COLUMNS_COUNT
Inicia ou finaliza o formulário.
Sintaxe
CALL _ADVPL_set_property(< l_form_reference >,"CONTAINER_COLUMNS_COUNT", < l_columns >)
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_columns | SMALLINT | Quantidade máxima de colunas que irá definir o agrupamento dos grupos de componentes do formulário. | Sim |
Este método deve sempre ser chamado uma única vez na função de 'Before Load' do formulário.
Exemplo
CALL _ADVPL_set_property(l_form_reference,"CONTAINER_COLUMNS_COUNT",2)
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
_ADVPL_set_property(< l_form_reference >,"DETAIL_WHERE_CLAUSE", < l_where_clause >, < l_table >, [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_where_clause |
| Filtro de pesquisa SQL para ser utilizado na operação de pesquisa padrão do formulário. | Sim |
l_table |
| Nome da tabela da qual será definido o filtro. | Sim |
l_alias |
| Alias da tabela da qual será definido o filtro. | Não |
Este filtro será utilizado dentro das cláusulas de junção das tabelas no SQL.
Exemplo
##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'
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
_ADVPL_set_property(< l_form_reference >,"ENABLE_COMPONENTS", < l_status >, [< l_operation >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_status |
| Indicador que define se irá habilitar ou desabilitar os campos da tela para edição. TRUE - Habilitar campos FALSE - Desabilitar campos | Sim |
l_operation |
| 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. 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. Quando não for informado, será considerada valor FALSE por padrão. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ENABLE_COMPONENTS",TRUE,"update") CALL _ADVPL_set_property(l_form_reference,"ENABLE_COMPONENTS",FALSE,TRUE)
Método SET: ENABLE_VALID_FOREIGN_KEY
Habilita/desabilita a validação de chaves estrangeiras para determinada(s) tabelas do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_FOREIGN_KEY", < l_status >, [< l_table >], [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_status |
| 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 |
| Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves estrangeiras. Quando não for informar a tabela, todas as tabelas do formulário serão afetadas. | Não |
l_alias |
| Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves estrangeiras. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ENABLE_VALID_FOREIGN_KEY",FALSE,"item")
Método SET: ENABLE_VALID_NOT_NULL
Habilita/desabilita a validação de campos obrigatório para determinada(s) tabelas do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_NOT_NULL", < l_status >, [< l_table >], [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_status |
| 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 |
| Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de campos obrigatórios. Quando não for informada a tabela, todas as tabelas do formulário serão consideradas. | Não |
l_alias |
| Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de campos obrigatórios. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ENABLE_VALID_NOT_NULL",FALSE,"item")
Método SET: ENABLE_VALID_PRIMARY_KEY
Habilita/desabilita a validação de chaves primárias para determinada(s) tabelas do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"ENABLE_VALID_FOREIGN_KEY", < l_status >, [< l_table >], [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_status |
| 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 |
| Nome da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves primárias. Quando não for informar a tabela, todas as tabelas do formulário serão afetadas. | Não |
l_alias |
| Alias da tabela do formulário da qual deseja habilitar/desabilitar a validação de chaves primárias. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ENABLE_VALID_PRIMARY_KEY",FALSE,"item")
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
_ADVPL_set_property(< l_form_reference >,"FORM", < l_form_name >, <l_4glRecord1>, < l_4glRecord2 >, ..., <l_4GLrecordNz> )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário de cadastro (FRM1002) | Sim |
l_4glRecord (1,2,..,N) |
| 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. 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
CALL _ADVPL_set_property(l_form_reference,"FORM","man10021",mr_item,ma_item_man)
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
_ADVPL_set_property(< l_form_reference >,"GET_FOCUS", < l_table >, < l_column >, [< l_row >], [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Nome da tabela no formulário. | Sim |
l_column |
| Nome da coluna no formulário. | Sim |
l_row |
| Linha do grid do formulário para qual deseja forçar o foco. | Não |
l_alias |
| Alias da tabela com a coluna do formulário para qual deseja forçar o foco. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"GET_FOCUS","item","cod_item")
Método SET: HOTKEY
Define uma tecla de atalho para executar uma ação específica no formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"HOTKEY", < l_hotkey >, < l_function >, < l_description >)
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| 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. Lista 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
CALL _ADVPL_set_property(m_form, "HOTKEY", "CTRL-H", "xxx9999_funcao_especifica","Executa função específica")
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
_ADVPL_set_property(< l_form_reference >,"INIT_FORM", < l_form_name >, <l_4glRecord1>, < l_4glRecord2 >, ..., <l_4GLrecordNz> )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário de cadastro (FRM1002) | Sim |
l_4glRecord (1,2,..,N) |
| 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. 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
CALL _ADVPL_set_property(l_form_reference,"INIT_FORM","man10021",mr_item,ma_item_man)
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.
Esta ação somente é válida quando acionada no evento BEFORE_LOAD do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"PROPERTY", < l_property >, < l_value_property >, < l_table >, < l_column >, [< l_table_alias >] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_property |
| Nome da propriedade do componente da coluna do formulário. | Sim |
l_value_property |
| Valor a ser atribuído para a propriedade informada. | Sim |
l_table |
| Nome da tabela no formulário. | Sim |
l_column |
| Nome da coluna no formulário. | Sim |
l_table_alias |
| Alias da tabela com a coluna do formulário. | Não |
Exemplo
CALL _ADVPL_set_property(m_form_reference,"PROPERTY","IS_VISIBLE",FALSE,"empresa","rastreada","a")
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
_ADVPL_set_property(< l_form_reference >,"ORDER_BY", < l_table_alias >, < l_column >, [< l_order >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table_alias |
| Nome da tabela OU alias. Caso 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 |
| 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 |
| Ordenação da coluna a ser respeitada. Quando não informado irá assumir automaticamente a ordenação como ASC. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ORDER_BY","item","cod_item","DESC")
Método SET: VALUE
Atribui valor para determinado campo do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"VALUE", < l_table>, < l_column >, < l_value >, [< l_row >], [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_table |
| Tabela da coluna do formulário da qual terá o valor alterado. | Sim |
l_column |
| 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 |
| Linha do grid do formulário da qual terá o valor alterado | Não |
l_alias |
| Alias da tabela com a coluna do formulário da qual terá o valor alterado. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"VALUE","item","cod_empresa","50")
Método SET: WHERE_CLAUSE
Filtro de consulta padrão para o formulário que será utilizado para toda pesquisa realizada.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"WHERE_CLAUSE", < l_where_clause >)
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_where_clause |
| Filtro de pesquisa SQL para ser utilizado na operação de pesquisa padrão do formulário. | Sim |
Este filtro será utilizado no filtro WHERE do SQL padrão do metadado.
Exemplo
#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'
Método SET: REFRESH_COMPONENTS
Força atualização da exibição de todos campos do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"REFRESH_COMPONENTS")
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"REFRESH_COMPONENTS")
Método SET: ZOOM_NAME
Atribui valor para uma determinada linha e coluna da operação 'Listar' do formulário.
Sintaxe
_ADVPL_set_property(< l_form_reference >,"ZOOM_NAME", < l_zoom_name >, < l_table >, < l_column >, [< l_alias >])
Parâmetros
Nome | Tipo | Descrição | Obrigatório? |
---|---|---|---|
l_form_reference |
| Referência do formulário. | Sim |
l_zoom_name |
| Nome do novo zoom que será atribuído para o campo. Este zoom deve estar cadastrado no programa "FRM1008 - Zoom". | Sim |
l_table |
| Nome da tabela da coluna do formulário da qual terá o zoom alterado. | Sim |
l_column |
| Nome da coluna do formulário da qual terá o zoom alterado. | Sim |
l_alias |
| Alias da tabela com a coluna do formulário da qual terá o zoom alterado. | Não |
Exemplo
CALL _ADVPL_set_property(l_form_reference,"ZOOM_NAME","zoom_item_man","item","cod_item")
Sintaxe
LET m_form_reference = _ADVPL_create_component(NULL,"LFORMMETADATA") CALL _ADVPL_set_property(m_form_reference,"INIT_FORM",<form_name>,<4GLrecord1>,<4GLrecord2>,...,<4GLrecordN>)
Exemplo
Clique no link na lateral direita para expandir o código de exemplo CRUD1.
#------------------------------------------------------------------------------------------------------------# # 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() #------------------------------------------------------------------# 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
#------------------------------------------------------------------------------------------------------------# # PROGRAMA: crud2 # # OBJETIVO: Modelo 02 de formulário CRUD (MASTER X DETAIL) # #------------------------------------------------------------------------------------------------------------# # 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_crud2_master # # (crud_id CHAR(10) NOT NULL, # # crud_description CHAR(30) NOT NULL, # # crud_status CHAR(1) NOT NULL); # # # # ALTER TABLE frm_modelo_crud2_master ADD CONSTRAINT pk_frm_modelo_crud2_master # # PRIMARY KEY (crud_id); # # INFORMIX: # # ALTER TABLE frm_modelo_crud2_master ADD CONSTRAINT PRIMARY KEY (crud_id) # # CONSTRAINT pk_frm_modelo_crud2_master; # # # # # # CREATE TABLE frm_modelo_crud2_detail # # (crud_id CHAR(10) NOT NULL, # # crud_sequence SMALLINT NOT NULL, # # crud_datetime DATETIME YEAR TO SECOND NOT NULL, (oracle e sqlserver - tipo DATE) # # crud_type CHAR(1) NOT NULL, # # crud_text CHAR(100) NOT NULL) # # # # ALTER TABLE frm_modelo_crud2_detail ADD CONSTRAINT pk_frm_modelo_crud2_detail # # PRIMARY KEY (crud_id,crud_sequence); # # INFORMIX: # # ALTER TABLE frm_modelo_crud2_detail ADD CONSTRAINT PRIMARY KEY (crud_id,crud_sequence) # # CONSTRAINT pk_frm_modelo_crud2_detail; # #------------------------------------------------------------------------------------------------------------# DATABASE logix GLOBALS DEFINE p_user LIKE usuarios.cod_usuario END GLOBALS DEFINE mr_frm_modelo_crud2_master RECORD crud_id CHAR(10), crud_description CHAR(30), crud_status CHAR(1) END RECORD DEFINE ma_frm_modelo_crud2_detail ARRAY[50] OF RECORD crud_id CHAR(10), crud_sequence SMALLINT, crud_text CHAR(100), crud_datetime DATETIME YEAR TO SECOND, crud_type CHAR(1) END RECORD DEFINE m_count_crud2_detail INTEGER DEFINE m_form_reference, m_container_reference VARCHAR(10) DEFINE m_crud2_detail_table_reference VARCHAR(10) DEFINE m_vt_crud_status_image_reference VARCHAR(10) DEFINE m_vt_crud_status_text_reference VARCHAR(10) DEFINE m_status_process SMALLINT DEFINE m_progressbar_reference VARCHAR(10) #------------------------------------------------------------------------------# FUNCTION crud2() #------------------------------------------------------------------------------# RETURN crud2_executeOperation(NULL,NULL,NULL) END FUNCTION #------------------------------------------------------------------# FUNCTION crud2_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) RETURN crud2_executeOperation(NULL,NULL,l_container_reference) END FUNCTION #-----------------------------------------------------------------------------------# FUNCTION crud2_executeOperation(l_operation,l_where_clause,l_container_reference) #-----------------------------------------------------------------------------------# DEFINE l_operation CHAR(050) DEFINE l_where_clause CHAR(500) DEFINE l_container_reference VARCHAR(10) DEFINE l_status SMALLINT LET l_status = FALSE LET m_container_reference = l_container_reference IF crud2_load_form() THEN IF l_operation <> " " THEN LET l_status = _ADVPL_get_property(m_form_reference,"EXECUTE_OPERATION",UPSHIFT(l_operation),l_where_clause CLIPPED) ELSE LET l_status = _ADVPL_set_property(m_form_reference,"ACTIVATE",TRUE) LET m_form_reference = NULL END IF END IF RETURN l_status END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_load_form() #------------------------------------------------------------------------------# DEFINE l_ind SMALLINT IF m_form_reference IS NULL THEN #Aqui no parâmetro da função LOG_initApp deve-se utilizar a chave de sistema do módulo Logix correspondente #Vide chaves de sitemas disponíveis em https://tdn.totvs.com/display/LLOG/LOG_InitApp IF LOG_initApp("PADRAO") <> 0 THEN RETURN FALSE END IF INITIALIZE mr_frm_modelo_crud2_master,ma_frm_modelo_crud2_detail TO NULL FOR l_ind = 1 TO arrayLength(ma_frm_modelo_crud2_detail) INITIALIZE ma_frm_modelo_crud2_detail[l_ind].* TO NULL END FOR 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,"FORM","crud2",mr_frm_modelo_crud2_master,ma_frm_modelo_crud2_detail) 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 crud2_after_load() #------------------------------------------------------------------------------# LET m_crud2_detail_table_reference = _ADVPL_get_property(m_form_reference,"TABLE_REFERENCE","frm_modelo_crud2_detail") CALL _ADVPL_set_property(m_crud2_detail_table_reference,"CAN_COPY_ROW",FALSE) LET m_vt_crud_status_image_reference = _ADVPL_get_property(m_form_reference,"COMPONENT_REFERENCE","frm_modelo_crud2_master","vt_crud_status_image") LET m_vt_crud_status_text_reference = _ADVPL_get_property(m_form_reference,"COMPONENT_REFERENCE","frm_modelo_crud2_master","vt_crud_status_text") CALL _ADVPL_set_property(m_crud2_detail_table_reference,"BEFORE_EDIT_ROW","crud2_detail_before_edit_row") CALL _ADVPL_set_property(m_form_reference,"ORDER_BY","frm_modelo_crud2_master","crud_id","DESC") IF NOT LOGIN_logix_userIsAdministrator(p_user) THEN #Apenas usuarios adminiistradores tem acesso a funncionalidade de DELETE CALL LOG_visible_toolbar_button(m_form_reference,"delete",FALSE) END IF RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_create_before_input() #------------------------------------------------------------------------------# #Inicializar contador de linhas de grid numa ação de inclusao/copia q pode ser usado para consistencias no final da operação LET m_count_crud2_detail = 0 LET mr_frm_modelo_crud2_master.crud_status = 'A' CALL crud2_display_crud_status(mr_frm_modelo_crud2_master.crud_status) RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_create_before_confirm() #------------------------------------------------------------------------------# #Consistencias antes de iniciar a inclusão de registro. Em caso de falha ou falta de permissão, retornar FALSE. RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_create_confirm() #------------------------------------------------------------------------------# #Consistencias de inclusão de registro IF NOT crud2_update_before_confirm() THEN RETURN FALSE END IF RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_update_before_input() #------------------------------------------------------------------------------# #Recuperar total de linhas do GRID existentes no inicio de uma ação de modificação, caso precise validar a mudança de total de linhas ao final da operação LET m_count_crud2_detail = _ADVPL_get_property(m_crud2_detail_table_reference,"ITEM_COUNT") CALL crud2_display_crud_status(mr_frm_modelo_crud2_master.crud_status) RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_update_before_confirm() #------------------------------------------------------------------------------# DEFINE l_ind SMALLINT DEFINE l_count SMALLINT DEFINE l_changed SMALLINT #Consistencias antes de iniciar o processo de exclusão de registro. Em caso de falha ou falta de permissão, retornar FALSE. CALL LOG_clear_status_bar_text(m_form_reference) LET l_count = _ADVPL_get_property(m_crud2_detail_table_reference,"ITEM_COUNT") FOR l_ind = 1 TO l_count IF ma_frm_modelo_crud2_detail[l_ind].crud_sequence <= 0 THEN CALL LOG_show_status_bar_text(m_form_reference,"Sequencia precisa ser maior que zero.","ERROR_TEXT") CALL LOG_atribui_foco_componente_tabela(m_form_reference,'frm_modelo_crud2_detail',"crud_sequence",l_ind) RETURN FALSE END IF IF ma_frm_modelo_crud2_detail[l_ind].crud_sequence > 999 THEN CALL LOG_show_status_bar_text(m_form_reference,"Sequencia precisa ser entre 1 e 999.","ERROR_TEXT") CALL LOG_atribui_foco_componente_tabela(m_form_reference,'frm_modelo_crud2_detail',"crud_sequence",l_ind) RETURN FALSE END IF IF LENGTH(ma_frm_modelo_crud2_detail[l_ind].crud_text) <= 3 THEN CALL LOG_show_status_bar_text(m_form_reference,"Texto precisa ter mais de 3 caracteres.","ERROR_TEXT") CALL LOG_atribui_foco_componente_tabela(m_form_reference,'frm_modelo_crud2_detail',"crud_text",l_ind) RETURN FALSE END IF END FOR RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_update_confirm() #------------------------------------------------------------------------------# #Consistencias de modificação de registro RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_delete_before_confirm() #------------------------------------------------------------------------------# DEFINE l_menu_button_reference VARCHAR(10) DEFINE l_question VARCHAR(500) #Consistencias antes de iniciar o processo de exclusão de registro. Em caso de falha ou falta de permissão, retornar FALSE. #Modificando o texto padrão da pergunta de exclusão. LET l_question = l_question CLIPPED, "\nEsta ação irá excluir todas as sequências apresentadas para este registro. \n\nConfirma exclusão?" LET l_menu_button_reference = _ADVPL_get_property(m_form_reference,"MENU_BUTTON_REFERENCE","delete") CALL _ADVPL_set_property(l_menu_button_reference,"EVENT_MESSAGE",l_question) RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_delete_confirm() #------------------------------------------------------------------------------# #Consistencias e ajustes durante transação de exclusão de registro. Em caso de falha, retornar FALSE. RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_update_status_confirm() #------------------------------------------------------------------------------# DEFINE l_status CHAR(1) IF STRING_isEmpty(mr_frm_modelo_crud2_master.crud_id) THEN CALL LOG_show_status_bar_text(m_form_reference,"Efetue primeiramente a pesquisa.","WARNING_TEXT") RETURN FALSE END IF LET l_status = mr_frm_modelo_crud2_master.crud_status IF l_status = "A" THEN IF NOT LOG_question("Confirma inativação do registro?") THEN CALL LOG_show_status_bar_text(m_form_reference,"Operação de inativação cancelada.","WARNING_TEXT") RETURN FALSE END IF LET l_status = "I" ELSE IF NOT LOG_question("Confirma reativação do registro?") THEN CALL LOG_show_status_bar_text(m_form_reference,"Operação de reativação cancelada.","WARNING_TEXT") RETURN FALSE END IF LET l_status = "A" END IF WHENEVER ERROR CONTINUE UPDATE frm_modelo_crud2_master SET crud_status = l_status WHERE frm_modelo_crud2_master.crud_id = mr_frm_modelo_crud2_master.crud_id WHENEVER ERROR STOP IF sqlca.sqlcode <> 0 THEN CALL LOG_show_status_bar_text(m_form_reference,"Falha ao ajustar a situação do registro. ("||log0030_mensagem_get_texto()||")","ERROR_TEXT") RETURN FALSE END IF CALL LOG_show_status_bar_text(m_form_reference,"Situação do registro alterada com sucesso.","INFO_TEXT") LET mr_frm_modelo_crud2_master.crud_status = l_status CALL crud2_display_crud_status() RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_cancel_input() #------------------------------------------------------------------------------# LET mr_frm_modelo_crud2_master.crud_status = NULL CALL crud2_display_crud_status() END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_find_before_input() #------------------------------------------------------------------------------# DEFINE l_construct_reference VARCHAR(10) LET mr_frm_modelo_crud2_master.crud_status = NULL CALL crud2_display_crud_status() #Desabilitar a opção ORDER BY do filtro de pesquisa LET l_construct_reference = _ADVPL_get_property(m_form_reference,"CONSTRUCT_REFERENCE") CALL _ADVPL_set_property(l_construct_reference,"VISIBLE_ORDER_BY",FALSE) RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_find_confirm() #------------------------------------------------------------------------------# #Carregar informações adicionais após leitura/paginação de registro. CALL crud2_display_crud_status() RETURN TRUE END FUNCTION #--------------------------------------------------# FUNCTION crud2_display_crud_status() #--------------------------------------------------# DEFINE l_crud_status CHAR(1) #Atualizar a imagem de status apresentada na tela CALL _ADVPL_set_property(m_vt_crud_status_image_reference,"ENABLE",TRUE) CASE mr_frm_modelo_crud2_master.crud_status WHEN "A" CALL _ADVPL_set_property(m_vt_crud_status_image_reference,"IMAGE","VERDE") CALL _ADVPL_set_property(m_vt_crud_status_text_reference,"TEXT","Ativo") WHEN "I" CALL _ADVPL_set_property(m_vt_crud_status_image_reference,"IMAGE","VERMELHO") CALL _ADVPL_set_property(m_vt_crud_status_text_reference,"TEXT","Inativo") OTHERWISE CALL _ADVPL_set_property(m_vt_crud_status_image_reference,"IMAGE","CINZA") CALL _ADVPL_set_property(m_vt_crud_status_text_reference,"TEXT","Nenhuma pesquisa ativa") END CASE CALL _ADVPL_set_property(m_vt_crud_status_text_reference,"POSITION",0,2) END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_browse_before_input() #------------------------------------------------------------------------------# DEFINE l_column_value CHAR(50), l_idx INTEGER, l_browse_item_count INTEGER { LET l_browse_item_count = _ADVPL_get_property(m_form_reference,"BROWSE_ITEM_COUNT") FOR l_idx = 1 TO l_browse_item_count #Caso precise complementar o valor de alguma coluna na opção LISTAR deve-se preeencher aqui #Recuperar valor de um dado da grid da opção LISTAR LET l_column_value = _ADVPL_get_property(m_form_reference,"BROWSE_VALUE","<table_name>","<column_name>",l_idx) #Ajustar valor de um dado da grid da opção LISTAR CALL _ADVPL_set_property(m_form_reference,"BROWSE_VALUE","<table_name>","<column_name>",l_idx,"<column_value>") END FOR } RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_detail_after_insert_row() #------------------------------------------------------------------------------# DEFINE l_row_selected SMALLINT #Ações para executar após inclusão de nova linha em GRID LET l_row_selected = _ADVPL_get_property(m_crud2_detail_table_reference,"ROW_SELECTED") LET ma_frm_modelo_crud2_detail[l_row_selected].crud_sequence = l_row_selected LET ma_frm_modelo_crud2_detail[l_row_selected].crud_datetime = CURRENT YEAR TO SECOND END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_detail_before_delete_row() #------------------------------------------------------------------------------# DEFINE l_row_selected SMALLINT #Ações para consistencia de eliminação de linha do GRID. Em caso de falha ou falta de permissão retornar FALSE. { LET l_row_selected = _ADVPL_get_property(m_crud2_detail_table_reference,"ROW_SELECTED") IF <CONDICAO> THEN RETURN FALSE END IF } RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_detail_before_edit_row() #------------------------------------------------------------------------------# DEFINE l_row_selected SMALLINT DEFINE l_column_name CHAR(50) #Consistencia para avalias se os dados da linha corrente do GRID podem ser editadas pelo usuário. Em caso de bloqueio retornar FALSE. #Recuperar o nome da coluna que está tentando editar no GRID LET l_column_name = _ADVPL_get_property(m_crud2_detail_table_reference,"COLUMN_NAME") # Recupera o nome da coluna e a linha em edição. LET l_row_selected = _ADVPL_get_property(m_crud2_detail_table_reference,"ROW_SELECTED") IF ma_frm_modelo_crud2_detail[l_row_selected].crud_datetime IS NULL THEN LET ma_frm_modelo_crud2_detail[l_row_selected].crud_datetime = CURRENT YEAR TO SECOND END IF IF mr_frm_modelo_crud2_master.crud_status = "I" THEN # Não permite modificar dados das linhas do GRID da tabela DETALHE CALL LOG_show_status_bar_text(m_form_reference,"Somente é permitida edição de informações da lista para registro ativo.","WARNING_TEXT") RETURN FALSE END IF RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_detail_crud_text_valid() #------------------------------------------------------------------------------# #Consistencias da edição de valor de um campo do formulário. Em caso de falha do valor informado retornar FALSE e #isso irá bloquear a saida do campo até que usuário corrija o valor informado. #Esta função pode ser usada para inicializar valor de campo também quando necessário. RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_master_crud_status_change_event() #------------------------------------------------------------------------------# CALL LOG_clear_status_bar_text(m_form_reference) IF mr_frm_modelo_crud2_master.crud_status = "I" THEN IF NOT LOGIN_logix_userIsAdministrator(p_user) THEN CALL LOG_show_status_bar_text(m_form_reference,"Opção disponível apenas para usuários administradores ajustar status para INATIVO.","WARNING_TEXT") RETURN FALSE END IF END IF RETURN TRUE END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_process_confirm() #------------------------------------------------------------------------------# CALL LOG_clear_status_bar_text(m_form_reference) IF NOT LOGIN_logix_userIsAdministrator(p_user) THEN CALL LOG_show_status_bar_text(m_form_reference,"Opção disponível apenas para usuários administradores.","WARNING_TEXT") RETURN FALSE END IF IF NOT log_question('Esta operação irá realizar um processamento com acompanhamento de barra de progresso.\n\nDeseja iniciar o processamento?') THEN RETURN FALSE END IF LET m_progressbar_reference = _ADVPL_create_component(NULL, "LPROGRESSPOPUP") CALL _ADVPL_set_property(m_progressbar_reference, "TITLE", "Processamento Geral") CALL _ADVPL_set_property(m_progressbar_reference, "PROGRESS_TYPE", "PROCESS" ) CALL _ADVPL_set_property(m_progressbar_reference, "MAX_VALUE", 3 ) # Total de registros para completar barra de progresso em 100% CALL _ADVPL_set_property(m_progressbar_reference, "PROGRESS_EVENT", "crud2_process") CALL _ADVPL_set_property(m_progressbar_reference, "TIME_REFRESH", 0) CALL _ADVPL_get_property(m_progressbar_reference, "INIT_PROGRESS") CALL LOG_progresspopup_set_reference(m_progressbar_reference) RETURN m_status_process END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_process() #------------------------------------------------------------------------------# #Função de processamento acionado pela barra de progresso. SLEEP 1 CALL _ADVPL_set_property(m_progressbar_reference,"VALUE",1) #mostrar andamento da barra de progresso SLEEP 1 CALL _ADVPL_set_property(m_progressbar_reference,"VALUE",2) #mostrar andamento da barra de progresso SLEEP 1 CALL _ADVPL_set_property(m_progressbar_reference,"VALUE",3) #mostrar andamento da barra de progresso CALL LOG_show_status_bar_text(m_form_reference,"Processamento concluído com sucesso.","info") LET m_status_process = TRUE #Processamento concluido com sucesso { CALL LOG_show_status_bar_text(m_form_reference,"Processamento concluído com erros","WARNING_TEXT") LET m_status_process = FALSE #Processamento concluido com erro } #Encerrar barra de progresso CALL _ADVPL_set_property(m_progressbar_reference, "FINISH") RETURN m_status_process END FUNCTION #------------------------------------------------------------------------------# FUNCTION crud2_version_info() #------------------------------------------------------------------------------# RETURN "$Archive: /Logix/Fontes_Doc/Sustentacao/V12/V12/framework/sgdp/programas/crud2.4gl $|$Revision: 20 $|$Date: 26/08/22 21:43 $|$Modtime: 26/08/22 21:43 $" # Informações do controle de versão do SourceSafe - Não remover esta linha (FRAMEWORK) END FUNCTION
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 (Formulário CRUD Mestre) apresentado no primeiro 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.
O arquivo CRUD2.ZIP anexo contém o arquivo XML do (formulário + tabelas) para importar via sincronizador metadado e o código fonte 4GL de exemplo do programa metadado CRUD2 (Formulário CRUD Mestre X Detalhe) apresentado no segundo exemplo acima.
Este formulário possui também a programação de alguns eventos adicionais de controle de edição e consistências, apresenta um objeto de imagem que é alterado por uma operação do menu (alteração de situação) e possui um exemplo de botão de processamento que executa uma rotina apresentando uma tela com barra de progresso.