但是现在登陆窗体关闭后,不显示主窗体,在数据模块窗体中定义了变量   iflogin 登陆窗体代码:
unit UnitLogin;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, ExtCtrls;type
  TLogin = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    EditUserID: TEdit;
    EditPwd: TEdit;
    BtnOK: TButton;
    BntAbort: TButton;
    ADOQr: TADOQuery;
    Panelts: TPanel;
    ComboBox1: TComboBox;
    procedure BntAbortClick(Sender: TObject);
    procedure EditUserIDKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditUserIDExit(Sender: TObject);
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure EditPwdKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BtnOKClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Login: TLogin;implementation
 uses DataModule,UnitPeisSystem;
{$R *.dfm}procedure TLogin.BntAbortClick(Sender: TObject);
begin
    close;
end;procedure TLogin.BtnOKClick(Sender: TObject);
var pwd : String ;
begin
     userid := EditUserID.Text;
     stationname := ComboBox1.Text;
     pwd := EditPwd.Text;
     ADOQr.Close;
     ADOQr.SQL.Clear;
     ADOQr.SQL.Text := ' select * from Tb_User where UserID='''+userid+'''';
     adoqr.Open;
     if adoqr.RecordCount=0 then
     begin
         EditUserID.Clear;
         EditUserID.SetFocus;
         Panelts.Caption := '无效用户!' ;
     end else
     begin
         ADOQr.Close;
         ADOQr.SQL.Clear;
         ADOQr.SQL.Text := ' select * from Tb_User '+
                           ' where UserID='''+userid+''' and stationname='''+stationname+''' and UserPwd='''+pwd+'''';
         adoqr.Open;
         if adoqr.RecordCount=0 then
         begin
              ShowMessage('密码错误,请重新输入!');
              EditPwd.Clear;
              EditPwd.SetFocus;
              Panelts.Caption := '密码错误!' ;
              ifLogin := false ;         end else
         begin              user := ADOQr.FieldByName('Username').Value;
              module := ADOQr.FieldByName('ModuleName').Value;
              ifLogin := true ;
              Login.close;
              //login.Hide;
              //ClearMainForm;
              //Pointer(@application.MainForm^) := nil ;
              //Application.CreateForm(TFormPeisSystem,FormPeisSystem);
              //FormPeisSystem.Show;
              //Login.Destroy;
         end;
     end;
end;procedure TLogin.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=13 then
     begin
         EditPwd.SetFocus;
     end;
end;procedure TLogin.EditPwdKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=13 then
    begin
        BtnOK.SetFocus;
    end;
end;procedure TLogin.EditUserIDExit(Sender: TObject);
begin
     if EditUserID.Text <> '' then
     begin
          ADOQr.Close;
          ADOQr.SQL.Clear;
          ADOQr.sql.Text := ' select * from Tb_User where UserID='''+EditUserID.Text+'''';
          ADOQr.Open;
          if ADOQr.RecordCount =0 then
          begin
               EditUserID.Clear;
               EditUserID.SetFocus;
               Panelts.Caption := '无效用户!' ;
          end else
          begin
               ComboBox1.Items.Clear; 
               ADOQr.First;
               ComboBox1.Text := ADOQr.FieldByName('stationname').Value ;
               while not ADOQr.eof do
               begin
                    ComboBox1.Items.Add(ADOQr.FieldByName('stationname').Value);
                    ADOQr.Next;
               end;
          end;
          
     end;
end;procedure TLogin.EditUserIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if key=13 then
    begin
        ComboBox1.SetFocus;
    end;
end;procedure TLogin.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    action := caFree ;
end;end.
工程文件代码:
program Project;uses
  Forms,
  UnitLogin in 'UnitLogin.pas' {Login},
  DataModule in 'DataModule.pas' {DataModuleA: TDataModule},
  UnitPeisSystem in 'Peis\UnitPeisSystem.pas' {FormPeisSystem};{$R *.res}begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TDataModuleA, DataModuleA);
  Application.CreateForm(TLogin, Login);
  if ifLogin then
  begin
       Application.CreateForm(TFormPeisSystem, FormPeisSystem);
       
  end;
  Application.Run;
end.

解决方案 »

  1.   

    用MDI创建窗口1.先在DELPHI-FILE-NEW-OTHER-PROJECT中选MDI APPLICATION,然后保存项目到自己指定的文件夹.2.新建一个FORM2,在FORM2页面中的FormStyleg一定要设成fsNormal,在DELPHI中的菜单选PROJECT-OPTION中进入FORM选项卡,把FORM2从AUTO CREATE FORMS 移到 Available Forms3.在FORM2中的验证登陆成功时加入
        Form2.Hide; //登陆验证页面
        MainForm.Show; //父窗体4.在FORM2中的FormCloseQuery事件中加入
        CanClose:=False;5.用记事本打开刚才保存项目的文件夹,打开父窗口的MDIAPP.dpr文件,一般DELPHI7自动创建的都是这个名称,修改下面其中某些内容
      一定要在Uses中增加Controls,然后在BEGIN和END之间修改下面内容
      Application.CreateForm(TForm2, Form2);这句去掉,就是刚才建立的FORM2 再增加下面语句  Form2:=TForm2.Create(Application);
      if Form2.ShowModal<>mrOK then
      Application.Terminate;
      

  2.   


    Procedure TForm2.Button1Click(Sender: TObject);
    begin
      Form1.hide;
    //Form2:=Tform2.Create(self);
    //form2.showmodal;
      Form2.Show;
      end;