Я использую TFrames, чтобы разделить различные части формы (визуальные элементы и код) на разные единицы. Например, если моя форма представляет собой счет-фактуру, у меня есть кадр № 1, показывающий клиента, дату счета-фактуры и общую сумму, и кадр № 2, содержащий список продуктов с количеством, названием продукта и суммой.
Всякий раз, когда пользователь это добавление / редактирование / удаление линейки продуктов, я хотел бы, чтобы кадр № 2 уведомил все кадры об изменении. Кадр № 1 затем пересчитает общую сумму.
Я хотел бы использовать Windows сообщения, чтобы сделать это, но я не уверен, что это возможно.
Я определил (в DataModule, который используют все модули):
Const Message_ProductLineUpdate = WM_USER + 101;
Затем в кадре № 1 я определил свой «обработчик»:
procedure RefreshAmount(var Msg:TMessage); message Message_ProductLineUpdate;
А в кадре № 2, когда происходит изменение, я делаю :
PostMessage(Application.Handle,Message_ProductLineUpdate,0,0);
Но RefreshAmount никогда не вызывается. Сначала я попробовал:
PostMessage(Self.Handle,Message_ProductLineUpdate,0,0);
Но я предполагаю, что сообщение «отправляется» исключительно в кадр отправки. Я также предполагаю, что мой обработчик только прослушивает сообщения, отправленные на его собственный дескриптор.
Возможно ли привязать все кадры к сообщениям приложения? Как правильно справиться с этой ситуацией?