用D7做个工程编译未能通过~~!
具体操作如下:
File-》New-》Application 
另创建FORM2,FORM3FORM2的FormStyle->fsMDIForm  Form3的FormStyle->fsMDIChildForm1上有个按钮,按钮事件里
procedure TForm1.Button1Click(Sender: TObject);
begin
self.Close;
form2.show
end;end.form2的creater事件里代码:
procedure TForm2.FormCreate(Sender: TObject);
begin
form3.show
end;end.其实我就是想用户经过登陆窗体后验证后,显示MDI窗体的时候自动的把其中一个的子窗体显示出来但是照上面的思路出错如下:
Project Project1.exe raised exception class eaccessViolation with message 'access violation at add ress 004458A6 in module 'project1.exe.read of address 000002f4'.process stopped use step or run to contiue
--------------------------------------------------
思路是不是有问题?

解决方案 »

  1.   

    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.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.Run;
    end.
    ----------------------
    中的 :  Application.CreateForm(TForm3, Form3);的时候
      

  2.   

    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);
      Form1.ShowModal;
      Application.CreateForm(TForm2, Form2);
      Application.Run;
    end.而同时
    Form1上有个按钮,按钮事件里
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Close;
    end;end.form2的creater事件里代码:
    procedure TForm2.FormCreate(Sender: TObject);
    begin
      Application.CreateForm(TForm3, Form3);
      form3.show;
    end;
      

  3.   

    在创建窗体时用form:=tform.create(application);
      

  4.   

    program Project1;uses
      Forms,Controls,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      if form1.ShowModal = mrok then
      begin
        Form1.Free;
        Application.CreateForm(TForm2, Form2);
        Application.CreateForm(TForm3, Form3);
        Form2.Visible := True;
        Application.Run;
      end
      else
      Application.Terminate;end.
    ----------------
    其他单元里面什么都不用写
      

  5.   

    form1是主窗体吧?主窗体关了其它窗体还出得来吗?
    假设form1是登录窗口;改进1:修改工程文件,form1:=Tform1.Create(Application);//此时创建的非主窗体
                        if form1.ShowModal=mrok then Application.CreateForm(TForm2,Form2);//登录正确才创建主窗体。改进2:Form1设为MDIForm,Form2设为LoginForm,Form3设为MDIChild
           Form1OnShow()
           begin
             form2:=TForm2.Create(Self);
             if not form2.ShowModal=mrok then Close;
           end;