Colocar uam Imagem dentro de um Frame usando o Designer Alguém conseguiu colocar uma imagem em um frame usando o Adianti Designer? Esse frame está em uma aba de um objeto tipo TNotebook conforme imagem. Para colocar a imagem em um Form descendente de uma TWindow eu consegui. Quando clico na lupa da grade redireciono para esse Form e mostro a imagem, mas o ideal seria mostrar no Frame da aba. ...
AN
Colocar uam Imagem dentro de um Frame usando o Designer  
Alguém conseguiu colocar uma imagem em um frame usando o Adianti Designer?

Esse frame está em uma aba de um objeto tipo TNotebook conforme imagem.

Para colocar a imagem em um Form descendente de uma TWindow eu consegui.

Quando clico na lupa da grade redireciono para esse Form e mostro a imagem, mas o ideal seria mostrar no Frame da aba.

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


NR

Veja se ajuda:
adianti.com.br/framework_files/tutor/index.php?class=ProductForm&
AN

Olá Nataniel.

Eu vi esse Formulário. Foi através dele que fiz mostrar a imagem numa Twindow.

Embora isso seja aceitável não é a melhor opção. O bom mesmo seria colocar a imagem no frame da aba. Coisa bem corriqueira e tranquilo de se fazer em uma linguagem Desktop. Talvez esse seja um dos preços a se pagar quando se desenvolve em ambiente Web... (acho eu).. Estou vindo do Desktop e a diferença entre ele e Web é bastante sigficativa. É um novo aprendizado pra mim. Tenho um Erp que desenvolvi sobre medida aqui na empresa e que roda desde 2007... Estou migrando ele pra Web... E o adianti tem sido uma mão na roda. Bem sólido no tratamento de dados e desenvolvimento de telas.. Longo caminho a percorrer para migrar tudo.. De qualquer forma obrigado pela atenção.
NR

Armando, o que você precisa é bem parecido com o exemplo do tutor. Modificando um pouco a função onComplete do exemplo para buscar a foto do banco de dados e adicionando um id ao seu frame:
 
  1. <?php
  2. // construct
  3. $this->frame = new TElement('div');
  4. $this->frame->id = 'seuframe';
  5. // datagrid deve chamar essa função, como é static a tela não será recarregada
  6. public static function loadFoto($param)
  7. {
  8. TTransaction::open('seubanco');
  9. $foto = new Foto($param['key']);
  10. TTransaction::close();
  11. // javascript para exibir a foto no frame
  12. TScript::create("$('#seuframe').html('')");
  13. TScript::create("$('#seuframe').append(\"<img style='width:100%' src='tmp/{$foto->foto}'>\");");
  14. }
  15. ?>
AN

Entendi.

Vou fazer aqui e posto o resultado.

Obrigado
AN

Testei aqui e nada aconteceu.

No designer o nome do frame é_photo_frame

