O hpOptionButton não expõe um evento Change. Um Evento Definido pelo Usuário, ligado à propriedade EventChange, dispara o script a cada troca de opção.
1. Introdução
hpOptionButton é o botão de opção da Biblioteca HighPerformance, usado nas telas de formulário para o operador escolher entre alternativas mutuamente exclusivas. Em muitas aplicações é preciso reagir no exato momento em que a seleção muda — recalcular um valor, habilitar um comando, atualizar outra parte da tela.O problema é que o hpOptionButton não expõe um método/evento Change ao qual se possa anexar diretamente um script. Sem esse gancho, não há como, à primeira vista, disparar código a cada troca de opção.A solução não está em um evento nativo do objeto, e sim em um recurso da própria plataforma E3/Power: os Eventos Definidos pelo Usuário. Cria-se um evento de usuário cuja expressão geradora aponta para a propriedade EventChange do hpOptionButton, configurado para disparar sempre que essa expressão mudar de valor.2. O objeto hpOptionButton
O hpOptionButton é um dos objetos de formulário da Biblioteca HighPerformance. Ele apresenta uma opção selecionável (no estilo radio button, com visual chapado e temável do padrão HP-HMI) e reflete a escolha atual do operador.
Como qualquer objeto da biblioteca, ele é um controle da plataforma E3/Power, mas não traz um evento Change próprio. Para observar a mudança de seleção sem esse evento, usa-se a propriedade EventChange do objeto como gatilho de um evento de usuário, descrito a seguir.
3. Como funciona: Eventos Definidos pelo Usuário
Um Evento Definido pelo Usuário é um evento personalizado, criado sobre um objeto, para executar um script quando um Tag ou uma propriedade (a expressão geradora) atende a uma condição. Ele é o mecanismo padrão do E3/Power para “reagir à mudança” quando o objeto de origem não oferece um evento adequado.
Cada evento de usuário tem uma Condição de Ocorrência, que define quando o script é executado:
| Condição de ocorrência | Quando dispara |
|---|---|
| Sempre que a expressão alterar seu valor | A cada mudança do valor da expressão — é a que interessa aqui |
| Sempre que a expressão for verdadeira | Quando a expressão passa a ser verdadeira |
| Repetição cíclica enquanto verdadeira | Repetidamente, no período (ms) configurado, enquanto verdadeira |
Para o hpOptionButton, a expressão geradora é a propriedade EventChange do próprio objeto, e a condição usada é “Sempre que a expressão alterar seu valor”. Assim, cada troca de opção altera o valor de EventChange, o evento dispara e o script associado é executado.
Por que isso resolve o problema?
EventChange muda de valor a cada seleção. Ao usá-la como expressão de um evento de usuário com a condição “alterar valor”, obtém-se exatamente o comportamento de um evento Change — mesmo sem o objeto expor um.
4. Como configurar
Pelo E3 Studio
- Selecione o objeto
hpOptionButtonna tela e abra sua aba Scripts. - Clique em Criar novo evento, dê um nome ao evento (por exemplo,
OnEventChange) e confirme para abrir o editor. - No campo Expressão do evento, aponte para a propriedade
EventChangedo próprio objeto. - Em Condição de Ocorrência, escolha “Sempre que a expressão alterar seu valor”.
- Escreva, no corpo do evento, o script que deve rodar a cada mudança de seleção.
Por script
O disparo é configurado nas propriedades do evento (expressão + condição de ocorrência); o bloco abaixo é o corpo do evento de usuário OnEventChange, executado a cada troca de opção:
' Evento de usuario OnEventChange do hpOptionButton ' Expressao geradora ....: EventChange (propriedade do proprio objeto) ' Condicao de ocorrencia : Sempre que a expressao alterar seu valor ' Executado automaticamente a cada mudanca de selecao do hpOptionButton. Sub OnEventChange() ' A selecao acabou de mudar. Coloque aqui a acao desejada, por exemplo: Application.GetObject("Dados.SelecaoAtual").Value = Me.EventChange ' ... recalcular, habilitar um comando, atualizar outra parte da tela etc. End Sub
5. Resultado
Com o evento de usuário configurado, a tela passa a reagir a cada troca de opção sem depender de um evento nativo do objeto:
| Situação | Comportamento |
|---|---|
|
Sem o evento de usuário |
Não há como disparar script na mudança — o hpOptionButton não tem evento Change |
|
Com o evento de usuário |
O script roda automaticamente a cada mudança de seleção (EventChange + “alterar valor”) |
6. Observações e boas práticas
- Use a condição “alterar valor”, não “for verdadeira”. A primeira dispara em qualquer mudança de seleção; a segunda tem semântica diferente e não atende ao caso.
- A técnica é geral. O mesmo padrão — evento de usuário com condição “alterar valor” sobre uma propriedade — vale para qualquer objeto ou propriedade que não exponha um evento de mudança nativo, não só o
hpOptionButton. - O script fica junto do objeto. Por ser um evento de usuário do próprio
hpOptionButton, o script acompanha o objeto — facilita a manutenção e o reaproveitamento em bibliotecas. - Escopo de produto. A Biblioteca HighPerformance roda sobre o E3, e os Eventos Definidos pelo Usuário são um recurso da plataforma; a técnica se aplica igualmente nos dois.
