主窗口中使用一个PageControl,使用时新建tabsheet,并将对应frame放置到新建tabsheet中.每个frame都有自带的actionlist及对应快捷键,当主窗口中的tabsheet大于两个时,actionlist对应的快捷键不是不起作用,就是调用其他过程,在不就是delphi提示内存错误.
现在想在每个tabsheet新建或激活时,主窗口的actionlist变为对应frame中的actionlist,求解!

解决方案 »

  1.   

    激活tabsheet时,将当前form 的action设置为对应的tabsheet中的actionlist
      

  2.   


    具体该怎么做,我试过 form1.action:=form1.WORK_PC.ActivePage.Controls[0].FindComponent('actionlist1') AS Tactionlist;
    系统提示: actionbasic 与 tactionlist 类型不同,大概就是这个意思
      

  3.   

    这种方式应该是不行的。action与Tactionlist根本就不是同一类型。没怎么注意过这个问题。是不是因为你的焦点不在当前TABSHEET上?
    实在不行就改成MDI形式吧
      

  4.   

    试一下楼上的改MDI方法吧,MDIChild对应一个actionlist
      

  5.   

    改mdi工作量有些大,另外mdi多个子页面重叠不方便使用
      

  6.   

    直接对frame.actionlist := from1.actionlist ;
    或者单独赋值frame.action := actionlist.action[0];
      

  7.   

    如楼上.
    主窗体是ActionList;frame也是ActionList 这2个就是同1东西啊,直接关联不行吗form1.ActionList:=FrameX.ActionList;
    form1.ActionList.Actions[0]:=FrameX.ActionList.Actions[0];每个tabsheet中Frame名称会不同,可以用FindComponent或者tabsheet的Controls取得