Internos

Scripts podem ser executados antes e depois dos seguintes eventos de uma tabela (veja também, eventos externos):

EventoNomeDescrição
AntesDepois
Abrir bOpenaOpenAbrir a tabela
Editar bEditaEditEstado de Edição
Inserir bIns aIns Estado de Inserção
Salvar bPostaPostGravar os dados, post
Remover bDel aDel Remover os dados. Para suprimir a confirmação que Argow fazantes de apagar, utilize onConfirmDel=F
ModificarbMod aMod Modificar, valido para as quatro operações. Para conhecer a operação ativa, ler sf.KeyAction
Cancelar bCancel aCancel Cancelar a operação
AtualizarbRefreshaRefreshAtualizar, reler os dados, refresh
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)
  3. aIns, momento adequado para atribuir valores iniciais às colunas
  4. Tabela em modo de inserção. Se usuário cancelar, terminou o processo (com os eventos bCancel e aCancel). 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;

Externos

Scripts podem ser indicados para outras aplicações (como Argow Web/MVC) para as três operações básicas:

EventoNomeOperação
AntesDepois
Atualização x.beforeUpdatex.afterUpdateUpdate
Inserção x.beforeInsertx.afterInsertInsert
Remoção x.beforeDeletex.afterDeleteDelete

Além das variáveis Argow o especifação do script pode conter :PK e :TableName:

  x.afterUpdate= report.do( :TableName, :Pk, :Ar_UserName );