Histórico da Página
Pagetitle | ||||
---|---|---|---|---|
|
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:
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: BROWSE_ITEM_COUNTQuantidade de registros encontrados na operação 'Listar' do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
Método GET: BROWSE_VALUEValor de uma determinada linha e coluna da operação 'Listar' do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: COMPONENT_REFERENCEReferência do componente de um determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: COMPONENT_IS_ENABLEIdentifica quando um campo do formulário está habilitado. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: COMPONENT_TYPERetorna o tipo de componente definido para um campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: CONSTRUCT_REFERENCEReferência do filtro de consulta utilizado na operação de pesquisa do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: CURRENT_OPERATIONOperação atual em execução no formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método GET: EXECUTE_OPERATIONExecuta uma determinada operação do formulário, conforme cadastrada no programa "FRM1001 - Barra de Ferramentas". Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: FORM_NAMENome do formulário Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: GROUP_REFERENCE ou GET: CONTAINER_REFERENCEReferência do componente do grupo de componentes de determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: LABEL_REFERENCEReferência do componente de descrição de um determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
Método GET: MENU_BUTTON_REFERENCEReferência de um botão da barra de ferramentas do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: MENUBAR_REFERENCEReferência de um botão da barra de ferramentas do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método GET: STATUS_BAR_REFERENCEReferência da barra de status do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método GET: TABLE_REFERENCEReferência da barra de status do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
Método GET: VALUEValor de um determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: ZOOM_BUTTON_REFERENCEReferência do componente do botão de zoom de um determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método GET: ZOOM_REFERENCEReferência do zoom de um determinado campo do formulário. Sintaxe
Parâmetros
Retorno
Exemplo
|
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 | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método SET: ACTIVATEInicia ou finaliza o formulário. Sintaxe
Parâmetros
Para ativar ou desativar um formulário, deverá ter executado previamente o método "FORM" ou "INIT_FORM" para o mesmo. Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
Método SET: BROWSE_VALUEAtribui valor para uma determinada linha e coluna da operação 'Listar' do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método SET: CONTAINER_COLUMNS_COUNTInicia ou finaliza o formulário. Sintaxe
Parâmetros
Este método deve sempre ser chamado uma única vez na função de 'Before Load' do formulário. Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método SET: DETAIL_WHERE_CLAUSEFiltro de consulta padrão para uma tabela de detalhe. Este filtro será utilizado para cada pesquisa que o usuário executar. Sintaxe
Parâmetros
Este filtro será utilizado dentro das cláusulas de junção das tabelas no SQL. Exemplo
Neste exemplo acima, quando o usuário executar a pesquisa no formulário o filtro SQL será montado da seguinte forma:
|
Expandir | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
Método SET: ENABLE_COMPONENTSHabilita/desabilita os campos em tela que estiverem registrados no formulário como Editável no cadastro de formulários cadastrais (FRM1002). Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método SET: ENABLE_VALID_FOREIGN_KEYHabilita/desabilita a validação de chaves estrangeiras para determinada(s) tabelas do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método SET: ENABLE_VALID_NOT_NULLHabilita/desabilita a validação de campos obrigatório para determinada(s) tabelas do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método SET: ENABLE_VALID_PRIMARY_KEYHabilita/desabilita a validação de chaves primárias para determinada(s) tabelas do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||
Método SET: FORMCarrega 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
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método SET: GET_FOCUSForçar o foco do cursor para um determinado campo do formulário, sendo que este apenas obterá foco se permitido. Sintaxe
Parâmetros
Exemplo
|
Expandir | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||
Método SET: HOTKEYDefine uma tecla de atalho para executar uma ação específica no formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||
Método SET: INIT_FORMJunção dos métodos "FORM" e "ACTIVATE" para carregar as informações do formulário e executá-lo em seguida. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
Método SET: PROPERTYAjustar 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
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
Método SET: ORDER_BYOrdem de consulta padrão para determinado(s) campos do formulário que será utilizada para toda pesquisa executada no formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||
Método SET: VALUEAtribui valor para determinado campo do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||
Método SET: WHERE_CLAUSEFiltro de consulta padrão para o formulário que será utilizado para toda pesquisa realizada. Sintaxe
Parâmetros
Este filtro será utilizado no filtro WHERE do SQL padrão do metadado. Exemplo
Neste exemplo acima, quando o usuário executar a pesquisa, este filtro será montado da seguinte forma:
|
Expandir | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||
Método SET: REFRESH_COMPONENTSForça atualização da exibição de todos campos do formulário. Sintaxe
Parâmetros
Exemplo
|
Expandir | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
Método SET: ZOOM_NAMEAtribui valor para uma determinada linha e coluna da operação 'Listar' do formulário. Sintaxe
Parâmetros
Exemplo
|
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
Clique no link na lateral direita para expandir o código de exemplo.
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#------------------------------------------------------------------------------------------------------------# # 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 |
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.
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#------------------------------------------------------------------------------------------------------------#
# 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.
View file | ||||
---|---|---|---|---|
|
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.
View file | ||||
---|---|---|---|---|
| ||||
View file | ||||
|