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

📄 frmloginp.~pas

📁 二次开发模块 一、条形码的批量生成
💻 ~PAS
字号:
unit FrmLoginP;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,IniFileS, DB, ADODB;

type
  TFrmLogin = class(TForm)
    Label2: TLabel;
    Label3: TLabel;
    Bevel1: TBevel;
    Image1: TImage;
    EditPassword: TEdit;
    CheckBox1: TCheckBox;
    BtnOK: TButton;
    BtnCancel: TButton;
    ComboBoxName: TComboBox;
    btnNet: TButton;
    Label4: TLabel;
    Label5: TLabel;
    ComboBox2: TComboBox;
    ComboBox1: TComboBox;
    ADOConnection1: TADOConnection;
    Bevel2: TBevel;
    procedure BtnCancelClick(Sender: TObject);
    procedure btnNetClick(Sender: TObject);
    Procedure GetUFSystem;
    Procedure GetUser;
    procedure FoundItem;
    procedure FoundAccYear;
    procedure CheckUser;
    procedure FormShow(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure BtnOKClick(Sender: TObject);
    procedure ComboBoxNameChange(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmLogin: TFrmLogin;

implementation

uses FrmNetSetupP, DataDmP, SUFunctionP, FrmChangePassP, FrmMainP;

{$R *.dfm}

procedure TFrmLogin.BtnCancelClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmLogin.btnNetClick(Sender: TObject);
begin
   Application.CreateForm(TFrmNetSetup,FrmNetSetup);
   FrmNetSetup.ShowModal;
   FrmNetSetup.Free;
   FrmNetSetup:=nil;
   GetUFSystem;
end;

procedure TFrmLogin.GetUFSystem;
Var LsStr:WideString;
begin
  With DataDM do
  Try
     LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
     LsStr:=LsStr+'Initial Catalog=UFSYSTEM;Data Source='+DataServer+';Password='+DataPassword+';';
     ConUfsystem.Connected:=False;
     ConUfsystem.ConnectionString:=LsStr;
     ConUfsystem.KeepConnection:=True;
     ConUfsystem.Connected:=True;
     ComboBox1.Items.Clear;
     QryAcc.Close;
     QryAcc.Open;
     While not QryAcc.Eof DO
      Begin
        ComboBox1.Items.Add('['+QryAcc.FieldByName('cAcc_Id').AsString+']'+QryAcc.FieldByName('cAcc_Name').AsString);
        QryAcc.Next;
      end;
     FoundItem;
  except
     Application.MessageBox(Pchar('无法取得['+DataServer+']的数据.'),'信息',MB_OK+ MB_ICONINFORMATION);
  end;
end;

procedure TFrmLogin.FormShow(Sender: TObject);
Var LsQry:TADOQuery;
    LsStr:WideString;
    DelphiIni:TIniFile;
    DataServer,DataUser,DataPassword,ss,ss1:String;
    ii,kk:Integer;
begin
   CheckBox1.Checked:=False;
   if DataDm.GetGLAcc then
     begin
       GetUFSystem;
     end;
   if not DataDm.ConToSysData then
     begin
       if Application.MessageBox('连接系统数据库发生错误,是否在服务器创建?','信息',MB_OKCANCEL+ MB_ICONINFORMATION)= IDOK  Then
          begin
          Try
             DelphiIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Set.ini');
             DataServer       :=  DelphiIni.ReadString('UFSOFT', 'Server',DataServer);
             DataUser         :=  DelphiIni.ReadString('UFSOFT', 'User',DataUser);
             DataPassword     :=  DelphiIni.ReadString('UFSOFT', 'Pass',DataPassword);
             DelphiIni.Free;
             if DataPassword<>'' then
                DataPassword:=SUFunction.EncryptionEngine(DataPassword,'1234',false);
             LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
             LsStr:=LsStr+'Initial Catalog=master;Data Source='+DataServer+';Password='+DataPassword+';';
             ADOConnection1.Connected:=False;
             ADOConnection1.ConnectionString:=LsStr;
             ADOConnection1.KeepConnection:=True;
             ADOConnection1.Connected:=True;
              LsQry:=TADOQuery.Create(Self);
              LsQry.Connection:=ADOConnection1;
              LsQry.SQL.Add('CREATE DATABASE sysdata');
              LsQry.SQL.Add('ON ( NAME = sysdata_dat,');
              LsQry.SQL.Add('   FILENAME = ''c:\program files\sysdata.mdf'' )');
              LsQry.ExecSQL;
              if  DataDm.ConToSysData then
                  SUFunction.CreateTableView(DataDm.ConDataSys,'Users');
              Application.MessageBox('创建系统数据库成功,请重新登录!','信息',MB_OK +MB_ICONINFORMATION);
              Application.Terminate;
           except
           end;
          end;
     end
   else
    begin
        ss:=SUFunction.GetVerInfo(ExtractFileName(Application.ExeName));
        ii:=FrmMain.GetVer(ss);
        ss1:=SUFunction.ReadInformation('条形码软件版本','cValue','');
        kk:=FrmMain.GetVer(ss1);
        if ii <  kk then
          begin
             Application.MessageBox(pchar('您使用的软件版本低于系统版本,请及时升级!'+#13+'使用版本:'+ss+#13+'系统版本:'+ss1),'信息',MB_OK +MB_ICONINFORMATION);
             Application.Terminate;
          end;
         if ii > kk then
            SUFunction.ReadInformation('条形码软件版本','cValue',ss);
        GetUser;
        FrmMain.NNN.Enabled:=False;
        FrmMain.N4.Enabled:=False;
        FrmMain.B4.Enabled:=False;        
    end;
end;

procedure TFrmLogin.FoundItem;
Var LsStr:String;
begin
 Try
   LsStr:=Copy(DataDm.DataName,8,3);
   with DataDM do
     begin
       if QryAcc.Locate('cAcc_Id',LsStr,[]) then
          ComboBox1.ItemIndex:=QryAcc.RecNo-1
       else
          ComboBox1.ItemIndex:=0;
     end;
   FoundAccYear;
   LsStr:=Copy(DataDm.DataName,12,4);
   ComboBox2.ItemIndex:=ComboBox2.Items.IndexOf(LsStr);
 except
 end;
end;

procedure TFrmLogin.FoundAccYear;
Var LsStr:String;
begin
   LsStr:=Copy(ComboBox1.Text,2,3);
   with DataDM do
    Begin
      QryAccYear.Close;
      QryAccYear.SQL.Clear;
      QryAccYear.SQL.Add(' SELECT iYear FROM UA_HoldAuth WHERE (iYear <> 9999) AND (cAcc_Id = '''+LsStr+''')');
      QryAccYear.SQL.Add(' GROUP BY iYear Order By iYear');
      QryAccYear.Open;
      ComboBox2.Items.Clear;
      While not QryAccYear.Eof do
       Begin
         ComboBox2.Items.Add(QryAccYear.FieldByName('iYear').AsString);
         QryAccYear.Next;
       end;
     LsStr:=Copy(datadm.DataName,12,4);
     ComboBox2.ItemIndex:=ComboBox2.Items.IndexOf(LsStr);
    end;

end;

procedure TFrmLogin.ComboBox1Click(Sender: TObject);
begin
   FoundAccYear;
end;

procedure TFrmLogin.GetUser;
Var LsStr:WideString;
begin
  With DataDM do
  Try
     LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
     LsStr:=LsStr+'Initial Catalog=SYSData;Data Source='+DataServer+';Password='+DataPassword+';';
     ConDataSys.Connected:=False;
     ConDataSys.ConnectionString:=LsStr;
     ConDataSys.KeepConnection:=True;
     ConDataSys.Connected:=True;
     ComboBoxName.Items.Clear;
     CheckUser;
     QryUser.Close;
     QryUser.Open;
     While not QryUser.Eof DO
      Begin
        ComboBoxName.Items.Add(QryUser.FieldByName('cName').AsString);
        QryUser.Next;
      end;
     ComboBoxName.ItemIndex:=StrToIntDef(UserID,0);
  except
     Application.MessageBox(Pchar('无法取得['+DataServer+']的数据.'),'信息',MB_OK+ MB_ICONINFORMATION);
  end;
end;

procedure TFrmLogin.CheckUser;
begin
  with DataDm do
    begin
     QryUser.Close;
     QryUser.Open;
     if  QryUser.RecordCount=0 then
        Begin
          QryUser.Append;
          QryUser.FieldByName('cName').AsString:='Admin';
          QryUser.FieldByName('bAdmin').AsBoolean:=True;          
          QryUser.Post;
        end;
    end;
end;

procedure TFrmLogin.BtnOKClick(Sender: TObject);
Var LsStr,ll,ss:String;
    DelphiIni:TIniFile;

begin
    Datadm.QryUser.First;
    Datadm.QryUser.MoveBy(ComboBoxName.ItemIndex);
    LsStr:=DataDm.QryUser.FieldByName('CPassword').AsString;
    if LsStr<>'' then
       LsStr:=SUFunction.EncryptionEngine(LsStr,'1234',False);
    if LsStr=EditPassword.Text then
       begin
        ll:=COPY(ComboBox1.Text,2,3);
        ss:=Trim(COPY(ComboBox1.Text,6,length(ComboBox1.Text)));
        DataDm.bLin:=False;
        ll:=FrmMain.ReadReg(COPY(ComboBox1.Text,2,3),'cReg','');
        if ll<>'' then
          begin
            ll:=SUFunction.EncryptionEngine(ll,'19780923',False);
            DataDm.blin:=ss=ll;
          end;
        FrmMain.Caption:='用友软件辅助工具【劲霸专版】';
        if not DataDm.blin then
           FrmMain.Caption:=FrmMain.Caption+'_演示';
        if (StrToIntDef(ComboBox2.Text,2005)>2004) and ( not DataDm.blin) then
          begin
           Application.MessageBox(Pchar('超出演示版本的最大使用日期!'),'信息',MB_OK+ MB_ICONINFORMATION);
           Abort;
          end;
        FrmMain.NNN.Enabled:=True;
        FrmMain.N4.Enabled :=True;
        FrmMain.B4.Enabled :=True;
         if CheckBox1.Checked then
           begin
             Application.CreateForm(TFrmChangePass,FrmChangePass);
             FrmChangePass.ShowModal;
             FrmChangePass.Free;
             FrmChangePass:=nil;
           end;
//保存用户ID,DataName
           DataDm.DataName:='UFDATA_'+COPY(ComboBox1.Text,2,3)+'_'+ComboBox2.Text;
           DelphiIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Set.ini');
           DataDm.UserID:=IntToStr(ComboBoxName.ItemIndex);
           DelphiIni.WriteString('UFSOFT', 'UserID',DataDm.UserID);
           DelphiIni.WriteString('UFSOFT', 'DataName',DataDm.DataName);
           DelphiIni.Free;
           DataDm.ConToUFData;
//写帐套信息
           FrmMain.StatusBar1.Panels[0].Text:='    帐套:'+ComboBox1.Text;
           FrmMain.StatusBar1.Panels[1].Text:='  操作员:'+ComboBoxName.Text;
           if DataDm.QryUser.FieldByName('BAdmin').AsBoolean then
             begin
                FrmMain.StatusBar1.Panels[1].Text:='  操作员:'+ComboBoxName.Text+'【管理员】';

                FrmMain.NU1.Enabled:=True;
             end
           else
             begin
                FrmMain.NU1.Enabled:=False;             
             end;
           DataDm.bAdmin:=DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch01:=DataDm.QryUser.FieldByName('bVouch01').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch08:=DataDm.QryUser.FieldByName('bVouch08').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;           
           DataDm.bVouch09:=DataDm.QryUser.FieldByName('bVouch09').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch10:=DataDm.QryUser.FieldByName('bVouch10').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch11:=DataDm.QryUser.FieldByName('bVouch11').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch12:=DataDm.QryUser.FieldByName('bVouch12').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           DataDm.bVouch18:=DataDm.QryUser.FieldByName('bVouch18').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;                                         
           DataDm.bVouch32:=DataDm.QryUser.FieldByName('bVouch32').AsBoolean or DataDm.QryUser.FieldByName('BAdmin').AsBoolean;
           FrmMain.C1.Enabled:=DataDm.bAdmin;
           FrmMain.I1.Enabled:=DataDm.bAdmin;
           FrmMain.N7.Enabled:=DataDm.bAdmin;           
           FrmMain.A3.Enabled:=DataDm.bVouch01;
           FrmMain.B3.Enabled:=DataDm.bVouch08;               
           FrmMain.B2.Enabled:=DataDm.bVouch10;
           FrmMain.A5.Enabled:=DataDm.bVouch11;                      
           FrmMain.A4.Enabled:=DataDm.bVouch32;
           FrmMain.C3.Enabled:=DataDm.bVouch09;
           FrmMain.C4.Enabled:=DataDm.bVouch12;
           FrmMain.D1.Enabled:=DataDm.bVouch18;                                             
           DataDm.Maker:=ComboBoxName.Text;
           ModalResult:=mrOk;
       end
    else
       begin
          Application.MessageBox('口令无效,请重新输入!','信息',MB_OK +MB_ICONINFORMATION);
          EditPassword.SetFocus;
       end;
end;


procedure TFrmLogin.ComboBoxNameChange(Sender: TObject);
begin
   with DataDM do
    begin
      QryUser.Open;
      QryUser.First;
      QryUser.MoveBy(ComboBoxName.ItemIndex);
    end;
end;

end.

⌨️ 快捷键说明

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