调用MDICHILDFORM中的控件是不是跟正常的窗口不一样?   如我要根据鼠标的右键弹出一个菜单:     MainFrm.ActiveMDIChild.Popupmenu.Popup(X,Y);   而且这个PopupMenu只能是设计时定义好的,我不能:    MainFrm.ActiveMDIChild.PopupMenu := PopupMenu1;   这句话一运行就出错,错误为:EACCESSVIOLATION

解决方案 »

  1.   

    不可能
    你的popupmenu是在主窗体上吗?
      

  2.   

    popupmenu在mdichildfrm上,出错的语句就是MainFrm.ActiveMDIChild.PopupMenu := PopupMenu1;
    如果我在mdichildunit中写popupmenu1.popup(X,Y);就会出错,
    错误为eaccessviolation。这是否跟我把mdichildunit放在mainunit执行部分有关?
      

  3.   

    是真的,当我在MDICHILDFORM的POPUPMENU属性直接设成POPUPMENU,然后直接用mainfrm.mdichildren[0],popupmenu.popup(x,y);就不出错了,这样一来我的popupmenu就不能动态生成了,有没有什么好的办法来解决这个问题?
      

  4.   

    MainFrm.ActiveMDIChild.PopupMenu := PopupMenu1;
    这句话当然错了,PopupMenu1不知是在哪个窗体里的
    应该为
    mainfrm.ActiveMDIChild.PopupMenu:=TMDIchildform(mainfrm.ActiveMDIChild).PopupMenu1;