Procedure FormCreateAndShow(frm:TForm);
begin
   if not AsSigned(frm) Then
  begin
   frm:=TForm.Create(application);
  end
 else
  frm.Show;
 end;调用
 FormCreateAndShow(Form1);
但是。调用不了。也不报错。不知道什么情况

解决方案 »

  1.   

    你确定你的Form1 := nil 吗
    FormCreateAndShow(Form1);
      

  2.   

    改为frm:=TForm.Create(nil);试下
    Procedure FormCreateAndShow(frm:TForm);
    begin
       if not AsSigned(frm) Then
      begin
       frm:=TForm.Create(nil);
      end
     else
      frm.Show;
     end;
      

  3.   

    多次调用注意要Free;
    最好是每次调用的时候先Free:
    Procedure FormCreateAndShow(frm:TForm);
    begin
      if AsSigned(frm) Then
        FreeAndNil(frm);
      frm:=TForm.Create(nil);
      frm.Show;
    end;
      

  4.   

    但是这样调用效果就不是我想要的效果了。调用的窗体他们会在主窗体外面。而不是在主窗体里面
    调用的窗体应该fsMDIChild的模式在主窗体里面   if not AsSigned(UserForm) Then
      begin
       UserForm:=TUserForm.Create(application);
      end
     else
      UserForm.Show;这样调用又可以实现。
    为什么把他写成方法就 不行呢?
      

  5.   

    但是这样调用效果就不是我想要的效果了。调用的窗体他们会在主窗体外面。而不是在主窗体里面
    调用的窗体应该fsMDIChild的模式在主窗体里面   if not AsSigned(UserForm) Then
      begin
       UserForm:=TUserForm.Create(application);
      end
     else
      UserForm.Show;这样调用又可以实现。
    为什么把他写成方法就 不行呢?你试下我的这个例子:
    http://download.csdn.net/detail/feiba7288/5094359
      

  6.   

    但是这样调用效果就不是我想要的效果了。调用的窗体他们会在主窗体外面。而不是在主窗体里面
    调用的窗体应该fsMDIChild的模式在主窗体里面   if not AsSigned(UserForm) Then
      begin
       UserForm:=TUserForm.Create(application);
      end
     else
      UserForm.Show;这样调用又可以实现。
    为什么把他写成方法就 不行呢?你试下我的这个例子:
    http://download.csdn.net/detail/feiba7288/5094359
    嗯。下载后来看了下。看不懂。没注解。对于我们这些菜鸟来说,有点难度
      

  7.   

    但是这样调用效果就不是我想要的效果了。调用的窗体他们会在主窗体外面。而不是在主窗体里面
    调用的窗体应该fsMDIChild的模式在主窗体里面   if not AsSigned(UserForm) Then
      begin
       UserForm:=TUserForm.Create(application);
      end
     else
      UserForm.Show;这样调用又可以实现。
    为什么把他写成方法就 不行呢?你试下我的这个例子:
    http://download.csdn.net/detail/feiba7288/5094359
    已经在盒子上面找到了合适的代码了。 
      

  8.   

    if not AsSigned(UserForm) Then
       UserForm:=TUserForm.Create(application);
    if not UserForm then
        UserForm.Show;