登陆后主窗体和登陆窗体同时显示,如何登陆登陆后只显示主窗体
unit LoginUnt;interfaceuses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;type
  Tloginfrm = class(TForm)
    btnSure: TButton;
    btnCancel: TButton;
    edtUserPass: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    qry_login: TADOQuery;
    edtUserName: TEdit;
    procedure btnCancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnSureClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    IsLogin: Boolean;
    { Public declarations }
  end;var
  loginfrm: Tloginfrm;implementation
 uses  MainUnt,DMUnt;
{$R *.dfm}procedure Tloginfrm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    perform(cm_dialogkey, vk_tab, 0); // 焦点按照Taborder的顺序下移
    exit;
  end;
end;
procedure Tloginfrm.btnCancelClick(Sender: TObject);
begin
Application.Terminate;
end;procedure Tloginfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if islogin=False then
 Application.Terminate;
end;procedure Tloginfrm.btnSureClick(Sender: TObject);
var
   lsSQL:string;
   Mainfrm: TMainfrm;
begin
   lsSQL := 'select * from Account where Username=''' + trim(edtUserName.text) + ''' and userpass='''+ trim(edtUserPass.text)+'''';
 // try
    qry_login.Close;
    qry_login.SQL.Clear;
    qry_login.SQL.Add(lsSQL);
    qry_login.Open;
 //  except
 //    ShowMessage( '查询数据出错!');
 //  end;  if qry_login.RecordCount>0 then
  begin
    IsLogin:=true;
    try
      Mainfrm := TMainfrm.Create(nil);
      Mainfrm.Opname :=Trim(edtUserName.Text);
      Mainfrm.OpSelect := Trim(qry_login.fieldbyname('select').AsString);
      Mainfrm.OpAdd := Trim(qry_login.fieldbyname('add').AsString);
      Mainfrm.OpUpdate:=  Trim(qry_login.fieldbyname('update').AsString);
      Mainfrm.ShowModal;
      Loginfrm.Visible:=False;
      finally      Application.Terminate;
     end;
  end;
end;end.
unit MainUnt;interfaceuses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Data.DB, Data.Win.ADODB,
  Vcl.ExtCtrls, DBGridEhGrouping, ToolCtrlsEh, DBGridEhToolCtrls, GridsEh,
  DBAxisGridsEh, DBGridEh,LoginUnt,Vcl.StdCtrls;type
  TMainfrm = class(TForm)
    spgcntrl1: TPageControl;
    dlg_input: TOpenDialog;
    tmr_input: TTimer;
    qry_admin: TADOQuery;
    qry_Cust: TADOQuery;
    qry_data: TADOQuery;
    cmd_admin: TADOCommand;
    cmd_cust: TADOCommand;
    cmd_input: TADOCommand;
    cmd_Jour: TADOCommand;
    stbsht_qry: TTabSheet;
    stbsht_input: TTabSheet;
    stbsht_admin: TTabSheet;
    dbgrdh_Data: TDBGridEh;
    pnl4: TPanel;
    btn_qry: TButton;
    btn_CustEdt: TButton;
    btn_JourinEdt: TButton;
    edtBal: TEdit;
    edtBeizhu: TEdit;
    edt_BeginDate: TDateTimePicker;
    edt_EndDate: TDateTimePicker;
    lbl3: TLabel;
    Lbl4: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    cbbCustomer: TComboBox;
    btn_JouroutEdt: TButton;
    pnl5: TPanel;
    lbl_OccurDate: TLabel;
    lbl_Cust: TLabel;
    lbl_InputBal: TLabel;
    lbl_OutputBal: TLabel;
    lbl_BeiZhu: TLabel;
    Label8: TLabel;
    lbl_InputDate: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    rbinput: TCheckBox;
    rboutput: TCheckBox;
    Panel1: TPanel;
    Panel2: TPanel;
    mmo_Content: TMemo;
    mmo_input: TMemo;
    Label12: TLabel;
    Label13: TLabel;
    btn_outputdm: TButton;
    btnInput: TButton;
    sprgrsbr_input: TProgressBar;
    DBGridEh1: TDBGridEh;
    Panel3: TPanel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    edt_UserName: TEdit;
    edt_UserPass: TEdit;
    cbb_add: TComboBox;
    cbb_select: TComboBox;
    cbb_update: TComboBox;
    btnadd: TButton;
    btnEdt: TButton;
    btnDel: TButton;
    qry_unit: TADOQuery;
    procedure FormShow(Sender: TObject);
    procedure cbbCustomerChange(Sender: TObject);
  private
    { Private declarations }
    FOpname, FOpSelect,FOpAdd,FOpUpdate, FOpID: string;
    procedure setOpname(const value: string);
    procedure setOpAdd(const value: string);
    procedure setOpSelect(const value: string);
    procedure setOpUpdate(const value: string);
    procedure RefreshRecordInf;
    procedure RefreshAdmin;
    procedure RefreshCustOmer;  public
    { Public declarations }    property Opname: string read FOpname write setOpname;
    property OpSelect: string read FOpSelect write setOpSelect;
    property OpAdd: string read FOpAdd write setOpAdd;
    property OpUpdate: string read FOpUpdate write setOpUpdate;  end;var
  Mainfrm: TMainfrm;implementation
 uses DMUnt,JourEdt,EhlibADO;
{$R *.dfm}function GetPYIndexChar(hzchar: string): char;
begin
  case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
    $B0A1..$B0C4: result := 'A';
    $B0C5..$B2C0: result := 'B';
    $B2C1..$B4ED: result := 'C';
    $B4EE..$B6E9: result := 'D';
    $B6EA..$B7A1: result := 'E';
    $B7A2..$B8C0: result := 'F';
    $B8C1..$B9FD: result := 'G';
    $B9FE..$BBF6: result := 'H';
    $BBF7..$BFA5: result := 'J';
    $BFA6..$C0AB: result := 'K';
    $C0AC..$C2E7: result := 'L';
    $C2E8..$C4C2: result := 'M';
    $C4C3..$C5B5: result := 'N';
    $C5B6..$C5BD: result := 'O';
    $C5BE..$C6D9: result := 'P';
    $C6DA..$C8BA: result := 'Q';
    $C8BB..$C8F5: result := 'R';
    $C8F6..$CBF9: result := 'S';
    $CBFA..$CDD9: result := 'T';
    $CDDA..$CEF3: result := 'W';
    $CEF4..$D188: result := 'X';
    $D1B9..$D4D0: result := 'Y';
    $D4D1..$D7F9: result := 'Z';
  else
    result := char(0);
  end;
end;function SearchByPYIndexStr
  (SourceStrs: TStrings;
  PYIndexStr: string): string;
label NotFound;
var
  i, j: integer;
  hzchar: string;
begin
  for i := 0 to SourceStrs.Count - 1 do
  begin
    for j := 1 to Length(PYIndexStr) do
    begin
      hzchar := SourceStrs[i][2 * j - 1]
        + SourceStrs[i][2 * j];
      if (PYIndexStr[j] <> '?') and
        (UpperCase(PYIndexStr[j]) <>
        GetPYIndexChar(hzchar)) then goto NotFound;
    end;
    if result = '' then
    begin
    result := SourceStrs[i];
     end    else
   begin
     if Result='' then
    result := result + Char(13) + SourceStrs[i];
//      result := SourceStrs[i];
   end;
    NotFound:
  end;
end;
procedure TMainfrm.FormShow(Sender: TObject);
var
LsSQL:string;
begin
    {Application.CreateForm(TLoginfrm,Loginfrm);
    LoginFrm:=TLoginFrm.Create(Application);
    Loginfrm.ShowModal;
    Loginfrm.Free;  }
  self.Caption:='预付款管理系统--------------'+self.Opname;  if Self.OpSelect='1' then
  btn_qry.Enabled:=True
  else
  btn_qry.Enabled:=False;
  if Self.OpAdd='1' then
  begin
   btn_JourinEdt.Enabled:=true;
   btn_JouroutEdt.Enabled:=true;
   btn_CustEdt.Enabled:=True;
  end
  else
  begin
   btn_JourinEdt.Enabled:=False;
   btn_JouroutEdt.Enabled:=False;
   btn_CustEdt.Enabled:=False;
  end;
  if Self.OpUpdate='1' then
  begin
    stbsht_admin.TabVisible:=True;
   btnadd.Enabled:=true;
   btnEdt.Enabled:=True;
   btnDel.Enabled:=true;
  end
  else
  begin
    stbsht_admin.TabVisible:=False;
   btnadd.Enabled:=False;
   btnEdt.Enabled:=False;
   btnDel.Enabled:=False;
  end;
  RefreshAdmin;
  LsSQL:='select * from Jour where OccurDate>=#'+datetostr(now-7)+'#';
  try
      qry_data.Close;
      qry_data.SQL.Clear;
      qry_data.SQL.Add(LsSQL);
      qry_data.Open;
    except
      ShowMessage('查询流水数据出错!');
    end;
   RefreshCustOmer;
end;
procedure TMainfrm.setOpname(const value: string);
begin
  FOpname := value;
end; procedure TMainfrm.cbbCustomerChange(Sender: TObject);
var
 reStr:String;
begin
  if Trim(cbbCustomer.Text)='' then exit;
   reStr:=SearchByPYIndexStr(cbbCustomer.Items, cbbCustomer.Text);
   if (Widestring(reStr)<>'') and (cbbCustomer.Items.Count>0) then
     cbbCustomer.Text:=reStr;
end;procedure TMainfrm.setOpAdd(const value: string);
begin
FOpAdd:=value;
end;procedure TMainfrm.setOpSelect(const value: string);
begin
  FOpSelect:=value;
end;procedure TMainfrm.setOpUpdate(const value: string);
begin
  FOpUpdate:=value;
end;procedure TMainfrm.RefreshRecordInf;
begin
  if qry_data.RecordCount > 0 then
  begin
    lbl_OccurDate.Caption := '发生日期 ' + trim(qry_data.FieldByName('OccurDate').AsString);
    lbl_Cust.Caption := '客   户 ' + trim(qry_data.FieldByName('CustName').AsString);
    lbl_InputBal.Caption := '导入金额 ' + trim(qry_data.FieldByName('InOccurBal').AsString);
    lbl_OutputBal.Caption := '导出金额 ' + trim(qry_data.FieldByName('OutOccurBal').AsString);
    lbl_BeiZhu.Caption := '备注 ' + trim(qry_data.FieldByName('BeiZhu').AsString);
    lbl_InputDate.Caption := '导入时间 ' + trim(qry_data.FieldByName('InputDate').AsString);
  end
  else
  begin
    lbl_OccurDate.Caption := '发生日期 ';
    lbl_Cust.Caption := '客   户 ';
    lbl_InputBal.Caption := '导入金额 ';
    lbl_OutputBal.Caption := '导出金额 ';
    lbl_BeiZhu.Caption := '备注 ';
    lbl_InputDate.Caption := '导入时间 ';
  end;
end;
procedure TMainfrm.RefreshAdmin;
var
  LsSQL: string;
begin
  LsSQL := 'select * from Account';
  try
    qry_admin.Close;
    qry_admin.SQL.Clear;
    qry_admin.SQL.Add(LsSQL);
    qry_admin.Open;
  except
    ShowMessage('查询数据出错!');
  end;
end;procedure TMainfrm.RefreshCustOmer;
var
LsSQL:STRING;
begin
    LsSQL:='select * from Customer ';
  try
      qry_unit.Close;
      qry_unit.SQL.Clear;
      qry_unit.SQL.Add(LsSQL);
      qry_unit.Open;
    except
      ShowMessage('查询客户数据出错!');
    end;
    if qry_unit.RecordCount>0  then
    begin
    qry_unit.First;
    cbbCustOmer.Items.Clear;
     while not qry_unit.Eof do
        begin
          cbbCustomer.Items.Add(qry_unit.FieldByName('CustName').AsString);
          qry_unit.Next;
        end;
    end;
end;end.Delphi

解决方案 »

  1.   

    program Project2;uses
      Vcl.Forms,
      LoginUnt in 'LoginUnt.pas' {loginfrm},
      DMUnt in 'DMUnt.pas' {DM: TDataModule},
      MainUnt in 'MainUnt.pas' {Mainfrm},
      JourEdt in 'JourEdt.pas' {JourEdtfrm},
      PYIndexUnt in 'PYIndexUnt.pas';{$R *.res}
    begin
      Application.Initialize;
    //  Application.MainFormOnTaskbar := True;
     LoginFrm:=TLoginFrm.Create(Application);  Application.CreateForm(TMainfrm, Mainfrm);
    //  Application.CreateForm(Tloginfrm, loginfrm);
      Application.CreateForm(TDM, DM);
      Application.CreateForm(TJourEdtfrm, JourEdtfrm);
      with TLoginFrm.Create(nil) do
      begin
        ShowModal;
      end;
      Application.Run;
    end.
      

  2.   

    TLoginFrm在工程文件中最后创建:
    begin
      Application.Initialize; 
      Application.CreateForm(TMainfrm, Mainfrm);
      Application.CreateForm(TDM, DM);
      Application.CreateForm(TJourEdtfrm, JourEdtfrm);
      Application.CreateForm(Tloginfrm, loginfrm);
      Application.Run;
    end.
    然后在主窗体OnShow事件中把登陆窗体ShowModal出来!