首页 > 解决方案 > 使用消息通知 TFrames 他们应该刷新底层数据集

问题描述

我正在使用 TFrame 将表单的不同部分(视觉元素和代码)拆分为不同的单元。例如,如果我的表格是一张发票,我有 Frame#1 显示客户、发票日期和总金额,而 Frame#2 包含包含数量、产品名称和金额的产品列表。

每当用户添加/编辑/删除产品线时,我希望 Frame#2 通知所有框架的更改。然后第 1 帧将重新计算总量。

我想使用 Windows 消息来执行此操作,但我不确定这是否可行。

我已经定义(在所有单元使用的 DataModule 中):

Const Message_ProductLineUpdate = WM_USER + 101;

然后在 Frame#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);

但我猜消息是专门“分派”到发送帧的。我也猜测我的处理程序只收听发布到它自己的句柄的消息。

是否可以将所有帧都连接到应用程序的消息?处理这种情况的正确方法是什么?

标签: delphiwindows-messagestframe

解决方案


推荐阅读