Tform + TDataGrid em Composições Bom, utilizo bastante o TMultiField porém como tenho vários campos desta vez, achei melhor fazer um formulário utilizando o Form Design. No Form Design criei um formulário em uma 3ª aba, dois botões e uma datagrid para adicionar os dados do formulário na datagrid. No meu botão Salvar (que deveria adicionar o objeto na datagrid), ao ser chamado, ele executa uma função chamada salvarEndere...
AN
Tform + TDataGrid em Composições  
Fechado
Bom, utilizo bastante o TMultiField porém como tenho vários campos desta vez, achei melhor fazer um formulário utilizando o Form Design. No Form Design criei um formulário em uma 3ª aba, dois botões e uma datagrid para adicionar os dados do formulário na datagrid. No meu botão Salvar (que deveria adicionar o objeto na datagrid), ao ser chamado, ele executa uma função chamada salvarEndereco e logo após ele inicia um formulário novo, voltando na primeira aba do TNotebook. Segue o código que estou utilizando.

 
  1. <?php
  2. function salvarEndereco($param){
  3. try
  4. {
  5. $object = $this->form->getData('Endereco');
  6. $persisted_objects = TSession::getValue('persisted_objects');
  7. $persisted_objects[$object->id] = $object;
  8. TSession::setValue('persisted_objects', $persisted_objects);
  9. $this->datagridEnderecos->addItem($object);
  10. new TMessage('info',$object->LOGRADOURO);
  11. new TMessage('info', 'Recors saved');
  12. $this->onReloadDatagridEndereco;
  13. }
  14. catch (Exception $e) // in case of exception
  15. {
  16. }
  17. }
  18. ?>


E a minha função onReloadDatagridEndereco:

 
  1. <?php
  2. function onReloadDatagridEndereco($param = NULL)
  3. {
  4. try
  5. {
  6. $this->datagrid->clear();
  7. $persisted_objects = TSession::getValue('persisted_objects');
  8. if ($persisted_objects)
  9. {
  10. // iterate the collection of active records
  11. foreach ($persisted_objects as $object)
  12. {
  13. // add the object inside the datagrid
  14. $this->datagridEnderecos->addItem($object);
  15. }
  16. }
  17. $this->loaded = true;
  18. }
  19. catch (Exception $e) // in case of exception
  20. {
  21. // shows the exception error message
  22. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  23. }
  24. }
  25. ?>


Segui o passo a passo do tutor TForm + TDatagrid..
Alguma sugestão?
Obrigado!

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (1)


PD

Aurélio,

Isso não é uma falha, é o comportamento correto, veja que você criou uma ação que envia dados via POST.
Sugiro usar duas outras alternativas:
1) TMultiField como nesse exemplo no form de contatos:
www.adianti.com.br/framework_files/tutor/index.php?class=CustomerFor

2) TDataGrid da mesma maneira que você vez, mas postando junto os dados do formulário de fora:
www.adianti.com.br/framework_files/tutor/index.php?class=SaleForm&am

PS: Na próxima versão do Studio, terá um gerador de telas para a abordagem (2).

Att,
Pablo