如何让自已的控件发送和接收自己的信息?(100分)

  • 主题发起人 主题发起人 snappy
  • 开始时间 开始时间
S

snappy

Unregistered / Unconfirmed
GUEST, unregistred user!
就像Delphi下的数据感知控件,当数据库内容更改后,相应的DBEdit等控件也随着改了。

我想用自定义信息的方式向控件发送一个信息,然后这个控件接收到这个信息后再
作相应处理,请问如何实现??
 
1> const PWM_MyInfo = WM_User + 100;
2> 自己的控件假如 名字 为 frmTest
在需要发送消息的 地方 frmTest.perform(PWM_MyInfo,0,0);
3> 自己的控件 有响应的消息处理过程
procedure vpDoMyInfo(var Msg : TMessage);Message PWM_MyInfo;

 
我在同一个表单内用你这种方法的确可以,可当我把它放入两个新建的控件内:

1、当其中一个控件发信息时,另一个并不接收这个信息。
2、如果是控件发送信息,窗口能收到。
3、窗口发送信息,控件也不能收到。

这到底是怎么回事?!

注:这两个控件一个可视一个非可视、发信息的控件为不可视。
我在非可视控件中发信息的语句为:
(Getowner as TForm).perform(PWM_SSS,0,0);

 
[:(]我的问题就这么难吗???
 
请查阅DDE相关资料
 
(Getowner as TForm).perform(PWM_SSS,0,0); 是发消息给你控件所在的 Form 了,控件
A 要发消息给控件 B 应该在 A 的方法中调用 B.Perform(YourMessageID, .., ..)
如 Edit1.Perform(WM_CHAR,...) 就向 Edit1 发了一个 WM_CHAR 的消息,当然接收消息
的控件 B 所属的类 TB 要有响应 YourMessageID 消息的消息处理过程:
TB = class(TControl)
private
...
procedure Handle_YourMessageID(var Msg: TMessage); message YourMessageID;
...
end;
才能对消息作相应动作。
 
多人接受答案了。
 
后退
顶部