unit logon;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, MovePanel,ADODB, DB, ComCtrls,
  ToolWin,IniFiles, cxContainer, cxEdit,  cxTextEdit, cxGraphics, cxControls,
  cxLookAndFeels,  cxLabel, cxLookAndFeelPainters;

type
  TFormLogon = class(TForm)
    Timer1: TTimer;
    MovePanel1: TMovePanel;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    ToolBar1: TToolBar;
    BtnOk: TToolButton;
    BtnQuit: TToolButton;
    ToolButton12: TToolButton;
    ToolBar2: TToolBar;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton19: TToolButton;
    ToolButton20: TToolButton;
    ToolButton21: TToolButton;
    ToolButton25: TToolButton;
    ToolBar3: TToolBar;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ADQ_Tmp: TADOQuery;
    ToolButton22: TToolButton;
    ToolButton24: TToolButton;
    Edit1: TComboBox;
    ToolButton1: TToolButton;
    ToolButton23: TToolButton;
    ADOQueryFiles: TADOQuery;
    cxLabel1: TcxLabel;
    procedure btnoClick(Sender: TObject);
    procedure Form(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure BtnOkClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure BtnQuitClick(Sender: TObject);
    procedure Edit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure ToolButton23Click(Sender: TObject);
    procedure ComboBox1Exit(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
  private
     fCanDesign:boolean;
  public
    { Public declarations }
  end;

var
  FormLogon: TFormLogon;
  IniFile:TIniFile;

implementation

uses
   Spmain,JDAESExtend,U_upPassword,U_iniParam,U_FileAutoUpdate;


{$R *.dfm}

procedure TFormLogon.FormCreate(Sender: TObject);
begin
   Edit1.Text := gLastUserName;
end;

procedure TFormLogon.FormShow(Sender: TObject);
var
  fsj:string;
begin
  try
    IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'FileKPZ.INI');
    fsj := IniFile.ReadString('生产车间配置', '员工编号范围','');
  finally
    IniFile.Free;
  end;
  if Trim(fsj)<>'' then
  begin
      fsj:=StringReplace(fsj,'delete','',[]);
      fsj:=StringReplace(fsj,'update','',[]);
      fsj:=StringReplace(fsj,'drop','',[]);
      fsj:=StringReplace(fsj,'truncate','',[]);
  end;
    with ADQ_Tmp do
    begin
      Close;
      sql.Clear;
      SQL.Add('select * from SY_user');
      sql.Add('where 1=1 and userId<>''admin''');
      SQL.Add(fsj);
      sql.Add('and valid=''Y''');
      Open;
    end;
    Edit1.Items.Clear;
    with ADQ_Tmp do
    begin
      First;
      while not Eof do
      begin
        Edit1.Items.Add(Trim(fieldbyname('UserId').AsString));
        Next;
      end;
    end;

    application.ProcessMessages;
end;

procedure TFormLogon.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action := CaFree;
end;

procedure TFormLogon.Form(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
  begin
    PostMessage(Handle,WM_KEYDOWN,VK_TAB,0);
    Key := 0;
  end;
end;

procedure TFormLogon.btnoClick(Sender: TObject);
begin
  application.Terminate;
end;

procedure TFormLogon.BtnOkClick(Sender: TObject);
type
  TMyFunc = function(App:Tapplication; FormH:hwnd; FormID:integer;
                  Language: integer; WinStyle:integer;
                  GCode: Pchar; GName: Pchar; DataBase:Pchar;Title:PChar;
                  Parameters1:PChar;Parameters2:PChar;Parameters3:PChar;Parameters4:PChar;
                  Parameters5:PChar;Parameters6:PChar;Parameters7:PChar;Parameters8:PChar;
                  Parameters9:PChar;Parameters10:PChar;DataBaseStr:PChar):hwnd;stdcall;
var
  Tf: TMyFunc;
  Tp: TFarProc;
  Th:Thandle;
  newh:hwnd;
bm,mm,mz,mm2:string;
begin
    if (Edit1.Text='') then
    begin
        Application.MessageBox('帐号没有录入,请继续录入。', '信息提示', MB_OK or MB_ICONinformation);
        Edit1.SetFocus;
        exit;
    end;
    with ADQ_Tmp do
    begin
      sql.Clear;
      sql.add('SELECT userid,username,password,canDesign FROM SY_User WHERE userid='+''''+trim(Edit1.Text)+''' and valid=''Y''');
      Open;
      bm:=Fields[0].AsString;
      mz:=Fields[1].AsString;
      mm:=Trim(Fields[2].AsString);
      fCanDesign:=fieldByName('canDesign').AsBoolean;
      if Trim(mm)<>'' then
        mm2:=Trim(DecryptString(Trim(mm),keys,kb128))   //'ljb^0122!@#*&^%$'
      else
      begin
        Application.MessageBox('密码不能为空！','提示',0);
        Exit;
      end;
      close;
    end;
    ////////////////////////
    try
       IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'SYSTEMSET.INI');
       IniFile.WriteBool('窗口设置', 'design',fCanDesign);

    finally
       IniFile.Free;
    end;
   if (mm2=trim(edit2.text)) and (bm<>'') then
      begin
         FormMain.StatusBar1.Panels[1].Text:='操作员:'+mz;
         FormMain.StatusBar1.Panels[2].Text:='绍兴睿特信息技术有限公司';
         User_Name:=trim(mz);
         User_Id:=trim(bm);
         gLastUserName:=User_Id ;
        // ExportFtErpFile('FileUpdate.dll',ADQ_Tmp);
        with ADOQueryFiles do
        begin
          close;
          sql.Clear;
          sql.Add('select * from SY_UpdateExeFile');
          SQL.Add('where exeName=''打卷店终端''');
          SQL.Add('and valid=1');
          Open;
          first;
          cxLabel1.Visible:=true;
          cxLabel1.Refresh;
          while not eof do
          begin
            ExportFtErpFile(Trim(FieldByName('fileName').AsString),ADQ_Tmp);
            if lowercase(Trim(FieldByName('fileName').AsString))=lowercase(gDllName1) then
              FormMain.threadLoadDll(gDllName1);
            //  FormMain.Panel1.OnClick(FormMain.Panel1);
            application.ProcessMessages;
            next;
          end;
          close;
        end;
         cxLabel1.Visible:=false;
         FormLogon.close;
         FormMain.Show;
      end
   else
      Application.MessageBox('密码错误！', '信息提示', MB_OK or MB_ICONinformation);  

  {FormLogon.close;
  FormMain.Show;}
end;

procedure TFormLogon.FormKeyPress(Sender: TObject; var Key: Char);
begin
  {key:=UpCase(key);
  if (Key in ['''']) then
     Key := #0;
  if FormLogon.Visible then
  begin
    if key=#13 then
    begin
      key:=#0;
      FormLogon.perform(WM_NEXTDLGCTL,0,0);
    end;

  end;}

end;

procedure TFormLogon.Timer1Timer(Sender: TObject);
begin
  Edit1.Text:='';
  Edit2.Text:='';
end;

procedure TFormLogon.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
    if User_ID='' then application.Terminate;
end;

procedure TFormLogon.BtnQuitClick(Sender: TObject);
begin
  application.Terminate;
end;

procedure TFormLogon.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key = VK_Return then
      BtnokClick(sender);
end;

procedure TFormLogon.FormActivate(Sender: TObject);
begin
  if  trim(Edit1.Text)='' then
    Edit1.SetFocus
  else
    Edit2.SetFocus  ;
end;

procedure TFormLogon.Edit1Exit(Sender: TObject);
begin
  edit1.Text :=upperCase(trim(edit1.text))
end;

procedure TFormLogon.ToolButton13Click(Sender: TObject);
begin
  Edit2.Text:=Trim(Edit2.Text)+Trim(TToolButton(Sender).Caption);
  Edit2.SelectAll;
end;

procedure TFormLogon.ToolButton23Click(Sender: TObject);
begin
  if Length(Trim(Edit2.Text))=0 then Exit;
  Edit2.Text:=Copy(Trim(Edit2.Text),1,Length(Trim(Edit2.Text))-1);
  Edit2.SelectAll;
end;

procedure TFormLogon.ComboBox1Exit(Sender: TObject);
begin
  edit1.Text :=upperCase(trim(edit1.text))
end;

procedure TFormLogon.ToolButton12Click(Sender: TObject);
begin
  if Trim(Edit1.Text)='' then
  begin
    Application.MessageBox('帐号不能为空！','提示',0);
    Exit;
  end;
  try
    frmupPassword:=TfrmupPassword.Create(Application);
    with frmupPassword do
    begin
      fuserID:=Trim(Self.Edit1.Text);
      if ShowModal=1 then
      begin

      end;
    end;
  finally
    frmupPassword.Free;
  end;
end;

procedure TFormLogon.ToolButton1Click(Sender: TObject);
begin
  if Length(Trim(Edit2.Text))=0 then Exit;
  Edit2.Text:=Copy(Trim(Edit2.Text),1,Length(Trim(Edit2.Text))-1);
  Edit2.SelectAll;
end;



end.
