程序有1个主窗体(包含一个treeview控件),3个子窗体.实现功能:点击treeview项目后,3个子窗体能知道被点击项目的名字.第一解决给50分.

解决方案 »

  1.   

    很简单。给子窗体添加一个方法NotifySelectionChange:procedure TChildForm1.NotifySelectionChange(SelectedNode : TTreeNode);
    begin
      //在子窗体中该干什么干什么……
    end;当Tree的OnChange时,主窗体分别调用3个子窗体的NotifySelectionChange方法。ChildForm1.NotifySelectionChange(MyTree.Selected);
    ChildForm2.NotifySelectionChange(MyTree.Selected);
    ChildForm3.NotifySelectionChange(MyTree.Selected);
    ...
      

  2.   

    1.用参数传给子窗体,如楼上
    2.发送消息给子窗体。如
      SendMessage(ChildFor1.hande,WM_USERMessage,node.index,0).
    然后在子窗体中写相应消息处理代码
      

  3.   

    按楼主的要求,用消息处理更理想。
    每个子窗体里声明:
    procedure OnClickNode(var Msg:TMessage);message WM_USER+501;procedure ChildForm1.OnClickNode(var Msg:TMessage);
    begin
        Msg.WParam/////////是结点的index
    end;
    //////////////////////////
    主窗体点击结点后
    SendMessage(ChildForm1.hande,WM_USER+501,node.index,0);
    SendMessage(ChildForm2.hande,WM_USER+501,node.index,0);
    SendMessage(ChildForm3.hande,WM_USER+501,node.index,0);
      

  4.   

    因为SendMessage是同步的方法。所以与直接调用NotifyXXX没有任何区别。
      

  5.   

    在你结点的DblClick事件里加
    With ChildForm.Create(nil) do
    try
      //在这里传参数给子窗体
      ShowModal;
    finally
      Free;
    end;
      

  6.   

    //在这里传参数给子窗体
    传参数的方法。是在子窗体的public里定义一个属性。
    先写,property MyValue: String;然后按Ctrl + Shift + C.
      

  7.   

    直接把窗口的名字保存到TreeNode的text不就可以了,真的不行就用absoluteindex来对应窗口。这个问题应该听容易把。