Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
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
Si se envía un 6 ya se sabe que hay que "recargar" las opciones "una" y "dos"

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.
Responder Con Cita
  #2  
Antiguo 21-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 22-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 30-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 30-11-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 24
Paoti Va por buen camino









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
Responder Con Cita
  #6  
Antiguo 02-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 19:30:43.


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