form1是mdi子窗体,有button1和edit1,手动创建;form2是普通窗体,有button2和Edit2,程序运行进自动创建,但不显示;
在form1.button1Click事件中有以下语句:
form2.eidt2.text:=edit1.text;
form2.show;在form2.button2Click事件中有以下语句:
form1.edit1.text:=edit2.text       //出错,怎样解决?Form1并没有关闭!
                                   //如果将Form1改为自动创建,就没有问题.

解决方案 »

  1.   

    错误提示是什么,Form1的创建代码是怎么写的?贴出来看看
      

  2.   

    你有没有创建form1?
    在form2.button2Click事件中有以下语句:
    form1 := Tform1.Create(nil);
    form1.edit1.text:=edit2.text
      

  3.   

    错误信息:
    Access violation at address 0055c5f50 in module jhBuyer.exe'. Read of address 0000061c-----------------
    以下这个段函数代码创建窗口
    formclass是窗体类名,openmode是0或1,0代show,1代表showmodal
      
    with formclass.Create(application) do
      begin
         try
           if openmode=0 then
            show
            else
           showmodal;
         except
           free;
         end;
      end;
      

  4.   

    Form1 已经引用了form2,form2也引用了from1
      

  5.   

    form1是mdi子窗体,有button1和edit1,手动创建
    -----
    上面一句话不清楚,到底是什么手动创建
    最好贴代码
      

  6.   

    你的写法有问题,with formclass.Create(application) do
    这样创建了一个隐藏的实例,而Form1并没有创建,这样写就可以了
    Form1 := formclass.Create(application);
    with Form1 do
      begin
         try
           if openmode=0 then
            show
            else
           showmodal;
         except
           free;
         end;
      end;
      

  7.   

    会有好多form1的哦,,,,,具体指定一下吧ActiveMDIChild
      

  8.   

    汗,什么时候创建的 Form1 呀?
    >>以下这个段函数代码创建窗口
    >>formclass是窗体类名,openmode是0或1,0代show,1代表showmodal
    >>...
    这些代码写在什么地方的?MainForm中?Form2中?
      

  9.   

    xyc189():会有很多Form1,因为这是一个通用的过程,程序中到处都要调用.这样会有问题吧.
      

  10.   

    lx130(阿生) 在MDI 主窗口上用这个函数打开Form1
      

  11.   

    我的测试用例完全没问题呀,奇怪。
    主MainForm中,有菜单项Test,响应函数:
    procedure TMainForm.Test1Click(Sender: TObject);
    begin
    Form2 := TForm2.Create(application);
    with Form2 do
      begin
         try
            show; { 为方便,我只用了SHOW方法 }
         except
           free;
         end;
      end;
    end;主窗体代码中引用了 Unit1 单元(位于implementation后)在Form1中,引用unit2;在Form2中,引用unit1。(均位于implementation后)
    Form1中:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      form2.edit2.text:=edit1.text;
      form2.show;
    end;Form2中:
    procedure TForm2.Button1Click(Sender: TObject);
    begin
      form1.edit1.text:=edit2.text;
    end;工程源代码中:
      Application.Initialize;
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(TForm2, Form2);
      Application.Run;MainForm为fsMDIForm, Form1: fsMDIChild, Form2: fsNormal
      

  12.   

    不好意思,上面第五行中,Form2就为Form1,打错了
      

  13.   

    http://www.lzjinsui.com/lilacsand/temp/test.rar该示例压缩文件将在明天删除
      

  14.   

    lx130(阿生) :我用的是delphi7,不能运行你的程序? ----------------------------------Form2 := TForm2.Create(application);这样建立后,不管哪个窗体都叫form2了,要是用form3也用这种方式打开,还能不能form3.show?我先试一下!
      

  15.   

    试试下面的代码
      function FormCreate(aFormClass:TFormClass;OpenMode :Integer):TForm;
      begin
        Result := aformclass.Create(application);
        with Result do
        begin
             try
               if openmode=0 then
                 show
               else
                 showmodal;
             except
               free;
             end;
         end;
      end;
    创建Form1时
      Form1 := FormCreate(TForm1,0);