He estado tratando de darle sentido a toda la información y estoy perdido. He mirado a Delphi (Pascal), C, C ++, java ... nada está claro, así que después de un mes, este es el problema tal como lo veo. Puede que esté totalmente fuera de lugar, así que por favor dígame ... cortésmente, por favor.
Un remitente de evento, un receptor, siempre que el remitente registre al receptor. Tengo 4 cuadros de diálogo que deben actualizarse cada vez que cambia un archivo (cuyo código de manejo está en otro módulo que los 4 cuadros de diálogo). Consideré actualizar cada uno a la antigua, pero luego miré los eventos de Delphi y el manejo de mensajes. Veamos:
El archivo F (el remitente) ha terminado de leerse y debería notificar a los diálogos 1..4 del hecho de que ahora hay datos para que los muestren y el usuario pueda jugar con ellos. ¿Qué es lo mejor?
¿Intentar registrar los Diálogos 1..4 como oyentes y hacer que el remitente active un OnUpdatedDataEvent de alguna manera?
Intente enviar un mensaje a través del sistema, con la esperanza de que Dialogs 1..4 lo capte.
Tenga en cuenta que el evento mantiene las cosas acopladas, mientras que los mensajes no ... y son difíciles de depurar.
Y me pregunto cómo el bloque de código Archivo podrá registrar 4 oyentes (los cuadros de diálogo).
Lo que estoy viendo es la posibilidad de llamadas en cascada, lo que significa que la persona que llama llama a un oyente, quien llama al siguiente ... hasta que llega al final de la cadena. Incluso me pregunto si eso es posible.
Un ejemplo:
Decir Archivo F es una lista de idiomas. Ahora, DialogBox 1 hace algo en la lista (agrega un nuevo idioma, por ejemplo); ese cuadro combinado actualiza el archivo F; esto, a su vez, desencadena un DataUpdatedEvent. los 4 cuadros de diálogo contienen, digamos, TComboBoxes que muestran la lista de idiomas cuando aparecen. Quiero que los 4 cuadros noten el cambio y actualicen el contenido del cuadro combinado con el archivo recién actualizado ... sin tener que preocuparme por cómo saben los cuadros combinados que necesitan actualizar su contenido. Si funciona según lo previsto, el parámetro Sender se trasladará y el cuadro de diálogo que desencadenó el evento dataUpdateEvent se omitirá porque ya se actualizará. Después de todo, un if sender = self luego continuar con el siguiente controlador de eventos debería ser fácil de implementar.
Todo eso porque quiero ejercitar mi cerebro ... para prevenir el Alzheimer, no con mucho éxito, podría agregar.