我有form1和form2两个窗体,我想在form1中调用form2窗体,我采用的是动态调用的,代码如下:
procedure TForm1.btn1Click(Sender: TObject);
var myform:TForm2;
begin
  myform:=TForm2.create(nil);
  myform.Visible:=true;
  MyForm.showmodal;
end;
当form2出来之后四秒钟后自动关闭,代码如下:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
timer1.Interval:=4000;
form2.Close;
end;
现在问题是为什么我创建的myform不能showmodal啊?我想要form2弹出来再form1的上面,即form2覆盖form1,请问各位高手该怎么实现啊??

解决方案 »

  1.   

    procedure TForm1.FormActivate(Sender: TObject);
    begin
      Form2.ShowModal;
    end;
      

  2.   

    procedure TForm2.Timer1Timer(Sender: TObject);
    begin
    //这里可以对程序进行初始化;
      Label1.Caption := '欢迎进入本系统......';
      close;
    end;
    当也可以对timer进行初始化。。
      

  3.   

    我这个创建myform窗体事件只能在写在某个函数里面啊
      

  4.   

    看看你的form1和form2各自的formstyle吧。
    你不能把form1設成總是在任何窗體前面喲。
    在默認情況下(在不修改任何屬性),在form1上show出form2,form2一定是在form1前面的呀。
    並且你用的是showmadal.
      

  5.   

    高手关键是我的myform不能够showmodal啊
      

  6.   

    procedure TForm1.btn1Click(Sender: TObject);
    var myform:TForm2;
    begin
      myform:=TForm2.create(nil);
      //myform.Visible:=true;//去掉这一句,这句多余的,而且会报错
      MyForm.showmodal;
    end;Error:can`t make a visible windows modal
      

  7.   

    这样就可以了
    var
      MyForm: TForm2;
    begin
      MyForm := TForm2.Create(nil);
      MyForm.ShowModal();
    end;
      

  8.   

    提示'cannot make a visible  window modal'错误信息啊
      

  9.   

    高手还是不行啊还是提示'cannot make a visible  window modal'错误信息啊
      

  10.   

    楼上的这位高手还是不行啊提示'cannot make a visible  window modal'错误信息啊
      

  11.   

    showmodal肯定是可以的
    但是不能覆蓋form1
    如果想在form1中包容form2
    應在你想要在form1中出現form2的位置放一個容器panel
    然後在過程中加多一句話
    procedure TForm1.btn1Click(Sender: TObject);
    var myform:TForm2;
    begin
      myform:=TForm2.create(nil);
      myform.parent:=form1.panel1;
      myform.align:=alclient;
      myform.borderstyle:=bsnone;
      MyForm.show;
    end;
      

  12.   

    procedure TForm1.btn1Click(Sender: TObject);
    var myform:TForm2;
    begin
      myform:=TForm2.create(nil);
      //myform.Visible:=true;//去掉这一句,这句多余的,而且会报错
      MyForm.showmodal;
    end;Error:can`t make a visible windows modal同时procedure TForm2.Timer1Timer(Sender: TObject);
    begin
        timer1.Interval:=4000;
        self.Close;
    end;
    /////////////////////////////////
    如果还有上面的错误,就要贴其它地方的代码了...
      

  13.   

    showmodal肯定是可以的
    但是不能覆蓋form1
    如果想在form1中包容form2
    應在你想要在form1中出現form2的位置放一個容器panel
    然後在過程中加多一句話
    procedure TForm1.btn1Click(Sender: TObject);
    var myform:TForm2;
    begin
      myform:=TForm2.create(nil);
      myform.parent:=form1.panel1;
      myform.align:=alclient;
      myform.borderstyle:=bsnone;
      MyForm.show;
    end;
      

  14.   

    不行啊还是提示'cannot make a visible  window modal'错误信息啊
      

  15.   

    就是不能showmodal啊我想在form1中调用form2啊并且form2弹出来后要遮住form1啊并且form2在显示几秒钟后自动消失啊
      

  16.   

    在myform里的代码有错
    按F7跟进去看
      

  17.   

    procedure TForm1.writestatus(rst:rstatusname; userid: string; jobno: string);
    var
      sqlstr: string;
      stocknameid: string;
      MyForm : TForm2;
    begin      if not checkstop(jobno) and  not checkdelete(jobno) then
             begin
             jobno_updatecpostion(jobno,rst.statusid);   //geng xin dang qian ji lu
             if rst.outstockflag then
               begin
               jobno_updatefinish(jobno);
               end;
             if rst.stockflag then
               begin
                update_stockflag(jobno);    //geng xin chu ku
               end;
             if (packflag='1') and (packid=rst.statusid) then                //ボΤゴ审ゴ
                     begin
                     print_barcode(jobno);
                     lst1.Items.Text:=displaystring+#13#10+lst1.Items.Text;
                         if checkfirst(jobno,rst.statusid) then
                               begin
                               writestandard(rst.statusid,userid,jobno);
                               end;
                     end
                     else
                      writestandard(rst.statusid,userid,jobno);
             end
                 else  begin
                        myform:=TForm2.create(nil);
                        MyForm.showmodal;
                      end;
    end;
    各位高手代码如上啊
      

  18.   

    很多看不懂的,能看懂的部分感觉没什么问题,不知道搂住在其它地方还有没有用到myForm那?
      

  19.   

    以前遇到这种错误是因为有的地方我用了myForm.show有的地方用了myForm.showmodal造成的,不过你这里动态创建的窗口应该不会有这种情况才对呀...
      

  20.   

    是啊我没有别的地方用到myform啊
    show就可以啊但是showmodal就不行啊
      

  21.   

    是不是你的form1也是showmodal啊????
      

  22.   

    一个程序里只能有一个窗口是showmodal的,如果你的From1也是showmodal的,那肯定要报错的!如果没有,那也没办法了,实在想不出来你这个还能哪里出问题了。呵呵