首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

念实现登陆后关闭登陆窗体显示另外一个窗体

2013-10-30 
想实现登陆后关闭登陆窗体显示另外一个窗体但是现在登陆窗体关闭后,不显示主窗体,在数据模块窗体中定义了

想实现登陆后关闭登陆窗体显示另外一个窗体
但是现在登陆窗体关闭后,不显示主窗体,在数据模块窗体中定义了变量   iflogin 

登陆窗体代码:
unit UnitLogin;

interface

uses
  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.
[解决办法]
用MDI创建窗口

1.先在DELPHI-FILE-NEW-OTHER-PROJECT中选MDI APPLICATION,然后保存项目到自己指定的文件夹.

2.新建一个FORM2,在FORM2页面中的FormStyleg一定要设成fsNormal,在DELPHI中的菜单选PROJECT-OPTION中进入FORM选项卡,把FORM2从AUTO CREATE FORMS 移到 Available Forms

3.在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;


[解决办法]


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

热点排行