Detectando a mudança de seleção de um hpOptionButton.

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

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

  1. Selecione o objeto hpOptionButton na tela e abra sua aba Scripts.
  2. Clique em Criar novo evento, dê um nome ao evento (por exemplo, OnEventChange) e confirme para abrir o editor.
  3. No campo Expressão do evento, aponte para a propriedade EventChange do próprio objeto.
  4. Em Condição de Ocorrência, escolha “Sempre que a expressão alterar seu valor”.
  5. 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.
Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Leave a Reply

Your email address will not be published.Required fields are marked *