Form1内有Label1,Button1
Form2内有Label1,Button1
Form3内有Label1,Button1--------------------------------------------------
program Project1;uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
-----------------------------------------------
//TForm1
procedure TForm1.Button1Click(Sender: TObject);
var
  form2:tform2;
begin
  form2:=tform2.Create(application);
  form2.ShowModal;
  form2.Free;end;
-----------------------------------------------
//TForm2
implementationuses Unit3;
var
  form3:tform3;
{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  form3.free;
end;procedure TForm2.FormCreate(Sender: TObject);
begin
  form3:=tform3.Create(application);
end;procedure TForm2.Button1Click(Sender: TObject);
begin
form3.ShowModal;
end;end.
--------------------------------------------------------
//TForm3
implementationuses Unit2;var
  form2:tform2;{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
begin  label1.Caption:=form2.Caption;
end;end.我现在一执行就内存出错,为什么我的Form3不能访问Form2的内容??
Form2不是已经创建并申请了内存了吗?
问题出在哪里了,DX们帮帮我

解决方案 »

  1.   

    form2:=tform2.Create(Self);
    试试
      

  2.   

    Tform3改为
    procedure TForm3.Button1Click(Sender: TObject);
    begin  label1.Caption:=form2.label1.Caption;
    end;end.还是出错
      

  3.   

    //TForm1
    procedure TForm1.Button1Click(Sender: TObject);
    var
      form2:tform2;
    begin
      form2:=tform2.Create(application);
      form2.ShowModal;
      form2.Free;\\这里把窗体释放了啊???这个程序看的人复杂……
      

  4.   

    我Form2又没关闭,怎么Free.
      form2:=tform2.Create(application);
      form2.ShowModal;//我关闭了Form2才执行下一句吧
      form2.Free;
      

  5.   

    //TForm1
    procedure TForm1.Button1Click(Sender: TObject);
    var
      form2:tform2;
    begin
      form2:=tform2.Create(application);
      form2.ShowModal;
      form2.Free;将上面的改成://TForm1
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      form2.ShowModal;
    end;应该就可以的。
      

  6.   

    呵呵,写复杂了。不用那么多的,只要showmodal就可以了。cafree放在onclose事件中就可以释放内存了。
      

  7.   

    Tform2没有Create可以Showmodal?不可能吧.
      

  8.   

    procedure TForm3.Button1Click(Sender: TObject);
    begin  label1.Caption:=form2.Caption;
      这里有问题;因为这个时候FORM2还没创建呢,所以不能用FORM2的CAPTION;
    end;end.
      

  9.   

    program Project1;
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.我是在按Form1.Button1的时候才创建的。
      

  10.   

    procedure TForm2.FormCreate(Sender: TObject);
    begin
      form3:=tform3.Create(application);
    看看这里,你的FORM2创建以前就创建了FORM3;FORM3不关闭掉;FORM2是不会创建的;
    把这里的代码写到FROM2。ONSHOW里吧;就没问题了;
    end;
      

  11.   

    procedure TForm2.FormCreate(Sender: TObject);
    begin
      form3:=tform3.Create(application);
    看看这里,你的FORM2创建以前就创建了FORM3;FORM3不关闭掉;FORM2是不会创建的;
    把这里的代码写到FROM2。ONSHOW里吧;就没问题了;
    end;
    ----------------------------------------------------------
    还是有问题
      

  12.   

    我鼠标移到label1.Caption:=form2.Label1.Caption;form2上面显示form2=nil
    label1上面显示form2.label1= Inaccessible Value什么问题?
      

  13.   

    把你的代码发我这里我看看……
    [email protected]
      

  14.   

    Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);晕倒,我启动工程,一次性创建200多个Form,不得等上半分钟啊