但是现在登陆窗体关闭后,不显示主窗体,在数据模块窗体中定义了变量 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.
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.
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;
Procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.hide;
//Form2:=Tform2.Create(self);
//form2.showmodal;
Form2.Show;
end;