Para controlar quando o usuário pode ou não editar o conteúdo de determinadas células em um GRID é possível fazer uso de uma função 4GL que é definida para ser invocada a partir do evento BEFORE_EDIT_ROW.
Exemplo
DEFINE m_table_reference VARCHAR(10)
### Na função acionada no evento AFTER_LOAD do formulário deve-se definir a função que será acionada na tentativa de editar alguma célula de um GRID
#----------------------------------------------#
FUNCTION <programa>_after_load
#----------------------------------------------#
DEFINE l_table_reference VARCHAR(10)
# Recupera a referência do GRID DO formulário.
LET m_table_reference = _ADVPL_get_property(m_form_reference,"TABLE_REFERENCE","<tabela_grid>")
# Definir evento para restringir edição de células no GRID (BEFORE_EDIT_ROW) utilizando a referencia do GRID
CALL _ADVPL_set_property(m_table_reference,"BEFORE_EDIT_ROW","<programa>_<tabela_grid>_before_edit_row")
RETURN TRUE
END FUNCTION
### Na função definida para o gatilho BEFORE_EDIT_ROW do grid deve-se incluir a lógica desejada para restringir edição das células do GRID.
### O evento BEFORE_EDIT_ROW será acionado em toda tentativa de iniciar a edição de uma célula de um GRID.
#----------------------------------------------------#
FUNCTION <programa>_<tabela_grid>_before_edit_row()
#----------------------------------------------------#
DEFINE l_column_name CHAR(50)
DEFINE l_row_selected SMALLINT
# Recupera o nome da coluna e a linha atual do GRID.
LET l_column_name = _ADVPL_get_property(m_table_reference,"COLUMN_NAME")
LET l_row_selected = _ADVPL_get_property(m_table_reference,"ROW_SELECTED")
IF l_row_selected = 1 THEN
CALL LOG_show_status_bar_text(<form_reference>,"Os dados da linha 1 não podem ser editados".","WARNING_TEXT")
RETURN FALSE ### Não permite edição no GRID
IF l_column_name = "<nome_coluna_grid>" THEN
CALL LOG_show_status_bar_text(<form_reference>,"Este dado não pode ser editado".","WARNING_TEXT")
RETURN FALSE ### Não permite edição no GRID
END IF
RETURN TRUE ### Permite ação de edição no GRID
END FUNCTION
O exemplo acima mostra um exemplo que não permite editar dados da linha 1 do GRID e nem tampouco editar uma determinada coluna, independente da linha.
Em caso de emitir mensagens de alerta ao usuário neste evento, evitem usar funções de mensagens que abrem telas para que o usuário tenha que clicar em OK para fechar a tela de mensagem. Para mensagens tente usar o alerta na barra de status usando a função LOG_show_status_bar_text(<form_reference>,<mensagem>,<WARNING_TEXT ou ERROR_TEXT>).
Import HTML Content
Visão Geral
Conteúdo das Ferramentas