⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys700_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Sys700_01;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, StdCtrls, Buttons, ExtCtrls, Registry, ADODB, SkinCaption,
  WinSkinData;

type
  TSys700_01Form = class(TForm)
    Bevel1: TBevel;
    lblPassword: TLabel;
    Image1: TImage;
    lblUser: TLabel;
    bbtnOk: TBitBtn;
    bbtnExit: TBitBtn;
    lblAccount: TLabel;
    bbtnNew: TBitBtn;
    qrySys500A: TADOQuery;
    qrySys000: TADOQuery;
    cbUser: TComboBox;
    edtPassword: TEdit;
    cbSavePass: TCheckBox;
    cbAccount: TComboBox;
    SkinData1: TSkinData;
    SkinCaption1: TSkinCaption;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bbtnOkClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure bbtnNewClick(Sender: TObject);
    procedure cbAccountChange(Sender: TObject);
  private
    procedure SetInterface;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Sys700_01Form: TSys700_01Form;

implementation

uses CommFun, SYSDATA, Sys000_01;

{$R *.DFM}

procedure TSys700_01Form.SetInterface;
begin
  Font.Name:=AFontName;
  Caption:=GetDBString('SYS70001001');  //'系统登录';
  lblAccount.Caption:=GetDBString('SYS70001002');  //帐套
  lblUser.Caption:=GetDBString('SYS70001003');  //用户名
  lblPassword.Caption:=GetDBString('SYS70001004');  //密码
  cbSavePass.Caption:=GetDBString('SYS70001005');  //保存密码(&S)
  bbtnNew.Caption:=GetDBString('SYS70001006');  //帐套(&N)
  bbtnOk.Caption:=GetDBString('SYS70001007');  //确定(&O)
  bbtnExit.Caption:=GetDBString('SYS70001008');  //退出(&X)
end;

procedure TSys700_01Form.FormCreate(Sender: TObject);
begin
  SetInterface;
  //取得所有帐套
  qrySys000.Close;
  qrySys000.SQL.Clear;
  qrySys000.SQL.Add('select * from HwDatabase');
  qrySys000.Open;
  While not qrySys000.Eof do
  begin
    cbAccount.Items.Add(qrySys000.FieldByName('FName').Value);
    qrySys000.Next;
  end;
  cbAccount.ItemIndex:=0;
  //读取注册表
  if ReadReg('SavePassWord',1)='1' then
  begin
    edtPassword.Text:=EncDecStr(ReadReg('PassWord',1),1);
    cbSavePass.Checked:=true;
  end else
    edtPassword.Text:='';
  cbAccount.ItemIndex:=cbAccount.Items.IndexOf(ReadReg('CompanyName',1));
  cbAccountChange(cbAccount);
  cbUser.Text:=ReadReg('UserName',1);
end;

procedure TSys700_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  qrySys500A.Close;
  Action:=caFree;
end;

procedure TSys700_01Form.bbtnOkClick(Sender: TObject);
var
  S:String;
  ATime:String;
  AComputerName,AIPAddress:string;
  ADateTime:TDateTime;
//  AOnLineUsers:Integer;
begin
  inherited;
