2014-12-19 23 views
0

如何从窗体触发Windows消息并使用Delphi在该窗体中的组件中检索它?Delphi - 如何从窗体触发Windows消息并使用Delphi在该窗体中的组件中检索它?

例:

形式:

PostMessage(Handle, MY_MESSAGE, 0, 0); 

在我的组件(也就是在同一个表格):

procedure OnMyMessage(var Msg: TMessage); message MY_MESSAGE; 

在我的情况下,OnMyMessage根本就没有叫!

消息不仅仅是该组件,它是公开的,即使该组件不存在也是公共的。谢谢!

+0

推测这是你的组件?在PostMessage中更改句柄以调用您的组件Handle属性。您正在调用表单的句柄属性 – Jason 2014-12-19 05:16:52

+0

是的,但是该消息不仅适用于此组件,而且它是公开的,即使该组件不存在也是公开的。谢谢! – 2014-12-19 05:28:30

+0

您需要将OnMyMessage添加到您的表单中,而不是组件。如果你想让你的消息去多个组件(控件),你需要查看广播消息 – Jason 2014-12-19 05:31:02

回答

0

在窗体的上下文中,Handle是窗体的窗口句柄。如果你想为分量作为收件人,那么你需要使用组件的窗口句柄,如果它有一个:

PostMessage(MyComponent.Handle, MY_MESSAGE, 0, 0); 

现在,你也说:

的消息,不仅是这个组件,它是公开的,即使组件不存在也会出现在窗体上。

如果这意味着您希望表单接收到消息以及组件,那么您的运气不好。消息只有一个收件人。您可能需要发布到表单,处理表单中的消息,然后委托给需要通知的任何其他组件。