4D Write v14

WR ON EVENT

Página Inicial

 
4D Write v14
WR ON EVENT

WR ON EVENT 


 

WR ON EVENT ( area ; evento ; metodo ) 
Parâmetro Tipo   Descrição
area  Inteiro longo in Área 4D Write
evento  Inteiro longo in Código do evento
metodo  cadeia in Nome do método a executar

O comando WR ON EVENT instala metodo como o método a chamar cada vez que evento ocorre em area. Os eventos se passam diretamente a metodo antes de ser tratados por 4D Write.

Se area é igual a 0, metodo se converte no método de evento por padrão para todas as áreas 4D Write até que a base seja fechada. Se uma área tem seu próprio método de evento instalado, esse método é chamado em lugar do método por padrão.

No parâmetro evento, passe um valor que indique o evento a interceptar. Pode utilizar uma das seguintes constantes predefinidas, do tema WR Events:

Constante Tipo Valor
wr on key Inteiro longo 0
wr on double click Inteiro longo 1
wr on single click Inteiro longo 2
wr on triple click Inteiro longo 3
wr on right click Inteiro longo 4
wr on activate Inteiro longo 5
wr on printing Inteiro longo 7
wr on ruler Inteiro longo 8
wr on compute references Inteiro longo 9
wr on close Inteiro longo 10
wr on drag Inteiro longo 11
wr on drop Inteiro longo 12
wr on timer Inteiro longo 13


Para ativar metodo para todos os eventos, passe -1 em evento.

Quando se chama, metodo recebe sete parâmetros que descrevem o estado de area no momento do evento. Você deve explicitamente declarar estes parâmetros utilizando as diretivas do compilador. Na seguinte tabela se descrevem os parâmetros recebidos por metodo:
ParâmetroTipoDescrição
$1Inteiro longoárea 4D Write4
$2InteiroTecla maiús
$3InteiroAlt (Windows), Opção (Mac OS)
$4InteiroCtrl (Windows), Comando (Mac OS)
$5InteiroTipo de evento
$6InteiroSeu valor varia em função do parâmetro evento
$0Inteiro longoSe método devolve um valor

$1 devolve o inteiro longo que é o identificador da área onde ocorreu o evento. $2, $3 e $4 descrevem se uma tecla modificadora específica estava oprimida ao momento do evento. Se o valor é igual a 0, a tecla não foi pressionada. Se o valor é igual a 1, a tecla foi pressionada. $5 devolve o tipo de evento. $6 varia segundo o tipo de evento.

Variáveis método e o parâmetro evento ($6)

  • Se evento é igual a 0, $6 devolve o código da tecla que chama ao evento.
  • Se evento é igual a 1 ou 2, $6 indica se o clique ou dobre clique se produziu em uma referência. Se $6 é igual a 0, não foi selecionada uma referência. Se $6 é igual a 1, a referencia foi selecionada.
    Nota: metodo pode ser chamado antes da gestão do clique se realiza uma das seguintes ações:
    • Clique ou dobre clique em uma referência (hyperlink, expressão 4D ou HTML)
    • Clique direito (em Windows) ou Controle-clique (em Mac OS). Em Mac OS, ao pressionar a tecla Controle enquanto faz clique geralmente mostra um menu emergente.
      Em Windows, clique direito geralmente mostra um menu deslocável. Ambos menus mostram a lista dos campos da base. Para uma melhor compatibilidade, se recomenda utilizar o evento 4 (wr on right click).
  • Se evento é igual a 3, $6 se refere a seleção de parágrafo. Um triplo clique pode ser realizado em uma referência a não ser que um método de evento tenha sido instalado para o dobre clique e tenha sido interceptado por $0:=1. Neste caso, $6 não é significativa.
  • Se evento é igual a 4, $6 indica o tipo de menu contextual a ponto de ser mostrado (em função com a localização do clique):
    • Se $6 é igual a 1, é mostrado um menu de tipo 1 (clique no  cabeçalho/rodapé de página).
    • Se $6 é igual a 2, é mostrado um menu de tipo 2 (clique no texto da área corpo).
    • Se $6 é igual a 3, é mostrado um menu de tipo 3 (clique em uma imagem da área corpo).
  • Se evento é igual a 5, $6 escreve se a área está ativada. Se $6 é igual a 0, a área 4D Write está desativada. Se $6 é igual a 1, a área 4D Write está ativada.
  • Se evento é igual a 7 e o trabalho de impressão é uma combinação de correspondência, $6 indica o número da tabela utilizada. Se o trabalho de impressão não é uma combinação de correspondência, $6 é igual a 0.
  • Se evento é igual a 8 (se produz em uma ação na regra), $6 não devolve um valor significativo. Inicialize $0 em 1 se deseja evitar qualquer ação na regra.
  • Se evento é igual a 9, $6 indica onde as margens foram restabelecidas no documento. Se $6 é igual a 0, as margens foram restabelecidas no corpo. Se $6 é igual a 1, as margens foram restabelecidas no cabeçalho. Se $6 é igual a dois, as margens foram restabelecidas no rodapé de página.
  • Se evento é igual a 13, o metodo se chama automaticamente cada X tics (um tic = 1/60 de um segundo), independentemente das ações do usuário. O temporizador pode ser utilizado mais particularmente para implementar um mecanismo de backup automático para os documentos que se estão editando. Por padrão, o contador gera um evento cada 3600 tics (60 segundos). Pode modificar esta frequência utilizando o comando WR SET AREA PROPERTY. Tenha cuidado, metodo não deve ter uma grande quantidade de processos já que sua execução repetida pode desacelerar a aplicação.