//确定
  //检查帐套&用户名&密码是否正确
  if cbAccount.Text='' then
  begin
    ShowMsg('UMS10000038');   //帐套不能为空,请选择帐套
    cbAccount.SetFocus;
    Abort;
  end;
  qrySys500A.Close;
  qrySys500A.SQL.Clear;
  qrySys500A.SQL.Add('select * from SYS500A where S500A_005<>0 and S500A_002='+''''+cbUser.Text+'''');
  qrySys500A.Open;
  if qrySys500A.IsEmpty then
  begin
    ShowMsg('UMS10000039');  //用户名不存在,请重新输入
    cbUser.SetFocus;
    Abort;
  end else
  begin
    if qrySys500A.FieldByName('S500A_003').Value<>EncDecStr(edtPassword.Text,0) then
    begin
      ShowMsg('UMS10000040');  //密码不正确,请重新输入
      edtPassword.SetFocus;
      Abort;
    end;
  end;
  AUserID:=qrySys500A.FieldByName('S500A_001').Value;
  AUserName:=qrySys500A.FieldByName('S500A_002').Value;
  ACompanyName:=cbAccount.Text;
  ASuper:=qrySys500A.FieldByName('S500A_006').Value;
  if ReadReg('LoginOut',1)='N' then  //如果非正常退出,则自动删除原在线用户记录
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('delete from SYS500E where S500E_001='+IntToStr(AUserID));
    SYSDM.qryQuery.ExecSQL;
  end;
  //用户是否在线
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select * from SYS500E where S500E_001='+IntToStr(AUserID));
  SYSDM.qryQuery.Open;
  if not SYSDM.qryQuery.IsEmpty then
  begin
    ShowMsg('UMS10000401');  //该用户已登录系统,同一用户不能同时登录两次或以上
    cbUser.SetFocus;
    Abort;
  end;
{  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select count(S500E_001) from SYS500E');
  SYSDM.qryQuery.Open;
  AOnLineUsers:=SYSDM.qryQuery.Fields[0].AsInteger;
  if (AOnLineUsers<>0) and (AOnLineUsers>=ARegUsers) then
  begin
    ShowMsg('UMS10000410');  //在线用户数量已达到注册的最大用户数量,不可登录
    cbUser.SetFocus;
    Abort;
  end; }

  Screen.Cursor:=crHourGlass;
  //写入在线用户表
  GetIPAddress(AComputerName,AIPAddress);
  ADateTime:=GetServerDate;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select * from SYS500E');
  SYSDM.qryQuery.Open;
  SYSDM.qryQuery.Append;
  SYSDM.qryQuery.FieldByName('S500E_001').Value:=AUserID;  //用户编号
  SYSDM.qryQuery.FieldByName('S500E_002').Value:=ADateTime;  //登录时间
  SYSDM.qryQuery.FieldByName('S500E_003').Value:=ADateTime;  //刷新时间
  SYSDM.qryQuery.FieldByName('S500E_004').Value:=AIPAddress;  //IP地址
  SYSDM.qryQuery.FieldByName('S500E_005').Value:=AComputerName;  //电脑名称
  SYSDM.qryQuery.FieldByName('S500E_006').Value:=0;  //状态 0=活动,1=不活动
  SYSDM.qryQuery.Post;
  
  //取得本位币
  GetCurrency;

  //写注册表
  WriteReg('CompanyName',ACompanyName,1);
  WriteReg('UserName',AUserName,1);
  WriteReg('LoginDateTime',DateToStr(Now),1);
  WriteReg('PassWord',EncDecStr(edtPassword.Text,0),1);
  if cbSavePass.Checked then
    WriteReg('SavePassWord','1',1)
  else
    WriteReg('SavePassWord','0',1);
  WriteReg('LoginOut','N',1);

  //取系统参数(关键字段字体样式及颜色)
  S:=GetSysParams('SYS0009');
  if copy(S,1,1)='1' then AKeyStyle:=AKeyStyle+[fsBold];
  if copy(S,2,1)='1' then AKeyStyle:=AKeyStyle+[fsItalic];
  if copy(S,3,1)='1' then AKeyStyle:=AKeyStyle+[fsUnderline];
  AKeyColor:=TColor(StrToInt(GetSysParams('SYS0010')));
  //日期格式
  S:=GetSysParams('SYS0001');  //日期分隔符   - / .
  case StrToInt(S) of
    0:S:='-';
    1:S:='/';
    2:S:='.';
  end;
  ADateFormat[0]:='yyyy'+S+'MM'+S+'dd';
  ADateFormat[1]:='yyyy'+S+'M'+S+'d';
  ADateFormat[2]:='yy'+S+'MM'+S+'dd';
  ADateFormat[3]:='yy'+S+'M'+S+'d';
  ADateFormat[4]:='MM'+S+'dd'+S+'yyyy';
  ADateFormat[5]:='M'+S+'d'+S+'yyyy';
  ADateFormat[6]:='MM'+S+'dd'+S+'yy';
  ADateFormat[7]:='M'+S+'d'+S+'yy';
  ADateFormat[8]:='dd'+S+'MM'+S+'yyyy';
  ADateFormat[9]:='d'+S+'M'+S+'yyyy';
  ADateFormat[10]:='dd'+S+'MM'+S+'yy';
  ADateFormat[11]:='d'+S+'M'+S+'yy';
  //设置日期格式
  GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, ASystemDate, SizeOf(ASystemDate));
  S:=ADateFormat[StrToInt(GetSysParams('SYS0002'))];  //日期格式
  if S<>ASystemDate then
  begin
    SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE , PChar(S));
    SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,0);
  end;

  //数量格式
  AQtyFormat[0]:='#,###.##';
  AQtyFormat[1]:='#,##0.##';
  AQtyFormat[2]:='#,##0.00';
  AQtyFormat[3]:='####.##';
  AQtyFormat[4]:='###0.##';
  AQtyFormat[5]:='###0.00';

  //负数格式
  S:=GetSysParams('SYS0007');
  //单价格式
  if S='0' then
  begin
    APriceFormat[0]:='#,###.####;-#,###.####';
    APriceFormat[1]:='#,##0.####;-#,##0.####';
    APriceFormat[2]:='#,##0.0000;-#,##0.0000';
    APriceFormat[3]:='####.####;-####.####';
    APriceFormat[4]:='###0.####;-###0.####';
    APriceFormat[5]:='###0.0000;-###0.0000';

    //金额格式
    AAmountFormat[0]:='#,###.##;-#,###.##';
    AAmountFormat[1]:='#,##0.##;-#,##0.##';
    AAmountFormat[2]:='#,##0.00;-#,##0.00';
    AAmountFormat[3]:='####.##;-####.##';
    AAmountFormat[4]:='###0.##;-###0.##';
    AAmountFormat[5]:='###0.00;-###0.00';

    //汇率格式
    ARateFormat[0]:='#,###.####;-#,###.####';
    ARateFormat[1]:='#,##0.####;-#,##0.####';
    ARateFormat[2]:='#,##0.0000;-#,##0.0000';
    ARateFormat[3]:='####.####;-####.####';
    ARateFormat[4]:='###0.####;-###0.####';
    ARateFormat[5]:='###0.0000;-###0.0000';
  end else
  if S='1' then
  begin
    APriceFormat[0]:='#,###.####;(#,###.####)';
    APriceFormat[1]:='#,##0.####;(#,##0.####)';
    APriceFormat[2]:='#,##0.0000;(#,##0.0000)';
    APriceFormat[3]:='####.####;(####.####)';
    APriceFormat[4]:='###0.####;(###0.####)';
    APriceFormat[5]:='###0.0000;(###0.0000)';

    //金额格式
    AAmountFormat[0]:='#,###.##;(#,###.##)';
    AAmountFormat[1]:='#,##0.##;(#,##0.##)';
    AAmountFormat[2]:='#,##0.00;(#,##0.00)';
    AAmountFormat[3]:='####.##;(####.##)';
    AAmountFormat[4]:='###0.##;(###0.##)';
    AAmountFormat[5]:='###0.00;(###0.00)';

    //汇率格式
    ARateFormat[0]:='#,###.####;(#,###.####)';
    ARateFormat[1]:='#,##0.####;(#,##0.####)';
    ARateFormat[2]:='#,##0.0000;(#,##0.0000)';
    ARateFormat[3]:='####.####;(####.####)';
    ARateFormat[4]:='###0.####;(###0.####)';
    ARateFormat[5]:='###0.0000;(###0.0000)';
  end;

  //负数字体颜色
  ANegaColor:=TColor(StrToInt(GetSysParams('SYS0008')));

  SYSDM.qrySys910S910_002.DisplayLabel:=GetDBString('HWERP100055');  //预警时间
  SYSDM.qrySys910S910_003.DisplayLabel:=GetDBString('HWERP100056');  //内容
  SYSDM.qrySys910S910_004.DisplayLabel:=GetDBString('HWERP100057');  //程序编号
  ATime:=GetSysParams('SYS0011');
  if ATime='' then ATime:='60000';
  SYSDM.Timer1.Enabled:=False;
  SYSDM.Timer1.Interval:=StrToInt(ATime)*1000;  //预警时间间隔
  SYSDM.Timer1.Enabled:=True;

  //完成数量统计中包含下列状态
  AStatusNo:=GetSysParams('TAS0011');
  if AStatusNo='' then AStatusNo:='[3]';
  ReplaceString('[','',AStatusNo);
  ReplaceString(']','',AStatusNo);

  //按照"申报日期"统计任务计划的总数量
  AByTotal:=GetSysParams('TAS0012');
  if AByTotal='' then AByTotal:='0';
  //按照"实际完成日期"统计任务计划的完成数量
  AByFinish:=GetSysParams('TAS0013');
  if AByFinish='' then AByFinish:='5';

  case StrToInt(AByTotal) of
    0:AByTotal:='T510_006';  //0=申报日期  T510_006
    1:AByTotal:='T510_007';  //1=需求日期  T510_007
    2:AByTotal:='T510_025';  //2=预计开始日期  T510_025
    3:AByTotal:='T510_026';  //3=预计完成日期  T510_026
    4:AByTotal:='T510_027';  //4=实际开始日期  T510_027
    5:AByTotal:='T510_028';  //5=实际完成日期  T510_028
  end;
  case StrToInt(AByFinish) of
    0:AByFinish:='T510_006';  //0=申报日期  T510_006
    1:AByFinish:='T510_007';  //1=需求日期  T510_007
    2:AByFinish:='T510_025';  //2=预计开始日期  T510_025
    3:AByFinish:='T510_026';  //3=预计完成日期  T510_026
    4:AByFinish:='T510_027';  //4=实际开始日期  T510_027
    5:AByFinish:='T510_028';  //5=实际完成日期  T510_028
  end;

  Screen.Cursor:=crDefault;
  ModalResult:=1;
