我是这样的:在主Form上拖放一MainMenu,并有MenuItem N1“打开文件”,并建立SubItem N2、N3、N4分别为“文件1”、“文件2”、“文件3”。现在我想这样处理,在另一个关联组件TreeView1上对应上面的 N2、N3、N4,当点击TreeView1上相关节点时,反映到MainMenu的相关SubItem需要动态处理,比如我想在TreeView1上点击“文件1”时,MainMenu上的SubItemN2的文字颜色改变。我应该怎么处理,才妥当??在线急等!!!!!!!!

解决方案 »

  1.   

    归根结底还是菜单的处理
    你把这些处理都写在菜单里
    treeview点击时,处理相应的菜单事件
      

  2.   

    你把ttreeitemX的data属性设置成integer(nX{就是相关的menuitem});
    把变化菜单的代码写在菜单的点击响应函数里面;
    在treeview的onmousedown里面写:tmenuitem(node.data).click();
      

  3.   

    改一下:直接把ttreeitemX的data属性设置成nX{就是相关的menuitem},因为data好像是pointer类型的。
    实在不行你就强制转换成pointer,反正长度一样。
      

  4.   

    颜色的变化,不知道怎么实现,因为MenuItem没有FontColor属性。
    我用Checked属性来代替,就是在菜单项前面有一个小钩钩。在Treeview1的OnClick里写的代码如下,可以实现点击某节点,对应的菜单项被打上钩:procedure TForm1.TreeView1Click(Sender: TObject);
    var
     i: Integer;
    begin
     if TreeView1.Selected=nil then exit;
     for i:=1 to 3 do
      if TreeView1.Selected.Text='文件'+IntToStr(i) then
      begin
       N2.Checked:=false;
       N3.Checked:=false;
       N4.Checked:=false;
       case i of
       1: N2.Checked:=true;
       2: N3.Checked:=true;
       3: N4.Checked:=true;
       end;
       break;
      end;
    end;