![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Gracias dec, uso algo parecido, aunque la mayoría de las opciones las guardo en la propia base de datos (tabla config), en un entorno multiusuario es imprescindible, ya que el usuario puede cambiar de máquina y al hacer el login, tiene toda su configuración.
seoane: Gracias por el ejemplo , no hace falta que te expliques más porque ya he captado perfectamente la idea. Es más en los parámetros wmParams podría enviar un entero indicando qué opciones se han modificado, algo así como definir constantes del tipo: Código:
Valor Significado 1 modificado opción de desplegar 2 " " una 4 " " dos 8 " " 16 Tengo que implementarlo para ver las posibles "incomodidades" que produzca; de momento es el método que más me gusta. Tengo poco tiempo ahora mismo... pero volveré ![]()
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#2
|
||||
|
||||
|
A esto, en OOP se le conoce como el patrón del observador. La VCL lo utiliza en muchas partes, por ejemplo, cuando el DataSource comunica a todos los controles conectados (suscritos) a él, acerca de un cambio.
Con el método de seone recuerden que también pueden pasar como parámetros de los mensajes, apuntadores a un objeto o registro, disfrazados de enteros. Digo esto porque así puede pasársel una estructura de datos mucho más rica que indique qué cambios y cuáles hubo. // Saludos |
|
#3
|
||||
|
||||
|
Muchas gracias roman por el enlace, de hecho eso mismo he implementado con el TEventAlerter, pero como empezaba a ver "incomodidades" (pueden ser muchos mensajes registrados en la aplicación, muchos callbacks esperando dicha notificación, saltos de eventos en ocasiones inesperadas) ... vamos ... como la propia VCL en TDatasets (tú lo has comentado en otras ocasiones y estoy totalmente de acuerdo, es un jungla de eventos), quería saber si hay otra opción.
A ver, no pido milagros, sino poder reutilizar código y que sea algo "elegante". Si no puede ser ambas cosas al mismotiempo, usaré la que mejor se adapte. Lo que si me gusta del TIBEventAlert es que puedes saber todos los mensajes que están registrados en un momento determinado y al menos saber cuantos observadores lo esperan. Ayuda un poco cuando se está depurando una aplicación. Por razones que no vienen al caso, tengo que posponer mi trabajo unos días, así que no entraré a menudo en los foros, pero esto, no quita importancia a todos vuestros esfuerzos y consejos, Gracias. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#4
|
||||
|
||||
|
Pues al final me he decidido por el patrón del observador, pero nada complejo:
Un TStringlist almacena el nombre de cada "alerta", cada alerta lleva asociado un TObjectList. Cada elemento del TObjectList es un objeto en el que se puede almacenar: - Puntero hacia un procedure of object - Puntero hacia un procedure. - Tipo de Puntero (define cual de los dos anteriores se ha usado). - Nombre del observador (para depurar). Todo queda encapsulado en un TObject con los métodos: - AddAlert - > se registra un observador - DeleteAlert-> se elimina un observador - ExecuteAlert-> se lanza la notificación de una alerta determinada a todos sus observadores - AlertsNamesAndObservers -> Depuración: muestra todos los nombres de las alertas, el total de observadores y el nombre de cada uno. Los 3 métodos iniciales están sobrecargados para llamarlos con un "procedure of object" o con un simple "procedure" Le veo una pequeña lista de futuros cambios (de momento se queda como está ):TO DO: - ¿Derivar de TComponent y añadir el FreeNotification? Razon: Si el usuario del módulo no Elimina la alerta al hacer un .Free de la ventana donde se encuentra el Callback, al llamar a Execute se producirá un access violation. - Añadir CriticalSection ¿? Saludos y muchas gracias.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
||||
|
||||
Otro nivel con ustudes... cada día se aprende más. Gracias.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
|
#6
|
||||
|
||||
|
Como es algo que pueda interesar (al menos para echar un vistazo), aquí os lo dejo. Tiene una mala práctica de programación, el que avisa no es traidor.
Como ya dije hay dos clases una es TEventAlerter (a partir de ahora EA) y otra TEAItem, la relación entre ambas es la misma de un TreeView (TTreeNodesss) y un TTreeNode, pero he desechado hacerlo como hace la VCL. La razón (que no es de peso) es que me gusta usar una sola línea de código para añadir la alerta, en lugar de teclear 4 o 5 líneas. A quien le guste que lo use, y al que no... ¡¡ que lo modifique !! ![]() Otros Comentarios: - No se instala nada en la paleta de delphi, sólo son 2 unidades independientes. - Para usarlo, se da un ejemplo, básicamente es asignar un evento Onclick de por código delphi (sin usar el Inspector de objetos). - Implementado en BDS2006, pero se podrá ejecutar desde un Delphi 6 sin problemas. (En la cabecera del archivo EventAlerter.pas están las directivas del compilador, borrarlas si os da problemas) Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 10-10-2007 a las 20:58:14. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Minimizar todas las ventanas | santiago14 | Varios | 2 | 17-09-2004 03:34:01 |
| Preferencias de la mujer según su edad | santana | Humor | 81 | 27-06-2004 23:25:28 |
| Modificar Preferencias de Impresion | caio | API de Windows | 2 | 13-03-2004 13:20:46 |
| minimizar todas las ventanas. | soyhugo | Varios | 2 | 18-02-2004 13:11:26 |
|