form1中button click事件中代码是form2.showmodal.form2的formcreate事件代码如下:
procedure Tfrm_shitu.FormCreate(Sender: TObject);
var Tabname:array[0..5] of string;
 i:integer;
begin
for i:=0 to 5 do
 begin
  tabsheet[i]:=Ttabsheet.create(self);
  tabsheet[i].PageControl:=pagecontrol1;
  tabsheet[i].Name:='tabsheet'+inttostr(i);
  tabsheet[i].Caption:=TabName[i];
 end;
 pagecontrol1.ActivePage:=tabsheet[0];
 shockwaveflash1.Visible:=true;
 shockwaveflash1.Movie:=ExtractFilePath(paramstr(0))+'01\lst\xlrw.swf';
end;
form2中有个pagecontrol控件。有个onchange事件用来转换flash的。还有一个button,点击button的代码是close.
怎么样才能form2关闭后再打开显示初始化的画面呢?

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if Form2 = nil then Form2 := TForm2.Create(nil);
      Form2.Showmodal;
      FreeAndNil(Form2);
    end;
      

  2.   

      Frm_LOGO:=TFrm_LOGO.Create(nil);
      Frm_LOGO.Show;
      Frm_LOGO.Update;
      Sleep(2000);
      Frm_LOGO.Close;
    不知道这段代码能不能帮到你!
      

  3.   


    没说完。继续:上面这种方法可以用。
    Form.Close默认只是让窗体隐藏了
    如果你不想每次关闭后都释放,再次打开时重新创建,可以专门在TForm2写一个方法,例如:
    procedure TForm2.InitSetup;
    begin
      //把所有的初始化设置都放在这里面写
    end;
    然后,在Show这个窗体时执行InitSetup。
      

  4.   

    你是不是在哪里写了释放Form2的代码了
    你只要没有写释放Form2的代码,那么你单击Form2的关闭按钮,只是隐藏了窗体,你再次点击Form1的button1,实现form2.showmodal的时候还是会显示你原来Form2的界面
      

  5.   

    在Form2的onClose事件里写
    Action:=cafree;
    Form2:=nil;
    在Form2的Button1的onclick事件里写
    if not Assigned(Form2) then
       Form2:=TForm2.Create(Application);
    Form2.ShowModal;
      

  6.   


    或者,以OnClose里写 Action := caFree;
    这样,打开的代码就这样写:  Form2 := TForm2.Create(nil);
      Form2.Showmodal;
      

  7.   

    将pagecontrol1.ActivePage:=tabsheet[0];放到form2.show()方法中试试
      

  8.   

    如果在OnClose里写Action := caFree;
    写法请按10楼的写。
    PS:在Form2的onClose事件里写 
    Action:=cafree; 
    Form2:=nil;    ----上述等价于 FreeAndNil(Form2);if not Assigned(Form2) then 
       Form2:=TForm2.Create(Application); 
    Form2.ShowModal;   ----上述等价于:
     if Form2 = nil then Form2 := TForm2.Create(Application);//不必指定Owner,nil即可
      Form2.Showmodal;
      

  9.   

    你们大家都理解错楼主的意思了,他是想在再次打开Form2的时候再次执行Form2的oncreate代码,他是想问为什么他再次再button1打开form2的时候为什么form2的oncreate里的代码为什么没有执行
    天哪,拐了这么大一个弯