end;

procedure TSys700_01Form.bbtnExitClick(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure TSys700_01Form.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key in [vk_Return] then Perform(WM_NEXTDLGCTL, 0, 0);
  if Key=VK_F1 then
    HtmlHelp(Application.Handle, AHelpFile+'::/'+AProgramID+'.htm', $0000, nil);
end;

procedure TSys700_01Form.bbtnNewClick(Sender: TObject);
begin
//帐套(&N)
  Screen.Cursor:=crHourGlass;
  Sys000_01Form:=TSys000_01Form.Create(Application);
  SkinData1.AddNestForm(Self,Sys000_01Form);
  Screen.Cursor:=crDefault;
  if Sys000_01Form.ShowModal=1 then
  begin
    //取得所有帐套
    cbAccount.Clear;
    qrySys000.Close;
    qrySys000.SQL.Clear;
    qrySys000.SQL.Add('select * from HwDatabase');
    qrySys000.Open;
    while not qrySys000.Eof do
    begin
      cbAccount.Items.Add(qrySys000.FieldByName('FName').Value);
      qrySys000.Next;
    end;
    cbAccount.ItemIndex:=cbAccount.Items.Count-1;
    cbAccountChange(cbAccount);
  end;
end;

procedure TSys700_01Form.cbAccountChange(Sender: TObject);
var
  ADBUser,ADBPass,AServer,APath:String;
begin
  if not qrySys000.Active then Exit;
  if qrySys000.IsEmpty then Exit;
  if qrySys000.Locate('FName',cbAccount.Text,[loCaseInsensitive]) then
  begin                                             
    try
      AFileName:=qrySys000.FieldByName('FPath').AsString;
      APath:=ASystemPath+'Data\';
      ADBUser:=qrySys000.FieldByName('FUser').AsString;
      ADBPass:=qrySys000.FieldByName('FPass').AsString;
      AServer:=qrySys000.FieldByName('FHost').AsString;
      ADatabase:=qrySys000.FieldByName('FType').AsInteger;
      AVerPath:=trim(qrySys000.FieldByName('FVersion').AsString);
      if copy(AVerPath,1,2)='.\' then Delete(AVerPath,1,2);
      if AVerPath='' then AVerPath:=ASystemPath else AVerPath:=ASystemPath+AVerPath;
      if AVerPath[Length(AVerPath)]<>'\' then AVerPath:=AVerPath+'\';
      case ADatabase of   //0=Access, 1=SQL Server
        0:ConnectDB(SYSDM.ADOC,ADatabase,AServer,AFileName,ADBUser,'HowWell19740507');
        1:ConnectDB(SYSDM.ADOC,ADatabase,AServer,AFileName,ADBUser,ADBPass);
      end;
    except
      ShowMsg(AFileName+GetDBString('UMS10000041'),1);  //数据库文件损坏,连接失败
      Abort;
    end;
    qrySys500A.Close;
    qrySys500A.SQL.Clear;
    qrySys500A.SQL.Add('select * from SYS500A where S500A_005<>0');
    qrySys500A.Open;
    //取得所有用户名
    cbUser.Clear;
    While not qrySys500A.Eof do
    begin
      cbUser.Items.Add(qrySys500A.FieldByName('S500A_002').Value);
      qrySys500A.Next;
    end;
    cbUser.ItemIndex:=0;
  end;
end;

initialization
  RegisterClass(TSys700_01Form);

finalization
  UnRegisterClass(TSys700_01Form);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -