Página 1 de 1

EditDialog ....

NotaPublicado: Mié Oct 05, 2005 2:57 pm
por cesar.jorge
Realizado un mantenimiento de una entidad heredando de EditDialog, y haber confeccionado un laborioso panel Insert, insertando bastante código en el diagrama de acción, me encuentro que he de repetir todo el proceso para el panel Update. Vaya !!

¿ Puede aprovecharse el trabajo realizado en el panel Insert ?

NotaPublicado: Mié Oct 05, 2005 3:33 pm
por Administrador
Hola César :)

Pues que yo sepa, no, ya que los campos del Update están en una región que se llama DetailP y los del Insert en InsertP.

Saludos,

Paco Picón

pienso que es una de las cosas pendientes de mejorar de plex

NotaPublicado: Jue Oct 06, 2005 11:09 am
por pactorre
Creo que uno de los puntos en los que Plex, claramente podría mejorar es en la flexibilidad y la comodidad para el usuario en el diseño de los formularios. Tal vez algunas opciones que permiten guardar un diseño como una plantilla, o que permitieran exportarlo de alguna forma podrían estar bien.

Saludos,

Paco de la Torre

NotaPublicado: Jue Oct 06, 2005 11:53 am
por Administrador
Eso se puede hacer en muchos casos... Si defines un Panel con una región (por ej. DetailP) con unos campos y controles determinado, los paneles que hereden de ahí, heredarán la plantilla. El problema es que en el EditDialog, el Update y el Insert tienen nombres distintos para las regiones que muestran los campos...

Saludos,

Paco Picón

Manejo de Herencia Multiple

NotaPublicado: Vie Oct 07, 2005 1:23 am
por Julio Rosenberg
Lo unico que se puede hacer es especializar la clase EditDialog, de tal forma que tanto Insert como Upate hereden de una función que dependa de la entidad. Alli se podría crear una región nueva común a ambos con los campos y la lógica que se quiera compartir. Sería volver al esquema que tenia User Maintained Entity o Grid Maintained Entity en las viejas clases de Obsydian.
Especializar una clase no es facil y lleva trabajo, pero si es algo que se va a hacer comunmente, es la solución

Saludos

Julio Rosenberg

Solución !

NotaPublicado: Lun Oct 10, 2005 11:43 am
por cesar.jorge
Creo que he logrado una solución bastante aceptable.

primero heredar la función Update de Insert.
    Entidad.EditSuite.Update IS A Entidad.EditSuite.Insert

con esto obtenemos un panel Update con 2 regiones (la de Update generada por plex y la personalizada en Insert).
    1. Ocultamos las regiones DetailP e InsertButtonP. O sea, nos quedamos con la region de edicion de Insert y con los botones de Update.
    2. A los campos edit que sean claves de la entidad se les pondrá la propiedad Disabled = Yes.


En el diagrama de acción lo siguiente:

en Post Point End Update get panel data
Código: Seleccionar todo
Get  InsertP
Set  DetailP = InsertP

en Post Point End initialize
Código: Seleccionar todo
Set  InsertP = DetailP
Put  InsertP


Por último en la función Grid hay que modificar el call a la función Update y completar los parámetros con los de GridP.

Saludos !!

Re: Solución !

NotaPublicado: Mar Oct 11, 2005 5:48 pm
por Julio Rosenberg
Cesar:

La solucion es buena, pero vas a tener que volver a escribirla en cada entidad que quieras usarla. Por eso te decia de especializar Edit Dialog con una nueva funcion que tenga una region nueva comun a Insert y Update. Lo que puedes hacer es :

Nueva EditDialog IS A EditDialog
Nueva EditDialog Function InsertUpdateComun

A esta nueva funcion le agregas la region comun y la logica necesaria con una meta operacion que pregunte si estas en Insert o update y luego haces que Insert y Update hereden de ella.

Luego en lugar de hacer Entidad is a EditDialog, haces
Entidad IS A Nueva EditDialog

Saludos

Julio Rosenberg

cesar.jorge escribió:Creo que he logrado una solución bastante aceptable.

primero heredar la función Update de Insert.
    Entidad.EditSuite.Update IS A Entidad.EditSuite.Insert

con esto obtenemos un panel Update con 2 regiones (la de Update generada por plex y la personalizada en Insert).
    1. Ocultamos las regiones DetailP e InsertButtonP. O sea, nos quedamos con la region de edicion de Insert y con los botones de Update.
    2. A los campos edit que sean claves de la entidad se les pondrá la propiedad Disabled = Yes.

En el diagrama de acción lo siguiente:

en Post Point End Update get panel data
Código: Seleccionar todo
Get  InsertP
Set  DetailP = InsertP

en Post Point End initialize
Código: Seleccionar todo
Set  InsertP = DetailP
Put  InsertP


Por último en la función Grid hay que modificar el call a la función Update y completar los parámetros con los de GridP.

Saludos !!

Re: EditDialog ....

NotaPublicado: Mar Feb 03, 2015 8:56 am
por Cock146
y haber confeccionado un laborioso panel Insert, insertando bastante código en el diagrama de acción, me encuentro que he de repetir todo el proceso para el panel Update. Vaya !!