Scripts podem ser executados antes e depois dos seguintes eventos de uma tabela:

EventoNomeDescrição
AntesDepois
Abrir bOpenaOpenAbrir a tabela
Editar bEditaEditEstado de Edição
Inserir bIns aIns Estado de Inserção
AtualizarbPostaPostEnviar os dados, post
Remover bDel aDel Remover os dados
ModificarbMod aMod Modificar, valido para as quatro operações. Para conhecer a operação ativa, ler sf.KeyAction
Select onSelect Ao selecionar a coluna, recebe como parâmetro o nome da coluna, e retorna true se pode selecionar, false se não

Notar que os eventos Editar e Inserir se referem a mudança no estado da tabela. Por exemplo, em uma janela PAD:

  1. Tabela em modo de consulta, usuário pressiona a tecla Insert, ou clica no botão [+]
  2. bIns, este evento pode ser utilizado para confirmar privilégios de escrita e, se for necessário, a ação pode ser cancelada pelo script (retornando false ou sf.abortRequested)
  3. aIns, momento adequado para atribuir valores iniciais às colunas
  4. Tabela em modo de inserção. Se usuário cancelar, terminou o processo. Se salva os dados, continua:
  5. bPost, lugar conveniente para validação de dados. Se não satisfizer, o script pode cancelar a gravação e voltar a edição (retornando false)
  6. aPost, os dados foram salvos, atualizar outras informações
  7. Tabela em modo de consulta

Os script a serem executados são informados nas colunas:

Quando o mesmo evento é especificado em mais de um itemAction, eles são executados na ordem acima.

Os eventos que ocorrem antes da mudança, podem solicitar o cancelamento da ação (retornando false). No exemplo abaixo, o script não permite que usários padrão modifiquem a tabela tbCliente nas segundas-feiras.

araTableDefaultAccess
applicationtableNameitemAction
arDemotbCLIENTEbMod=naoModificar;
dicScript
scriptNamescriptAliasscriptBodydescription
naoModificarNão Modificarprocedure naoMod...Não permite modificar nas 2
function naoModificar: boolean;
begin
  if sf.User.IsPower or not ( DayOfWeek( sf.now() ) = 2 ) then exit;
  sf.shell.sayInfo(
      sf.UserName + ', as segundas-feiras não é possível modificar esta tabela.',
      'Suporte');
  result:= false; // Não continuar
end;