Hola Juan
gracias por la idea, estuve evaluando si retocar el codigo de p4a con
lo que mencionas y decidi que mejor no, esto llevaría a que luego
tuviera que estar pendiente de cambios para actualizar la version de
p4a y preferi descarte eso
pero la idea de hacer destroy a la mascara la aplique poneidnola en el
codigo que lanza las interfaces desde mi menu y si que a funcionado
osea hago esto
//defino mi menu
$this->menu->addItem("seguridad", "Seguridad");
$this->menu->items->seguridad->addItem("usuarios","Usuarios");
$this->menu->items->seguridad->addItem("accesos","Accesos");
$this->menu->items->seguridad->addItem("clave","Cambio de clave");
$this->intercept($this->menu->items->seguridad->items->usuarios,"onClick",
"menuClick");
$this->intercept($this->menu->items->seguridad->items->accesos,"onClick",
"menuClick");
$this->intercept($this->menu->items->seguridad->items->clave,"onClick",
"menuClick");
//lanzo la opcion seleccionada
function menuClick() {
$this->active_mask->destroy(); <-- hago destroy de la actual antes
de lanzar la nueva
$this->openMask($this->active_object->getName());
}
y va de pelos, baje el consumo de memoria de php de 48mb a 32mb y todo
va suave.....el problema de ponerlo en el boton de salida de lasi
nterfaces es que los usuarios simplemente NO lo usan asi que en cada
lecutra de mascara asegurandome de matar la anterior va bien, e
habierrto todas mis interfaces en orden a ver en que momento colapsa y
nada todo bien
gracias por la ayuda
saludos
El día 17 de mayo de 2008 18:46, Juan Manuel Castro
<juanmanuel.cas...@gmail.com> escribió:
> Ernesto:
> En algun momento tuve inconvenientes con interfaces que leian tablas con
> 1.500.000 registros y filtros de 20 campos.-
> Lo que comentas es real. Lo que usaba en esos momentos era P4a Version
> 2.2.3.- Lo que hice fue reescribir la accion exit de la toolbar que ponia en
> esas mascaras, en el metodo lo que hace es hacer un destroy de la mascara en
> vez de hacer un Show de la mascara previa.
> Se podria probar reemplazando en p4a/objects/widgets/toolbars/actions.php en
> la public function setMask(P4A_Mask $mask) la linea:
> $this->buttons->exit->implement('onClick', $mask, 'showPrevMask');
> por
> $this->buttons->exit->implement('onClick', $mask, 'showPrevMask(true)');
> Fijate en p4a/objects/widgets/toolbars/actions.php
> public function setMask(P4A_Mask $mask)
> {
> $this->buttons->save->implement('onClick', $mask, 'saveRow');
> $this->buttons->cancel->implement('onClick', $mask, 'reloadRow');
> $this->buttons->exit->implement('onClick', $mask, 'showPrevMask');<
> --- Se implementa en p4a/objects/p4a.php
> return $this;
> }
> Fijate en p4a/objects/p4a.php
> public function showPrevMask($destroy = false)
> {
> if ($destroy === true) {
> $this->active_mask->destroy();
> } elseif ($this->active_mask->isPopup()) {
> $this->active_mask->isPopup(false);
> $this->_redesign_whole_mask = true;
> }
> if (sizeof($this->masks_history) > 0) {
> $mask_name = array_pop($this->masks_history);
> $this->setActiveMask($mask_name);
> }
> Espero te sea util, saludos y contame si te sirvio.-
> --
> Juan Manuel Castro
> D.N.I. 26.852.693
> Solis 168 - C.P. 2705
> Rojas - Buenos Aires
> Tel. 54 - 02474-15-56-4189
--
Inscribete en las listas de APESOL
http://www.apesol.org/listas.php Visita
http://www.eqsoft.net
Manuales, noticias, foros, etc.