建3个什么?
这个条件是判断是否建立某些窗体的,但如果在进行选择时还做了其它的输入(就是判断的这个窗体时,只有这一个窗体被建立),因要引用的窗体还没有建立,所以会出错。就是下边的内容:program Project1;uses
  Forms,
  Unit100 in 'Unit100.pas' {Form1},
  Unit101 in 'Unit101.pas' {DataModule1: TDataModule},
  Unit102 in 'Unit102.pas' {Form2},
  Unit103 in 'Unit103.pas' {Form3},
  Unit104 in 'Unit104.pas' {Form4},
  Unit105 in 'Unit105.pas' {Form5},
  Unit106 in 'Unit106.pas' {Form6},
  Unit107 in 'Unit107.pas' {Form7},
  Unit108 in 'Unit108.pas' {Form8},
  Unit109 in 'Unit109.pas' {Form9},
  Unit110 in 'Unit110.pas' {Form10};{$R *.RES}begin   
  Application.CreateForm(TForm1,Form1);{建立后如果不运行,不能和用户交互选择,而  直接进入某一选择的分支,就是说checkbox1.checked的值初始值如果为False,它总是会自动进入下面的程序段建立各个窗体,没有选择的机会。所以在这里运行form1,此时可以选择,但除了选择不能做其它的输入,因为和这些输入有关的窗体还未建立}
  if form1.checkbox1.checked=false then
  begin
  Application.Initialize;
  Application.CreateForm(TForm7, Form7);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm5, Form5);
  Application.Run;
  end
else
.................
end.
不知这样说是否明白,

解决方案 »

  1.   

      Application.Initialize;
      Form1 := TForm1.Create( Application );
      Form1.ShowModal; // 也许你想判断其返回值
      if form1.checkbox1.checked=false then
      begin
        Application.CreateForm(TForm7, Form7);
        Application.CreateForm(TDataModule1, DataModule1);
        Application.CreateForm(TForm4, Form4);
        Application.CreateForm(TForm5, Form5);
        Application.Run;
      end
    else
    .................
    end.
      

  2.   

    是要判断,只是因为在form1中如果还输入密码,就要使用到还没有建立的Form,但这是非法的,,对吗?但如果不在这里判断的话,就得先建立一些需要用到的form,
    其实不按这个要求做也能实现,只是因为书中有这个例子,就是在项目文件中做判断的,而且他连form1都没有建立就判断了,那样就直接根据checked的默认值进入了,我觉得也不对。因为他判断的这个条件可是需要人去选择的啊
    糊涂
      

  3.   

     (1)项目文件
        Application.Initialize;
        select case Login() do
        1:Application.CreateForm(TForm1, Form1);
        2:Application.CreateForm(TForm2, Form2);
        ...
        end;
        Application.Run;
    (2)登陆文件
       function Login():integer;
       begin
          Application.CreateForm(TFrm_Login, Frm_Login);
          if Frm_Login.showModal=mrOK then begin
             //判断条件,返回函数值
             result:=...;
          end;
          frm_login.free;
       end;