Para filtrar eventos, deve utilizar metodo como uma função que devolve 0 ou 1. Isto lhe permite especificar os caracteres no documento que 4D Write ignorará.

Inicialize $0 em 1 para fazer que o método tenha em conta um evento em particular. Inicialize $0 em 0 se não quer ter em conta um evento em particular. Por exemplo, se não deseja que o caractere "@" apareça em seu documento, filtre todos os caracteres que aparecem no documento. Se a variável $6 é igual ao código do caractere "@", inicializamos $0 em 1 e o ignoramos.

Nota: Se filtrar todos os caracteres, as operações podem ser desaceleradas consideravelmente uma vez que o método será chamado cada vez que se pressione uma tecla.

Exemplo  

Nos exemplos seguintes, algumas ações se executam em função do tipo de evento:

  `Método formulário:
 If(Form event=On Load)
    WR ON EVENT(Area;wr on key;"ProcName")
  `Chamada a todas as teclas
    WR ON EVENT(Area;wr on activate;"ProcName")
  `Verificação do estado da área
    DISABLE MENU ITEM(2;1)
  `Desativação do comando de menu "Mudar fontes"
    WR SET AREA PROPERTY(Area;wr timer frequency;54000)
  `Evento contador cada 15 min
    WR ON EVENT(Area;wr on timer;"ProcName")
  `Ativação auto guardar
 End if
 
  `Método ProcName:
 Case of
    :($5=wr on key)
  `Interceptação de teclas
       If($6=199)|($6=200)
  `Correspondência dos códigos ASCII
          BEEP
          $0:=1
       Else
  `Deixar o evento a 4D Write
          $0:=0
       End if
    :($5=wr on activate)
  `Interceptar mudança no estado da área
       If($6=0)
  `Se a área está inativa
          DISABLE MENU ITEM(2;1)
       Else
          ENABLE MENU ITEM(2;1)
       End if
    :($5=wr on timer)
  `Cada 15 min
       $DocName:="C:\\Temp\\Docs\\TheArea.4W7"
       WR SAVE DOCUMENT(TheArea;$DocName;"4WR7")
 End case

 
PROPRIEDADES 

Produto: 4D Write
Tema: WR Utilitários
Número 89174

 
HISTÓRIA 

Modificado: 4D Write 2004.1

 
VER TAMBÉM 

WR Get on event method
WR ON ERROR

 
ARTICLE USAGE

4D Write - Linguagem ( 4D Write v11.6)
4D Write - Linguagem ( 4D Write v12)
4D Write - Linguagem ( 4D v13)
4D Write - Linguagem ( 4D Write v14)
4D Write - Linguagem ( 4D Write v14 R2)
4D Write - Linguagem ( 4D Write v14 R3)
4D Write - Linguagem ( 4D Write v14 R4)