O comando PV ON EVENT se utiliza para associar um metodo a um evento 4D View. Cada vez que ocorre o evento, se executa o metodo.
As constantes PV Eventos se utilizam para definir o parâmetro evento.
O método chamado recebe 6 parâmetros de tipo Inteiro longo e devolve um Booleano em $0:
$1: Referencia da área 4D View
$2: Evento
$3: Código de tecla de modificação
$4: Número da coluna
$5: Número da linha
$6: Código Ascii da tecla (se o evento é um clique, um clique direito ou um duplo clique, $6 vale 0)
O parâmetro $3 pode conter um dos seguintes valores (estes valores se agregam em caso de combinação de teclas):
0 | Nenhum |
512 | Tecla Maiús |
2048 | Tecla Alt |
4096 | Tecla Ctrl (Windows)/Comando (Mac OS). |
- Gestão de cliques (eventos pv on clicked, pv on right clicked, pv on double clicked e pv on contextual click):
- Se o evento (clique, clique direito, duplo clique ou clique contextual) sucede em uma célula, $4 devolve o número da coluna e $5 devolve o número da linha. Se isto passe em um cabeçalho de linha, $4 vale 0. Se passar em um cabeçalho de coluna, $5 vale 0. Se passar em uma esquina superior esquerda da área, $4 e $5 tomam o valor 0.
- O evento pv on contextual click se chama quando o usuário libera o botão do mouse; o evento pv on right clicked se chama quando se pressiona o botão. Estes dois eventos podem ser utilizados para colocar uma interface utilizando menus pop up contextuais. O evento pv on contextual click corresponde mais com o funcionamento de Windows e o evento pv on right clicked ao de Mac OS. Os dois eventos podem ser utilizados simultaneamente.
- Se o evento é um clique, clique direito, duplo clique ou clique contextual, $6 toma o valor 0. - Gestão de seleção (evento pv on selection changed):
- Se a nova seleção inclui várias células, colunas ou linhas, $4 e $5 devolvem 0.
- Se a nova seleção inclui uma só célula, $4 e $5 devolvem a coluna e da linha da célula, respectivamente.
- Se a nova seleção é uma coluna, $4 devolve o número da coluna e $5 devolve 0.
- Se a nova seleção é uma linha, $4 devolve 0 e $5 devolve o número da linha. - Teclas de função: No contexto de um evento pv on keyboard, se uma tecla de função foi ativado, o parâmetro $6 devolve 0. Neste caso, utilize a variável sistema Keycode de 4D para conhecer o código ASCII da tecla de função ativada.
- Ordenar: O evento pv on column sort é gerado justo depois da ordenação de uma coluna. Permitindo assim controlar as ações do usuário. Neste caso, $6 recebe um valor indicando o critério de ordenação. Este valor pode ser comparado com as seguintes constantes, localizadas no tema :
Constante |
Tipo |
Valor |
pv ascending sort |
Inteiro longo |
2 |
pv descending sort |
Inteiro longo |
3 |
- Redimensionamento: Os eventos pv on column resize e pv on row resize se enviam quando uma coluna ou linha é redimensionada pelo usuário. Não se enviam se as colunas ou linhas são redimensionadas por programação (utilizando os comandos PV SET COLUMNS WIDTH ou PV SET ROWS HEIGHT).
Se $0 é True, o evento não será tomado em conta.
Se $0 é False, o evento será tomado em conta.
Nota: Se vai compilar a base, deve declarar os parâmetros $0 como Booleano e $1 a $6 como Inteiro longo ainda que alguns deles não se utilizem.
Se area é igual a 0, o comando PV ON EVENT se aplica a todas as novas areas 4D View. Neste caso, é melhor passar este comando no Método base On Startup, que se executa quando a base se abre.
Para desinstalar o método de chamada do evento, simplesmente chame ao comando PV ON EVENT com uma cadeia vazia no último parâmetro.
O usuário faz clique no cabeçalho de coluna para fazer uma ordem. O método PM_Event se utiliza para determinar que coluna foi ordenada e em que ordem.
Um duplo clique em um cabeçalho de coluna provoca o redimensionamento da coluna. No entanto, um dobre clique gera uma sequência de dois eventos: pv on clicked e pv on double clicked.
Como resultado, se a ordem foi permitida por uma chamada a PV SET AREA PROPERTY, um dobre clique em um cabeçalho primeiro causa a ordem da coluna, logo seu redimensionamento. Se deseja que um dobre clique provoque unicamente o redimensionamento da coluna, deve interceptar e eliminar o evento pv on clicked, que é gerado justo antes de que a ordenam seja levada a cabo. Para isso, basta com instalar um método que será chamado durante o evento pv on clicked: