Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Definir um valor padrão para o TCombo no evento onClear Boa tarde. Gostaria de saber a possibilidade de definir um valor padrão para um componente TCombo no evento onClear, eu consegui habilitar e desabilitar porem definir por exemplo o primeiro item para ficar padrao apos o form ser limpo. public function onClear( $param ) { $this->form->clear(); TCombo::enableField('form_Pessoa', 'tipo'); TCombo:: setId(...
FP
Definir um valor padrão para o TCombo no evento onClear  
Fechado
Boa tarde.
Gostaria de saber a possibilidade de definir um valor padrão para um componente TCombo no evento onClear, eu consegui habilitar e desabilitar porem definir por exemplo o primeiro item para ficar padrao apos o form ser limpo.
public function onClear( $param )
{
$this->form->clear();
TCombo::enableField('form_Pessoa', 'tipo');
TCombo:: setId('form_Pessoa', 'tipo2','2');
//aqui definifir valor padrao para o combo
}

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 (13)


MG

Já tentou

  1. <?php
  2.    $lista TCombo('lista');
  3.    $combo_items = array();
  4.    $combo_items['0'] ='Selecione';
  5.    
  6.    $lista->addItems($combo_items);
  7. ?>
FP

o Combo esta preenchido devidamente, no construtor do formulário, eu preciso definir definir no evento onclear um item como default para evitar que o usuário esqueca de atribuir, no evento de construcao do formulario eu tenho o seguinte codigo
$item2Tipo= array();
$item2Tipo['2'] = 'Real';
$item2Tipo['1'] = 'Ouro';
$tipo2->addItems($item2Tipo);
$tipo2->setsize(90);
$tipo2->setValue('2');
porem quando invoca o evento onclear ele limpa e isso que preciso corrigir
MG

Fernando

Crie um método que preencha o combo e chame após o clear.
Não resolve?
Ele será chamado ao montar a tela e ao limpar o form.
FP

poderia me dar um exemplo desse metodo, me perco muito ainda com os objetos onde posso ou nao acessa-los
MG

Dentro da sua classe e chame ele após limpar o form:

  1. <?php
  2. function carregarCombo() {
  3.      $item2Tipo= array(); 
  4.      $item2Tipo['2'] = 'Real'
  5.      $item2Tipo['1'] = 'Ouro'
  6.      $tipo2->addItems($item2Tipo); 
  7.      $tipo2->setsize(90); 
  8.      $tipo2->setValue('2');
  9. }
  10. ?>
FP

Tentei sua dica marcelo porem tive o seguinte erro
Fatal error: Call to undefined function carregarCombo() in C:\xampp\htdocs\goldpro\app\control\PessoaForm.php on line 281
meu codigo ficou dessa form
  1. <?php
  2.     private function carregarCombo() 
  3.     {
  4.         $item2Tipo= array(); 
  5.         $item2Tipo['2'] = 'Real'
  6.         $item2Tipo['1'] = 'Ouro'
  7.         $tipo2->addItems($item2Tipo); 
  8.         $tipo2->setsize(90); 
  9.         $tipo2->setValue('2');
  10.     }    
  11.     
  12.     /**
  13.      * Clear form data
  14.      * @param $param Request
  15.      */
  16.     public function onClear$param )
  17.     {
  18.         $this->form->clear();
  19.         carregarCombo();
  20.         TCombo::enableField('form_Pessoa''tipo');                              
  21.         
  22.     }
  23. ?>
MG

Coloque a novo método depois do método onClear, mas já tentou colocar incluir o código de carregamento após $this->form->clear()?
FP

Resolvi o problema
o segredo esta no metodo de recarregar o combo, pelo que entendi fora doconstrutor eu nao posso usar diretamente o componente, preciso invocar a classe passar o formulario e o nome do componente dentro do formulario com o conteudo a ser alterado.
ex: TCombo::reload('form_Pessoa', 'tipo', $itemTipo);
  1. <?php
  2.     private static function carregarCombo() 
  3.     {        
  4.         $itemfisjur = array();
  5.         $itemfisjur['2'] = 'Física';
  6.         $itemfisjur['1'] = 'Jurídica';               
  7.         TCombo::reload('form_Pessoa''fisjur'$itemfisjur);
  8.         
  9.         $itemTipo= array();
  10.         $itemTipo['C'] = 'Cliente';
  11.         $itemTipo['F'] = 'Funcionario';
  12.         $itemTipo['O'] = 'Fornecedor';
  13.         TCombo::reload('form_Pessoa''tipo'$itemTipo);        
  14.         //mudado para onedit e onclear             
  15.         $itemStatus= array();
  16.         $itemStatus['1'] = 'Ativo';
  17.         $itemStatus['2'] = 'Inativo';                
  18.         TCombo::reload('form_Pessoa''status'$itemStatus);
  19.         //combo tipo de moeda de fechamento
  20.         $item2Tipo= array(); 
  21.         $item2Tipo['2'] = 'Real'
  22.         $item2Tipo['1'] = 'Ouro';        
  23.         TCombo::reload('form_Pessoa''tipo2'$item2Tipo); 
  24.         //combo bloqueia limite
  25.         $itembloqueialimite= array();
  26.         $itembloqueialimite['2'] = 'Sim';
  27.         $itembloqueialimite['1'] = 'Não';
  28.         TCombo::reload('form_Pessoa''bloqueialimite'$itembloqueialimite); 
  29.     }    
  30.     
  31.     /**
  32.      * Clear form data
  33.      * @param $param Request
  34.      */
  35.     public function onClear$param )
  36.     {
  37.         $this->form->clear();
  38.         $this->carregarCombo();        
  39.         TCombo::enableField('form_Pessoa''tipo');                              
  40.         
  41.     }
  42. ?>
MG

Excelente. Que bom que conseguiu!
Abraços
FP

Muito obrigado pela atenção valeu mesmo, vc tem consguido trabalhar com o google maps no adianti?
MG

Ainda não implementei nada com Google maps
PD

Fernando,

Você não precisa necessariamente usar o método estático TForm::sendData(), que gera um Javascript em tempo de execução.
Esse método é mais recomendado para eventos de saída e alteração (exit, change) de campos, quando o formulário já está renderizado e é necessário gerar somente o Javascript de alteração.

Antes de executar o método show(), ou seja, antes de renderizar o formulário em tela, você pode mudar seus valores simplesmente usando o $this->form->setData(), desta maneira a seguir.
Este método preenche "em memória" os valores dos atributos do objeto. Então, quando ele chegar no show(), já saberá quais são os seus valores de campos.

  1. <?php
  2. class XYZ
  3. {
  4.     public function __construct()
  5.     {
  6.         // ...
  7.         $this->form->addQuickAction('Clear', new TAction(array($this'onClear')), 'ico_new.png');
  8.     }
  9.     
  10.     public function onClear()
  11.     {
  12.         $this->form->clear();
  13.         
  14.         $data = new StdClass;
  15.         $data->description 'digite aqui...';
  16.         $data->list 'a'
  17.         $this->form->setData($data);
  18.     }
  19. }
  20. ?>
FP

Pablo,
Desculpa a demora em responder, irei fazer um teste e reporto o resultado aqui assim que possível muito obrigado.