?? frmloginp.~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 + -