Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Componente compartido inter-forms. (https://www.clubdelphi.com/foros/showthread.php?t=68332)

yapt 08-06-2010 11:59:16

Componente compartido inter-forms.
 
Hola,

tengo un form-PADRE que tiene un TMemo que hace las veces de LOG de la aplicación.

El caso es que hay varios form-Hijox que heredan de ese Form-Padre. Todos ellos muestran el Tmemo del form-padre.

TForm-Padre (TMemo)
|
+-- TForm-Hijo1
|
+-- TForm-Hijo2
|
+-- TForm-Hijo3

Pueden existir uno o varios TForm-Hijox abierto simultaneamente. Y cada uno de ellos escribe sus propios "asuntos" en el LOG (TMemo). Ok hasta aquí y cada uno muestra su propio LOG.

Pero me gustaría que todos ellos compartiesen el mismo LOG (TMemo). Es decir, si desde TForm-Hijo1, escribo: xxxxxxx en el log y que el resto de TForm-HijoS abiertos, muestre este text 'xxxxxxxxxxx' en su log.

Pero no escribiendo lo mismo en distintos TMemo, sino solo en el del padre.

Aunque no sé si esto es posible. No sé si me explico con claridad... :confused:

Gracias.

Neftali [Germán.Estévez] 08-06-2010 13:21:17

Cita:

Empezado por yapt (Mensaje 366533)
Pero no escribiendo lo mismo en distintos TMemo, sino solo en el del padre.

Una vez creas los hijos, aunque deriven del objeto padre, ya son formularios distintos y ocupan espacios de memoria distintos. Si deseas hacerlo deberás actualizar tú ese texto (de forma más o menos automática), pero tal y como pides, no se puede.

Otra opción, supongo, sería que los 2 memos apuntaran al mismo espacio de memoria, pero creo que eso sería complicar las cosas y te podría dar más problemas que beneficios.

No se si alguien tiene alguna idea más... a mi no se me ocurre.

coso 08-06-2010 14:04:21

Hola,

Cita:

Otra opción, supongo, sería que los 2 memos apuntaran al mismo espacio de memoria, pero creo que eso sería complicar las cosas y te podría dar más problemas que beneficios.
creo que esto seria lo mas correcto. Al momento del create de los forms hijos, hacer algo como MemoHijo.Lines := MemoPadre.Lines, asignando el mismo puntero. Eso si, al momento de liberar tendrias que liberar la direccion de MemoHijos.Lines original, si no te quedarian colgadas en memoria. Me pongo a ver si puedo hacerte un ejemplo...

yapt 08-06-2010 15:37:14

Bueno, a decir verdad, tengo un componente (propio) para todo el tema de LOG, y este ya tiene un StringList propietario...

Podria apuntar todos los TMemo.Lines a este StringList..... Este LOG es de las ULTIMAS cosas en liberarse al finalizar mi aplicación. Es decir, se crea al inicio (para temas de logging) y se destruye al final...

A ver.. a ver....

Neftali [Germán.Estévez] 08-06-2010 16:55:32

Cita:

Empezado por coso (Mensaje 366556)
creo que esto seria lo mas correcto. Al momento del create de los forms hijos, hacer algo como MemoHijo.Lines := MemoPadre.Lines, asignando el mismo puntero. Eso si, al momento de liberar tendrias que liberar la direccion de MemoHijos.Lines original, si no te quedarian colgadas en memoria. Me pongo a ver si puedo hacerte un ejemplo...

Más o menos en eso pensaba yo, pero aun así no tengo claro que funcione el "refresco" en varios formularios del componente memo. :confused::confused::confused:


La franja horaria es GMT +2. Ahora son las 14:31:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi