Я намагався зрозуміти всю інформацію, і я загубився. Я розглядав Delphi (Pascal), C, C ++, java ... нічого не зрозуміло, отже, через місяць це проблема, як я бачу. Можливо, я зовсім не на шляху, тому, будь ласка, скажіть мені ... чемно, будь ласка.
Один відправник події, один ловець, якщо відправник реєструє ловця. У мене є 4 діалогові вікна, які потрібно оновлювати щоразу, коли змінюється файл (код обробки якого знаходиться в іншому модулі, ніж 4 діалогові вікна). Я розглядав можливість оновлення кожного по-старому, але потім переглянув події Delphi та обробку повідомлень. Подивимось:
Файл F (Відправник) закінчено читати, і він повинен повідомити діалогові вікна 1..4 про те, що зараз є дані для їх відображення та користувач, з яким можна пограти. Що найкраще?
Спробуйте зареєструвати діалогові вікна 1..4 як слухачі і змусити відправника якось увімкнути OnUpdatedDataEvent?
Спробуйте надіслати повідомлення по системі, сподіваючись, що діалогові вікна 1..4 його зрозуміють?
Зверніть увагу, що подія зберігає речі, пов’язані між собою, а обмін повідомленнями не робить ... і їх важко налагодити.
І мені цікаво, як блок файлів коду зможе зареєструвати 4 слухачів (діалогові вікна)?
Я розглядаю можливість каскадного дзвінка, тобто виклик викликає одного слухача, котрий дзвонить наступному ... до досягнення кінця ланцюжка. Мені навіть цікаво, чи можливо це взагалі?
Приклад:
Скажімо, Файл F - це список мов. Тепер DialogBox 1 робить щось у списку (додає нову мову, наприклад); що поле зі списком оновлює файл F; це, в свою чергу, запускає DataUpdatedEvent. 4 діалогові вікна містять, скажімо, TComboBoxes, які відображають список мов при їх появі. Я хочу, щоб 4 поля помітили зміну та оновили власний вміст комбінованого поля зі свіжооновленим Файлом ... не турбуючись про те, як комбіновані поля знають, що їм потрібно оновити їхній вміст. Якщо він працює так, як передбачалося, параметр відправника буде перенесено, а діалогове вікно, яке ініціювало dataUpdateEvent, буде обійдено, оскільки воно вже буде оновлено. Зрештою, якщо sender = self, то перехід до наступного обробника події повинен бути легким у реалізації.
Все це тому, що я хочу вправити свій мозок ... щоб запобігти хворобі Альцгеймера.