在TREEVIEW的Change事件中,将NODE.TEXT传递过去,遍历菜单,找出菜单的CAPTION与NODE.TEXT匹配的,然后执行相应的过程函数,打开对应窗口

解决方案 »

  1.   

    procedure TMDIFrm.MenuItemsToListView(mMenu: TMenuItem; nNode: TTreeNodes;p_node: TTreeNode);
    var i: Integer;
        c_node: TTreeNode;
    begin
      for i := 0 to mMenu.Count - 1 do
      begin
        if mMenu.Items[i].Caption<>'-' then
        begin
          c_node:= nNode.AddChild(p_node,mMenu.Items[i].Caption);
          c_node.Data:= @mMenu.Items[i].OnClick;
        end;
        MenuItemsToListView(mMenu.Items[i],nNode,c_node);       //递归
      end;
    end;procedure TMDIFrm.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var pro : TNotifyEvent;
    begin
      @pro:= TreeView1.Selected.Data;
      if Assigned(pro) then pro(nil);
    end;1、递归过程中要向TreeView加入菜单事件2、加入TreeView的MouseUp事件代码问题解决,点击treeview与菜单一致。