怎样向各Form发送消息并传递参数

symansoft 2000-10-19 12:11:00

各位大侠:
鄙人有3个Form,在Form1中输入数据,并形成链表节点,在Form2中有ListView控件,Form3中有TreeView控件。我希望在Form1中每增加一项,即自动在Form2和Form3中显示出来。同时,当鼠标选中Form2或Form3中某项时,Form1自动调出相应内容供修改。即3个Form的内容必须保持同步。
我想通过自定义消息解决问题,即在Form1中生成Node时,向所有Form发送一自定义消息,并将Node的指针作为参数传到各Form供各Form自行处理.但不知怎么具体做,恳请指教!
另外,不知有不有更好的方法。
...全文
186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
猛禽 2000-10-25
  • 打赏
  • 举报
回复
既然自定义,当然随便了,反正这个消息只发生在你的程序里,对别人没影响的,但一定要是用WM_USER+一个正数,因为比WM_USER小的数已被WINDOWS用了,否则要出乱子的。
symansoft 2000-10-24
  • 打赏
  • 举报
回复

这个问题还没有解决呢!
我经常看到Delphi中自定义消息时有WM_USER+200的字样,是什么意思呢?+300或1行吗?
猛禽 2000-10-20
  • 打赏
  • 举报
回复
那教你一招吧,自定义一个消息,然后设置WindowProc属性,在其中响应这个自定义消息即可,具体用法见其帮助。
symansoft 2000-10-20
  • 打赏
  • 举报
回复

在一个Form中主动调用另一个Form的事件,我还是觉得别扭。我仍然希望在Form1中广播一消息(SendMessage(WM_BROACAST,...)),所有接受到此消息的Form均根据自己的需要响应或不响应,也就是在应用程序内部传递消息和参数。但我不知具体如何做,请赐教。
猛禽 2000-10-20
  • 打赏
  • 举报
回复
那还有一个方法,用自定义Form,在其中增加一自定义事件,其中一个参数为NODE指针,每个FORM改变时就调用其它FORM的此事件,这样就可以了。
...
class TMyForm : public TForm
...
TMyForm::MyEvent( TObject * Sender, TNode * Node )
...
TMyForm * Form1;
TMyForm * Form2
TMyForm * Form3;
...
// eg. Form1 on change
Form2->MyEvent( this, Node );
Form3->MyEvent( this, Node );
...
猛禽 2000-10-20
  • 打赏
  • 举报
回复
test
symansoft 2000-10-19
  • 打赏
  • 举报
回复

不是麻烦不麻烦的问题.如象Raptor所说的去做,就必须在Form1中调用Form2和Form3的控件方法,又必须在Form2中调用Form1和Form3的控件方法,又必须在Form3中调用Form2和Form1的控件方法,那才叫麻烦呢!
猛禽 2000-10-19
  • 打赏
  • 举报
回复
自定义消息太麻烦了吧?
你在Form1修改时同时修改Form2/Form3
响应Form2/Form3中的ListView/TreeView的OnChange去修改Form1不就可以达到目的了吗?
猛禽 2000-10-19
  • 打赏
  • 举报
回复
自定义消息太麻烦了吧?
你在Form1修改时同时修改Form2/Form3
响应Form2/Form3中的ListView/TreeView的OnChange去修改Form1不就可以达到目的了吗?
猛禽 2000-10-19
  • 打赏
  • 举报
回复
自定义消息太麻烦了吧?
你在Form1修改时同时修改Form2/Form3
响应Form2/Form3中的ListView/TreeView的OnChange去修改Form1不就可以达到目的了吗?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