Separei o código nas partes pertinentes à questão:

 
  1. <?php
  2. /**
  3. * produtoForm Registration
  4. * @author <your name here>
  5. */
  6. class produtoForm extends TPage
  7. {
  8. private $form;
  9. private $grade;
  10. protected $notebook;
  11. private $frame;
  12. /**
  13. * Class constructor
  14. * Creates the page and the registration form
  15. */
  16. function __construct()
  17. {
  18. // frame - imagem do produto
  19. $photo_frame = $ui->getWidget('photo_frame');
  20. $this->frame = new TElement('div');
  21. $this->frame->id = 'photo_frame';
  22. // cria acoes da grade
  23. $acao1 = new TDataGridAction(array($this, 'onView'));
  24. $acao1->setLabel('View');
  25. $acao1->setImage('fa:search blue');
  26. $acao1->setField('caminho');
  27. * method onView()
  28. * Executed when the user clicks at the view button
  29. */
  30. public static function onView($param)
  31. {
  32. $name = $param['caminho'];
  33. TScript::create("$('#frame').html('')");
  34. TScript::create("$('#frame').append(\"<img style='width:100%' src='tmp/{$name}'>\");");
  35. }
  36. }
  37. ?>
</your>
NR

 
  1. <?php
  2. public static function onView($param)
  3. {
  4. $name = $param['caminho'];
  5. // deve ser o id do frame
  6. TScript::create("$('#photo_frame').html('')");
  7. // verificar atributo src, o arquivo realmente está no diretório tmp/ ?
  8. TScript::create("$('#photo_frame').append("<img style='width:100%' src='tmp/{$name}'>");");
  9. }
  10. ?>

AN

É... Esse negócio aqui bate mais que mãe em menino desobediente.

Não deu certo :-(

FIz a modificação. que voce falou

A imagem está em tmp/ .

Não dá nenhum erro quando se clica na lupa, entretanto a imagem não aparece.
NR

Armando, use o console no Chrome(F12) para analisar o que está acontecendo. Clique com o botão direito do mouse no frame após selecionar uma imagem e veja qual src está carregando.

Em últimos casos poste seu código no pastebin para que possamos analisar.
AN

Nataniel, como o código não é tão grande vou postá-lo aqui.

 
  1. <?php
  2. /**
  3. * produtoForm Registration
  4. * @author <your name here>
  5. */
  6. class produtoForm extends TPage
  7. {
  8. private $form;
  9. private $grade;
  10. protected $notebook;
  11. private $frame;
  12. /**
  13. * Class constructor
  14. * Creates the page and the registration form
  15. */
  16. function __construct()
  17. {
  18. parent::__construct();
  19. parent::include_js('app/lib/include/application.js');
  20. // creates the form
  21. $this->form = new TQuickForm('form_produto');
  22. $this->form->class = 'tform'; // change CSS class
  23. $this->form->style = 'display: table;width:80%'; // change style
  24. // define the form title
  25. $this->form->setFormTitle('Cadastro de Produto');
  26. try
  27. {
  28. // TUIBuilder object
  29. $ui = new TUIBuilder(500,500);
  30. $ui->setController($this);
  31. $ui->setForm($this->form);
  32. // reads the xml form
  33. $ui->parseFile('app/forms/produtoForm.form.xml');
  34. // get the interface widgets
  35. $fields = $ui->getWidgets();
  36. /* ----------- inicio para inserir seek manual -------------------------- */
  37. $almoxarifado = $ui->getWidget('almoxarifado');
  38. $obj1 = new almoxarifadoSeek;
  39. $action = new TAction(array($obj1, 'onReload'));
  40. $almoxarifado->setAction($action);
  41. //
  42. $cod_grupo = $ui->getWidget('cod_grupo');
  43. $obj2 = new grupoprodutoSeek;
  44. $action = new TAction(array($obj2, 'onReload'));
  45. $cod_grupo->setAction($action);
  46. //
  47. $cod_tipo = $ui->getWidget('cod_tipo');
  48. $obj3 = new tgtipoprodSeek;
  49. $action = new TAction(array($obj3, 'onReload'));
  50. $cod_tipo->setAction($action);
  51. //
  52. $centro_resultado = $ui->getWidget('centro_resultado');
  53. $obj4 = new centroreplicadoSeek;
  54. $action = new TAction(array($obj4, 'onReload'));
  55. $centro_resultado->setAction($action);
  56. /* ------------- fim do seek manual ------------------------------------- */
  57. // inicia formatacao de campos
  58. $descricao = $ui->getWidget('descricao');
  59. $descricao->style = "text-transform: uppercase";
  60. $fabricante = $ui->getWidget('fabricante');
  61. $fabricante->style = "text-transform: uppercase";
  62. $observacao = $ui->getWidget('observacao');
  63. $observacao->style = "text-transform: uppercase";
  64. $faixa_abc = $ui->getWidget('faixa_abc');
  65. $faixa_abc->style = "text-transform: uppercase";
  66. $faixa_xyz = $ui->getWidget('faixa_xyz');
  67. $faixa_xyz->style = "text-transform: uppercase";
  68. $fator_unid = $ui->getWidget('fator_unid');
  69. $fator_unid->setNumericMask(4,',','.',TRUE);
  70. $peso_bruto = $ui->getWidget('peso_bruto');
  71. $peso_bruto->setNumericMask(4,',','.',TRUE);
  72. $peso_liq = $ui->getWidget('peso_liq');
  73. $peso_liq->setNumericMask(4,',','.',TRUE);
  74. $comissao = $ui->getWidget('comissao');
  75. $comissao->setNumericMask(2,',','.',TRUE);
  76. $ipi = $ui->getWidget('ipi');
  77. $ipi->setNumericMask(2,',','.',TRUE);
  78. $iva = $ui->getWidget('iva');
  79. $iva->setNumericMask(2,',','.',TRUE);
  80. $est_minimo = $ui->getWidget('est_minimo');
  81. $est_minimo->setNumericMask(5,',','.',TRUE);
  82. $nivel_reposicao = $ui->getWidget('nivel_reposicao');
  83. $nivel_reposicao->setNumericMask(5,',','.',TRUE);
  84. $label50 = $ui->getWidget('label50');
  85. $label50->setValue('Centro de Resultado Referenta ao Ano: ' . TSession::getValue('gano_resultado'));
  86. $this->notebook = $ui->getWidget('notebook');
  87. // frame - imagem do produto
  88. $photo_frame = $ui->getWidget('photo_frame');
  89. $this->frame = new TElement('div');
  90. $this->frame->id = 'photo_frame';
  91. // adicionar informacoes da imagem na grade
  92. $photo_path = $ui->getWidget('photo_path');
  93. $adiciona = $ui->getWidget('adiciona');
  94. $adiciona->setAction(new TAction(array($this, 'onAdiciona')), 'Adicionar');
  95. // passa dados em definitivo para maiuscula
  96. $descricao->SetUpperCase();
  97. $fabricante->SetUpperCase();
  98. $observacao->SetUpperCase();
  99. $faixa_abc->SetUpperCase();
  100. $faixa_xyz->SetUpperCase();
  101. // cria a grade
  102. $this->grade = $ui->getWidget('grade');
  103. // cria colunas da grade
  104. $column_id = new TDataGridColumn('id', 'Id', 'right',80);
  105. $column_cod_id = new TDataGridColumn('cod_id', 'Cód.Produto', 'right',80);
  106. $column_caminho = new TDataGridColumn('caminho', 'Caminho da Foto', 'left',420);
  107. // adiciona colunas da grade
  108. $this->grade->addColumn($column_id);
  109. $this->grade->addColumn($column_cod_id);
  110. $this->grade->addColumn($column_caminho);
  111. // cria acoes da grade
  112. $acao1 = new TDataGridAction(array($this, 'onView'));
  113. $acao1->setLabel('View');
  114. $acao1->setImage('fa:search blue');
  115. $acao1->setField('caminho');
  116. $acao2 = new TDataGridAction(array($this, 'onDelete'));
  117. $acao2->setLabel('Delete');
  118. $acao2->setImage('fa:trash red');
  119. $acao2->setField('id');
  120. // adiciona acoes a datagrid
  121. $this->grade->addAction($acao1);
  122. $this->grade->addAction($acao2);
  123. $this->grade->setHeight(600);
  124. $this->grade->makeScrollable();
  125. // cria modelo da grade
  126. $this->grade->createModel();
  127. // add the TUIBuilder panel inside the TForm object
  128. $this->form->add($ui);
  129. // set form fields from interface fields
  130. $this->form->setFields($ui->getFields());
  131. }
  132. catch (Exception $e)
  133. {
  134. new TMessage('error', $e->getMessage());
  135. }
  136. // add the form to the page
  137. parent::add($this->form);
  138. }
  139. /**
  140. * method onView()
  141. * Executed when the user clicks at the view button
  142. */
  143. public static function onView($param)
  144. {
  145. $name = $param['caminho'];
  146. TScript::create("$('#photo_frame').html('')");
  147. TScript::create("$('#photo_frame').append(\"<img style='width:100%' src='tmp/{$name}'>\");");
  148. }
  149. /**
  150. * method onAdiciona()
  151. * Executado quando usuario clica no botao adicionar foto
  152. */
  153. public static function onAdiciona($param)
  154. {
  155. // get the parameter and shows the message
  156. $name = $param['photo_path'];
  157. try
  158. {
  159. if (trim($name) == '')
  160. {
  161. new TMessage('Info', 'Nenhuma Imagem Selecionada');
  162. } else
  163. {
  164. // procura na tabela se a imagem já consta na base de dados
  165. // creates a criteria
  166. $criteria = new TCriteria;
  167. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  168. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  169. $criteria->add(new TFilter('tipo','=','P'));
  170. $criteria->add(new TFilter('cod_id','=',$param['cod_id']));
  171. $criteria->add(new TFilter('caminho','=',$name));
  172. TTransaction::open('erpweb'); // open a transaction
  173. // creates a repository
  174. $repository = new TRepository('fotoequipto');
  175. $count = $repository->count($criteria);
  176. if ($count > 0)
  177. {
  178. new TMessage('error', 'Imagem Já Cadastrada Para Esse Produto');
  179. } else
  180. {
  181. // gravar imagem na tabela
  182. $registro = new fotoequipto;
  183. $registro->empresa = TSession::getValue('gempresa');
  184. $registro->filial = TSession::getValue('gfilial');
  185. $registro->cod_id = $param['cod_id'];
  186. $registro->tipo = 'P';
  187. $registro->caminho = $name;
  188. $registro->store();
  189. new TMessage('info', 'Imagem Gravada No Banco de Dados');
  190. AdiantiCoreApplication::loadPage('produtoForm','onEdit');
  191. }
  192. TTransaction::close(); // close the transaction
  193. TSession::setValue('laba',2);
  194. }
  195. }
  196. catch (Exception $e) // in case of exception
  197. {
  198. new TMessage('error', $e->getMessage()); // shows the exception error message
  199. TTransaction::rollback(); // undo all pending operations
  200. }
  201. }
  202. /**
  203. * method onDelete()
  204. * Executed when the user clicks at the delete button
  205. */
  206. public static function onNovo($param)
  207. {
  208. TSession::setValue('lcodigo','');
  209. TSession::setValue('laba',0);
  210. AdiantiCoreApplication::loadPage('produtoForm','onEdit');
  211. }
  212. /**
  213. * Load the datagrid with data
  214. */
  215. public static function onReload($param = NULL)
  216. {
  217. TSession::setValue('laba',0);
  218. AdiantiCoreApplication::loadPage('produtoList','onReload');
  219. }
  220. /**
  221. * method OnSave()
  222. * Executed whenever the user clicks at the save button
  223. */
  224. function OnSave()
  225. {
  226. try
  227. {
  228. // open a transaction with database 'erpweb'
  229. TTransaction::open('erpweb');
  230. // get the form data into an active record produto
  231. $object = $this->form->getData('produto');
  232. // form validation
  233. $this->form->validate();
  234. // ---------------------------------- validacoes complementares
  235. // ABA DADOS DO PRODUTO
  236. if (trim($object->unidade) == '')
  237. {
  238. TTransaction::rollback();
  239. throw new Exception('Entrada de Unidade Obrigatória ...');
  240. }
  241. if (trim($object->segunda_unid) == '')
  242. {
  243. TTransaction::rollback();
  244. throw new Exception('Entrada de Segunda Unidade Obrigatória ...');
  245. }
  246. if (floatval($object->fator_unid) <= 0)
  247. {
  248. TTransaction::rollback();
  249. throw new Exception('Fator de Conversão de Unidades Inválido ...');
  250. }
  251. if (floatval($object->peso_bruto) <= 0)
  252. {
  253. TTransaction::rollback();
  254. throw new Exception('Peso Bruto Inválido ...');
  255. }
  256. if (floatval($object->peso_liq) <= 0)
  257. {
  258. TTransaction::rollback();
  259. throw new Exception('Peso Líquido Inválido ...');
  260. }
  261. if (trim($object->ativo) == '')
  262. {
  263. TTransaction::rollback();
  264. throw new Exception('Entrada de Produto Ativo Obrigatória ...');
  265. }
  266. if (trim($object->estoq_menos) == '')
  267. {
  268. TTransaction::rollback();
  269. throw new Exception('Entrada de Estoque Negativo Obrigatória ...');
  270. }
  271. if (trim($object->indica_venda) == '')
  272. {
  273. TTransaction::rollback();
  274. throw new Exception('Entrada de Produto de Venda Obrigatória ...');
  275. }
  276. if (trim($object->beneficia) == '')
  277. {
  278. TTransaction::rollback();
  279. throw new Exception('Entrada de Fabricação Própria Obrigatória ...');
  280. }
  281. if (trim($object->imposto_zf) == '')
  282. {
  283. TTransaction::rollback();
  284. throw new Exception('Entrada de Desconto Zona Franca Obrigatória ...');
  285. }
  286. if (trim($object->frete_comissao) == '')
  287. {
  288. TTransaction::rollback();
  289. throw new Exception('Entrada de Comissão de Frete Sobre as Vendas Obrigatória ...');
  290. }
  291. if (trim($object->subst_tributaria) == '')
  292. {
  293. TTransaction::rollback();
  294. throw new Exception('Entrada de Incidência de S.T. no Produto Obrigatória ...');
  295. }
  296. if (trim($object->permite_desconto) == '')
  297. {
  298. TTransaction::rollback();
  299. throw new Exception('Entrada de Desconto no Pedido de Venda Obrigatória ...');
  300. }
  301. // ABA ESTOQUE E CUSTOS
  302. if (intval($object->nota) < 1 or intval($object->nota) > 5)
  303. {
  304. TTransaction::rollback();
  305. throw new Exception('Nota do CQ deve Estar Entre 1 e 5 ...');
  306. }
  307. if (intval($object->peso1) < 1)
  308. {
  309. TTransaction::rollback();
  310. throw new Exception('Peso Mês de Janeiro Deve Ser Maior Que Zero ...');
  311. }
  312. if (intval($object->peso2) < 1)
  313. {
  314. TTransaction::rollback();
  315. throw new Exception('Peso Mês de Fevereiro Deve Ser Maior Que Zero ...');
  316. }
  317. if (intval($object->peso3) < 1)
  318. {
  319. TTransaction::rollback();
  320. throw new Exception('Peso Mês de Março Deve Ser Maior Que Zero ...');
  321. }
  322. if (intval($object->peso4) < 1)
  323. {
  324. TTransaction::rollback();
  325. throw new Exception('Peso Mês de Abril Deve Ser Maior Que Zero ...');
  326. }
  327. if (intval($object->peso5) < 1)
  328. {
  329. TTransaction::rollback();
  330. throw new Exception('Peso Mês de Maio Deve Ser Maior Que Zero ...');
  331. }
  332. if (intval($object->peso6) < 1)
  333. {
  334. TTransaction::rollback();
  335. throw new Exception('Peso Mês de Junho Deve Ser Maior Que Zero ...');
  336. }
  337. if (intval($object->peso7) < 1)
  338. {
  339. TTransaction::rollback();
  340. throw new Exception('Peso Mês de Julho Deve Ser Maior Que Zero ...');
  341. }
  342. if (intval($object->peso8) < 1)
  343. {
  344. TTransaction::rollback();
  345. throw new Exception('Peso Mês de Agosto Deve Ser Maior Que Zero ...');
  346. }
  347. if (intval($object->peso9) < 1)
  348. {
  349. TTransaction::rollback();
  350. throw new Exception('Peso Mês de Setembro Deve Ser Maior Que Zero ...');
  351. }
  352. if (intval($object->peso10) < 1)
  353. {
  354. TTransaction::rollback();
  355. throw new Exception('Peso Mês de Outubro Deve Ser Maior Que Zero ...');
  356. }
  357. if (intval($object->peso11) < 1)
  358. {
  359. TTransaction::rollback();
  360. throw new Exception('Peso Mês de Novembro Deve Ser Maior Que Zero ...');
  361. }
  362. if (intval($object->peso12) < 1)
  363. {
  364. TTransaction::rollback();
  365. throw new Exception('Peso Mês de Dezembro Deve Ser Maior Que Zero ...');
  366. }
  367. // verifica se faixaabc contem ABouC
  368. if ($object->faixa_abc <> 'A' and $object->faixa_abc <> 'B' and $object->faixa_abc <> 'C')
  369. {
  370. TTransaction::rollback();
  371. throw new Exception('Valore da Faixa Deve Ser A,B ou C ...');
  372. }
  373. // verifica se faixaabc contem ABouC
  374. if ($object->faixa_xyz <> 'X' and $object->faixa_xyz <> 'Y' and $object->faixa_xyz <> 'Z')
  375. {
  376. TTransaction::rollback();
  377. throw new Exception('Valore da Faixa Deve Ser X,Y ou Z ...');
  378. }
  379. if (floatval($object->est_minimo) <= 0)
  380. {
  381. TTransaction::rollback();
  382. throw new Exception('Estoque Mínimo Deve Ser Maior Que Zero ...');
  383. }
  384. if (floatval($object->nivel_reposicao) <= 0)
  385. {
  386. TTransaction::rollback();
  387. throw new Exception('Nível de Reposição Deve Ser Maior Que Zero ...');
  388. }
  389. // atualiza ressuprimento
  390. $valor = intval($object->tpc) + intval($object->tt) + intval($object->taf) + intval($object->trr);
  391. $object->tempo_reposicao = $valor;
  392. // pega empresa
  393. $object->empresa = TSession::getValue('gempresa');
  394. $object->filial = TSession::getValue('gfilial');
  395. $lempresa = TSession::getValue('gempresa');
  396. $lfilial = TSession::getValue('gfilial');
  397. // pega codigo do produto em parametro
  398. // carrega ano base do centro de resultado se definido
  399. $repository = new TRepository('parametro');
  400. $criteria = new TCriteria;
  401. $criteria->add(new TFilter('empresa','=',$lempresa));
  402. $criteria->add(new TFilter('filial','=',$lfilial));
  403. $criteria->add(new TFilter('cod_id','=','01'));
  404. $criteria->add(new TFilter('chave','=','01'));
  405. // carrega ultimo produto cadastrado
  406. $tabparemtro = $repository->load($criteria);
  407. foreach ($tabparemtro as $row)
  408. {
  409. $lid = $row->id;
  410. $lcod_id = intval(trim($row->valor));
  411. }
  412. //incrementa produto
  413. $lcod_id = $lcod_id + 1;
  414. // salva em parametro
  415. $parametro= parametro::find($lid);
  416. $parametro->store();
  417. // passa valor para codigo id
  418. $object->cod_id = $lcod_id;
  419. // ---------------------------fim das validacoes complementares
  420. // stores the object
  421. $object->store();
  422. TSession::setValue('laba',0);
  423. // ***** ------------------------------------------- -------------- carrega grade
  424. // creates a repository
  425. $repository = new TRepository('fotoequipto');
  426. // creates a criteria
  427. $criteria = new TCriteria;
  428. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  429. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  430. $criteria->add(new TFilter('tipo','=','P'));
  431. $criteria->add(new TFilter('cod_id','=',$object->cod_id));
  432. // default order
  433. $param['order'] = 'id';
  434. $param['direction'] = 'asc';
  435. $criteria->setProperties($param); // order, offset
  436. //$criteria->setProperty('limit', 100);
  437. // load the objects according to criteria
  438. $tabela = $repository->load($criteria);
  439. $this->grade->clear();
  440. if ($tabela)
  441. {
  442. // iterate the collection of active records
  443. foreach ($tabela as $row)
  444. {
  445. $this->grade->addItem($row);
  446. }
  447. }
  448. // set the data back to the form
  449. $this->form->setData($object);
  450. // close the transaction
  451. TTransaction::close();
  452. // shows the success message
  453. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  454. // reload the listing
  455. }
  456. catch (Exception $e) // in case of exception
  457. {
  458. // shows the exception error message
  459. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  460. // undo all pending operations
  461. TTransaction::rollback();
  462. }
  463. }
  464. /**
  465. * method OnEdit()
  466. * Executed whenever the user clicks at the edit button da datagrid
  467. */
  468. function OnEdit($param)
  469. {
  470. try
  471. {
  472. if (isset($param['key']) or trim(TSession::getValue('lcodigo')) <> '')
  473. {
  474. if (isset($param['key']))
  475. {
  476. $key=$param['key'];
  477. } else
  478. {
  479. $key = TSession::getValue('lcodigo');
  480. }
  481. TSession::setValue('lcodigo', $key);
  482. // open a transaction with database 'erpweb'
  483. TTransaction::open('erpweb');
  484. // instantiates object produto
  485. $object = new produto($key);
  486. // ***** --------------- carrega descricoes seekbutton
  487. if (trim($object->centro_resultado) <> '')
  488. {
  489. $repository = new TRepository('centroreplicado');
  490. $criteria = new TCriteria;
  491. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  492. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  493. $criteria->add(new TFilter('cod_id','=',$object->centro_resultado));
  494. $criteria->add(new TFilter('ano_base','=',trim(TSession::getValue('gano_resultado'))));
  495. $tabela = $repository->load($criteria);
  496. foreach ($tabela as $row)
  497. {
  498. $object->descri_centro = $row->descricao;
  499. }
  500. }
  501. $repository = new TRepository('almoxarifado');
  502. $criteria = new TCriteria;
  503. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  504. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  505. $criteria->add(new TFilter('id','=',$object->almoxarifado));
  506. $tabela = $repository->load($criteria);
  507. foreach ($tabela as $row)
  508. {
  509. $object->descri_almox = $row->descricao;
  510. }
  511. $repository = new TRepository('grupoproduto');
  512. $criteria = new TCriteria;
  513. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  514. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  515. $criteria->add(new TFilter('id','=',$object->cod_grupo));
  516. $tabela = $repository->load($criteria);
  517. foreach ($tabela as $row)
  518. {
  519. $object->descri_grupo = $row->descricao;
  520. }
  521. $repository = new TRepository('tgtipoprod');
  522. $criteria = new TCriteria;
  523. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  524. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  525. $criteria->add(new TFilter('id','=',$object->cod_tipo));
  526. $tabela = $repository->load($criteria);
  527. foreach ($tabela as $row)
  528. {
  529. $object->descri_tipo = $row->descricao;
  530. }
  531. // ***** --------------- fim seekbutton
  532. // ***** ------------------------------------------- -------------- carrega grade
  533. // creates a repository
  534. $repository = new TRepository('fotoequipto');
  535. // creates a criteria
  536. $criteria = new TCriteria;
  537. $criteria->add(new TFilter('empresa','=',TSession::getValue('gempresa')));
  538. $criteria->add(new TFilter('filial','=',TSession::getValue('gfilial')));
  539. $criteria->add(new TFilter('tipo','=','P'));
  540. $criteria->add(new TFilter('cod_id','=',$object->cod_id));
  541. // default order
  542. $param['order'] = 'id';
  543. $param['direction'] = 'asc';
  544. $criteria->setProperties($param); // order, offset
  545. //$criteria->setProperty('limit', 100);
  546. // load the objects according to criteria
  547. $tabela = $repository->load($criteria);
  548. $this->grade->clear();
  549. if ($tabela)
  550. {
  551. // iterate the collection of active records
  552. foreach ($tabela as $row)
  553. {
  554. $this->grade->addItem($row);
  555. }
  556. }
  557. $this->notebook->setCurrentPage(TSession::getValue('laba'));
  558. // fill the form with the active record data
  559. $this->form->setData($object);
  560. // close the transaction
  561. TTransaction::close();
  562. }
  563. else
  564. {
  565. $this->form->clear();
  566. TSession::setValue('lcodigo', '');
  567. TSession::setValue('laba',0);
  568. }
  569. }
  570. catch (Exception $e) // in case of exception
  571. {
  572. // shows the exception error message
  573. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  574. // undo all pending operations
  575. TTransaction::rollback();
  576. }
  577. }
  578. /**
  579. * method onDelete()
  580. * Executed when the user clicks at the delete button
  581. */
  582. public static function onDelete($param)
  583. {
  584. try
  585. {
  586. $chave=$param['id']; // get the parameter $key
  587. TTransaction::open('erpweb'); // open a transaction with database
  588. $object = new fotoequipto($chave, FALSE); // instantiates the Active Record
  589. $object->delete(); // deletes the object from the database
  590. TTransaction::close(); // close the transaction
  591. TSession::setValue('laba',2);
  592. new TMessage('info', AdiantiCoreTranslator::translate('Record deleted')); // success message
  593. AdiantiCoreApplication::loadPage('produtoForm','onEdit');
  594. }
  595. catch (Exception $e) // in case of exception
  596. {
  597. new TMessage('error', $e->getMessage()); // shows the exception error message
  598. TTransaction::rollback(); // undo all pending operations
  599. }
  600. }
  601. }
  602. </your>
NR

Armando, você está criando a variável $this->frame sem que ela tenha nenhum vínculo com os componentes adicionados à tela. Faça o seguinte:
 
  1. <?php
  2. // frame - imagem do produto
  3. $photo_frame = $ui->getWidget('photo_frame');
  4. //$this->frame = new TElement('div');
  5. //$this->frame->id = 'photo_frame';
  6. $photo_frame->id = 'photo_frame';
  7. ?>
AN

Nataniel.

É o seguinte....

Voce é o cara..... ;-) bingo

Carregou certinho.

Muito obrigado pela sua ajuda.

Já tinha procurado por um post com esse tópico no fórum (salvo engano datado de junho de 2016) e lá não colocaram a solução. Por isso postei este.

Valeu muito a sua ajuda.

Obrigado de coração.