写在form得oncreate里的代码是不是在编译的时候执行的?如果不是,是不是就只执行一次的?

解决方案 »

  1.   

    关闭?
    如果是Free了窗体,再打开时就需要Create,那么OnCreate事件就会触发。
    如果是Hide了窗体,再打开时只是Show,那么OnCreate事件不会触发。
      

  2.   

    楼主看来对对象的创建还是没搞清。OnCreate 只是一个过程,一个过程可以在任何时候调用,只要你调用就会执行。Form1.OnCreate 在窗体对象创建时候调用了一次。你所说的关闭窗体就是释放了窗体这个对象,你所指的打开窗体应是创建了窗体对象。
      

  3.   

    窗体Close之后再Show是不会触发OnCreate事件的。
    楼主最好自己动手写一下,或许比别人讲的更容易弄明白。
      

  4.   

    "窗体Close之后再Show是不会触发OnCreate事件的。"
    ================================================
    糊涂了,那到底什么时候是create窗体啊
      

  5.   

    在菜单Project选View Source,看到有一句Application.CreateForm(TForm1, Form1);
    就是那个时候创建的
      

  6.   

    有点意思
    1、窗口的OnCreate事件在当你创建窗口的时候会执行。你也可以额外去调用它
    2、创建窗口指的是造在程序中执行下列中的任何一句
       YouForm:=TYouForm.Create(Application);
       Application.CreateForm(TYouForm, YouForm);
       with TYouForm.Create(Self) do
    *当你在设计阶段新建一个Form时,系统会默认添加
    Application.CreateForm(TYouForm, YouForm);
    你可以通过Project->View Source察看是否执行了此行,可以通过Project->Options->Forms将其移除
    3、当程序执行后,也可以在任何地方执行OnCreate部分,譬如在一个按钮中直接执行
       FormCreate(Self);
       重新执行一次窗口的OnCreate事件如果楼主是初入行的Delphi人员,那么检查你的
    Application.CreateForm(TYouForm, YouForm);
    如果是入行有一定时间,那么会明白的
      

  7.   

    那也就是说,如果在程序里,没有手工执行create操作,那么整个软件系统的运行中,这个oncreate只执行了一次?
      

  8.   

    好累
    我的意思是,是不是,如果我没有额外执行窗体的命令
    那么这个oncreate是不是只执行了一次?也就是在dpr里的
    而这个oncreate是不是在编译的时候就完成了?