Acionar Botao

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Stella Pompeo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 25 Ago 2011 10:47 am
Localização: SP

Como faço para acionar um botão através de programação?


SMPB
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Você quer simular o clic ou serve apenas executar a trigger de button pressed?
Stella Pompeo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 25 Ago 2011 10:47 am
Localização: SP

Apenas simular o clic.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Bom, simular o clic eu nunca fiz, nem sei se é possivel, mas acredito que tenha como fazer...

Mas qual seria o objetivo desta ação?
SMPB
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 25 Ago 2011 11:14 am
Localização: São Paulo - SP

Se eu conseguir adicionar o valor que preciso para :system.trigger_item, não precisaria simular o clic. A questão é que não estou encontrando um código para adicionar o valor que preciso, por isso que pensei em simular o click no botão.
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Seria possível explicar um pouco melhor o que você quer fazer, e em que momento (when-validate-item, pre-insert, etc)?

Algumas funcionalidades padrão do forms podem ser executadas com o comando do_key:

Selecionar tudo

do_key('commit_form');
do_key('execute_query');
do_key('create_record');
Caso a lógica do botão à qual você se refere esteja em um item que você criou, seria melhor colocar esta lógica em uma procedure dentro do próprio forms, e então chamá-la tanto no WHEN-BUTTON-PRESSED do referido botão quanto no trecho que você precisa.
SMPB
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 25 Ago 2011 11:14 am
Localização: São Paulo - SP

Temos dois botões criados no forms: "localizar" e "reiniciar". Quando aciono o localizar é feita uma validação se a query tem resultados ou não. Se não houver resultado preciso limpar a tela, voltar o cursor para o primeiro bloco e acertar os outros botões no bloco toolbar (onde estão o "localizar", "reiniciar" e etc). Tudo que preciso o botão "reiniciar" faz quando acionado pelo usuário. Esse botão "reiniciar" ele chama uma procedure que faz a leitura do :system.trigger_item. Portanto, não há como adicionar essa procedure no botão "localizar" pois o :system.trigger_item seria ainda "localizar" . Precisaria acionar o botão "reiniciar" através de algum comando ou encontrar um comando que faça com que o :system.trigger_item receba o valor "reiniciar". Não sei se consegui ser clara no que exatamente preciso.
SMPB
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Qui, 25 Ago 2011 11:14 am
Localização: São Paulo - SP

Tudo que precisava tinha ao acionar o botão "reiniciar"... portanto fiz na mão passo a passo do que precisava: limpar a tela, voltar o cursor para o primeiro bloco e acertar os outros botões no bloco toolbar.
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Entendi o problema. Realmente, não há uma maneira de simular um click em um botão no forms até onde me lembro...
Como sua lógica testa o trigger_item, também não adiantaria jogar a lógica em uma program unit separada, como eu havia sugerido.
A única alternativa que imaginei seria utilizar a função send_key da biblioteca d2kwutil

No when-button-pressed do seu botão 'localizar', você então faria um go_item para o botão 'reiniciar' para jogar o foco nele, e então enviaria a tecla {enter}, {espaço}, ou ainda a tecla de acesso rápido definida para o botão, forçando a sua execução.

Nunca usei esse método, mas não custaria nada tentar :)
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes