Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Clicar no botão Como gero "por programação" a ação "click" de um botão que está no formulário? ...
SF
Clicar no botão  
Fechado
Como gero "por programação" a ação "click" de um botão que está no formulário?


Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


FC

Bom dia Sergio

Essa é tipica a pergunta de quem vem do Visual Basic ou Delphi no ambiente web esse procedimento é feito por meio de uma requisição. ou seja é criada uma função dentro da classe onde no objeto botão passamos "a ação" que na verdade é uma requisição feita em "JavaScript" onde dentro do Adianti Framework é como se estive usando o Delphi ou VB.

Exemplo:
Imagina o botão salvar esta na mesma classe que possui a função "onSave()" os parametros do botão a action fica assim.

$save_button->setAction(new TAction(array($this, 'onSave')), 'Salvar');

Apesar de ser um mundo novo para mim o ambiente web PHP e Orientação a Objetos (tenho menos de 1 ano) tenho tido ótimos resultados.

Os mais experientes podem ajudar, complementar ou corrigir "Estou sempre disposto a apreender".

Sds
Felipe Cortez
SF

Felipe,
grato pela ajuda, ajuda muito

mas o que eu preciso é realizar o evento "click" . Vc ensinou a "programar" o evento. Eu quero é clicar
PD

Sergio,

Se você desenhou o formulário no Form designer, ao clicar sobre o botão, na parte de propriedades aparece um campo chamado método. Ali você preenche com o método a ser executado. Quando você gerar o código PHP, ele já vai gerar aquele método. Se você preencher a combobox modelo, então aquele método já terá o "corpo" da função apontado ali.

Se você quer desenhar o formulário, e apontar a função manualmente, você precisa "obter" o botão via programação para depois anexar um método à ele. Para tal, é importante preencher o campo (Nome) lá no Form Designer. O código fica mais ou menos assim:

  1. <?php
  2.         try
  3.         {
  4.             $ui = new TUIBuilder(500,500);
  5.             $ui->setController($this);
  6.             $ui->setForm($this->form);
  7.             $ui->parseFile('app/forms/teste.form.xml');
  8.             
  9.             // obtêm o botão e define a ação
  10.             $botao1 $ui->getWidget('botao1'); // veja que o nome dado para ele é botao1
  11.             $botao1->setAction(new TAction(array($this'onSave')), 'Salvar'); 
  12.     }
  13. ?>


Att,
Pablo
SF

Entendi, Pablo. Só falta mesmo fazer o que preciso, "clicar"

Não tenho duvida na ação, mas eu preciso realizar o "evento" clicar, por programação.

Em VB seria algo

thisform.botao1.click()

FC

somente com java script

exemplo:
jsfiddle.net/9Kx2t/
PD

Sérgio,

Por que você precisa gerar esse evento?
Pergunto isso, pois existem inúmeras formas de se resolver o mesmo problema e raramente precisamos utilizar isso no framework.
Talvez você está com alguma técnica "Delphiana" na mente :-)

Lembre que em PHP, você pode invocar um método a qualquer momento, dentro de qualquer ação:

  1. <?php
  2. $class = new Classe;
  3. $class->metodo();
  4. ?>


Abs,
SF

KKK Delphiana ? O nome seria Raposiana (de raposas a linguagem é Foxpro)

Mas é isso mesmo.

E que tal capturar o evento que coloquei no botao (exemplo action1) e aí invocar o metodo, como sugeriu ?

Como seria ?
SF

Pablo, não respondi a sua pergunta:
"Por que você precisa gerar esse evento? "

Quero fazer algo como this->form1->botao1('click')

e ele executar a ação que está gravada no botão (exemplo onedit())

A ideia é que não quero lembrar do "metodo", e sim do "botão"

PD

O botão é somente um elemento de interface, não podemos dar muita importância para ele ;-)

O Botão possui o método getAction(), que retorna a ação (TAction) vinculada.
A classe TAction, por sua vez, possui o método getAction(), que retorna o método,
no formato array($objeto, $metodo), que pode ser invocado pela função call_user_func() do PHP.

Ex:
  1. <?php
  2. $action $button->getAction();
  3. call_user_func($action->getAction());
  4. ?>


Att,
Pablo