我把以前的若干窗体改成了frame,通过菜单选择载入,现在的问题是:
在以前的窗体的OnShow时间中写了一些代码,而在改成frame后,没有相对的OnShow或者OnCreate事件,那这些代码该如何执行呢?

解决方案 »

  1.   

    用frame不是好事。
    你可以拦截消息来处理。
      

  2.   

    frame 的Parent 负责搞定初始化
      

  3.   

    载入后,执行FRAME里的新PROCEDURE还不是一样?
      

  4.   

    用frame有什么不好的地方么,麻烦能说的具体些吗?
      

  5.   

    我曾经试着用frame,觉得远不如用FORM来得实在,便再也不用了.
    FORM也是对象也可重用继承,我觉得frame能做的,FORM也能做.
      

  6.   

    但是我希望在一个form中通过菜单选择来载入不同的用户界面,这样的话是不是只能通过frame来实现?
      

  7.   

    通过菜单选择来载入不同的用户界面,这样的话是不是只能通过frame来实现-------- 这是不是意味着你知道该使用哪一个Frame?
    -------- 哪你也就应该可以在恰当的时候调用这个Frame的初始化代码?
      

  8.   

    frame和form的事件区别是from有OnCreate事件,而Frmae没有,你可以重载一下Frmme的OnCreate事件,来模仿Form的OnCreate事件。
      

  9.   

    可以直接把一个form当frame来使用的:form也可以嵌入另一个form的panel里
      

  10.   

    换个思路解决,每个frame里面写个自定义过程,比如procedure INIT;
    通过选择决定哪个载入,载入后调用一下INIT总行吧
      

  11.   

    如果用OO来设计,设计个 【frm老母】,然后从他继承,比如 【frmAAA】
    不管载入哪个,INIT
      

  12.   

    按照你的办法,我写了如下代码  try
        Application.CreateForm(TForm1,Form1);
        Form1.Show;
        Form1.Parent := Panel1;
      finally
        Form1.Free;
      end;Form1闪一下就没了,该如何修改代码呢?
      

  13.   

    知道了,是因为free掉了,,,,
      

  14.   

    现在觉得还是直接用form方便,谢谢大家!