procedure TloginFrm.loginClick(Sender: TObject);
 begin
   IndexFrm:=TIndexFrm.create(application)  ;
   loginFrm.Close;       //怎么把IndexFrm也给关了呢?
 end;请问怎么修改能实现建立IndexFrm之后loginFrm关闭呢?

解决方案 »

  1.   

    procedure TloginFrm.loginClick(Sender: TObject);
     begin
       IndexFrm:=TIndexFrm.create(application)  ;
       IndexFrm.Show;//你这个还没有SHOW
       loginFrm.Close;       //怎么把IndexFrm也给关了呢?
     end;
      

  2.   

    IndexFrm:=TIndexFrm.create(application)  ;
    已经show了IndexFrm
    加了你这句还是一样啊 ?
      

  3.   

    应该是你的LoginFrm设置成主窗口(mainform)造成的.
    一般来讲,主窗口关闭,其它的窗口都会自动关闭,程序会退出来。
      

  4.   

    to  hawksoft(明月清风) 
    那应该怎么解决呢?
    另问如何设置主窗口!
      

  5.   

    如果是你不想关闭IndexFrm而只想关闭LoginFrm的话,
    如楼上hawksoft(明月清风)所说
    如我想你说的意思是:你想关闭两个窗体,
    procedure TloginFrm.loginClick(Sender: TObject);
     begin
       IndexFrm:=TIndexFrm.create(application)  ;
       loginFrm.Close;
       IndexFrm.close;
           //怎么把IndexFrm也给关了呢?
     end;
    呵呵,主要是你的话有两个意思
      

  6.   

    晕还会有歧义?
    那我重新说下!
    procedure TloginFrm.loginClick(Sender: TObject);
     begin
       IndexFrm:=TIndexFrm.create(application)  ;
       loginFrm.Close;       //怎么同时把IndexFrm和loginFrm都给关了呢?我只想关闭loginFr的。!
     end;请问怎么修改能实现建立IndexFrm之后loginFrm关闭呢?
      

  7.   

    在菜单Project/options里有一个FORMS
      

  8.   

    回复人: xuexi_110(不小心) ( ) 信誉:100  2004-12-17 14:39:00  得分: 0  
     
     
       在菜单Project/options里有一个FORMS  
     
    -----------------------------------------嗯我知道的。。
    我是想先显示loginFrm然后再显示IndexFrm的!
      

  9.   

    我的思路如下:
    通过loginFrm显示出IndexFrm再关闭loginFrm!
      

  10.   

    首先要确定loginFrm不是主窗体(mainform),然后使用 bee2518(迷茫ing) 方法。
      

  11.   

    首先是要创建loginFrm这个Form!
    再关闭loginFrm创建IndexFrm!如果把IndexFrm设为mainform,那IndexFrm首先创建了。
      

  12.   

    你提的问题很典型,一般程序都是先显示登录框,然后进入主窗口。要解决这个问题,最好(我认为)
    的办法是不要让Delphi自动创建你的登录窗体。在你的工程文件里写登录代码,如下:
    program Project1;uses
      Forms,
      windows,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {frmLogin};{$R *.res}begin
      Application.Initialize;
      frmLogin := TfrmLogin.Create(Application);
      if frmLogin.ShowModal = idyes then //登录成功
      begin
         frmLogin.Free;
         frmLogin:=nil;
         Application.CreateForm(TForm1, Form1);
         Application.Run;
      end
      else
      begin
         frmLogin.Free;
         frmLogin:=nil;
      end;
    end.
    Delphi默认第一个以Application.CreateForm(TForm1, Form1);方式创建的form为主Form.
      

  13.   

    是这样啊,你可以先在把IndexFrm设成主窗体,再打开Project/view source里面在Application.Run;前面加一个
    loginfrm.ShowModal;
      

  14.   

    把你的工程源码贴出来!我估计你把LoginFrm当成应用程序的主窗体了,而你的IndexFrm当成了子窗体,所以你把LoginFrm关闭以后,就相当于把应用程序给关闭了,当然所有的窗体都被关闭了!解决的方法hawksoft(明月清风) 的例子就可以实现!
      

  15.   

    if frmLogin.ShowModal = idyes  ?
     idyes 什么东西?
    这句什么意思?
      

  16.   

    可以先在把IndexFrm设成主窗体
    然后在此IndexFrm的show 事件里加如下代码:
      loginfrm:=tloginfrm.Create(nil);
      loginfrm.ShowModal;
      loginfrm.Free;
    这样更好些
      

  17.   

    回复人: windy_224(边Cheng浪子) ( ) 信誉:100  2004-12-17 15:15:00  得分: 0  
     
     
       可以先在把IndexFrm设成主窗体
    然后在此IndexFrm的show 事件里加如下代码:
      loginfrm:=tloginfrm.Create(nil);
      loginfrm.ShowModal;
      loginfrm.Free;
    这样更好些
      
     
    ----------------------------------------
      loginfrm.ShowModal;
      loginfrm.Free;这样似乎没必要?
      

  18.   

    to  hawksoft(明月清风) 我使用你的方法时在
     if frmLogin.ShowModal = idyes then 
    这句不能通过!
    [Error] salal.dpr(15): Undeclared identifier: 'idyes'
      

  19.   

    工程文件如下:
    program salal;uses
      Forms,
      sal in 'sal.pas' {IndexFrm},
      log in 'log.pas' {loginFrm},
      reg in 'reg.pas' {RegisterFrm};{$R *.res}begin
      Application.Initialize;
      loginFrm := TloginFrm.Create(Application);
      if loginFrm.ShowModal = idyes then //出错。
      begin
         loginFrm.Free;
         loginFrm:=nil;
         Application.CreateForm(TIndexFrm, IndexFrm);
         Application.Run;
      end
      else
      begin
         loginFrm.Free;
         loginFrm:=nil;
      end;
    end主窗口已为IndexFrm
      

  20.   

    工程文件如下:
    program salal;uses
      Forms,
      windows,//加引用.
      sal in 'sal.pas' {IndexFrm},
      log in 'log.pas' {loginFrm},
      reg in 'reg.pas' {RegisterFrm};{$R *.res}begin
      Application.Initialize;
      loginFrm := TloginFrm.Create(Application);
      if loginFrm.ShowModal = idyes then //出错。
      begin
         loginFrm.Free;
         loginFrm:=nil;
         Application.CreateForm(TIndexFrm, IndexFrm);
         Application.Run;
      end
      else
      begin
         loginFrm.Free;
         loginFrm:=nil;
      end;
    endIDYES是个常量,Showmodal函数放回值之一。
      

  21.   

    procedure TloginFrm.loginClick(Sender: TObject);
     begin
       IndexFrm:=TIndexFrm.create(application)  ;
       loginFrm.Close;
       IndexFrm.close;
           //怎么把IndexFrm也给关了呢?
     end;
    如果你想关闭IndexFrm的话,在loginfrm中要use indexfrmunit