📄 set_form.pas
字号:
unit Set_Form;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ComCtrls, ImgList,ExtCtrls, StdCtrls,
TFlatButtonUnit, Grids, DBGrids, TFlatGroupBoxUnit, TFlatRadioButtonUnit, XPMenu,
DB, ADODB, TFlatEditUnit, TFlatComboBoxUnit;
type
TSet_F = class(TForm)
ToolBar1: TToolBar;
YHGL_TBtn: TToolButton;
SJKGL_TBtn: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ImageList1: TImageList;
ToolButton5: TToolButton;
XPMenu1: TXPMenu;
Panel1: TPanel;
Set_PC: TPageControl;
YHGL_TS: TTabSheet;
SJKGL_TS: TTabSheet;
FlatGroupBox2: TFlatGroupBox;
FlatGroupBox3: TFlatGroupBox;
Run_FBtn: TFlatButton;
XG_FRBtn: TFlatRadioButton;
TJ_FRBtn: TFlatRadioButton;
Exit_FBtn: TFlatButton;
YH_ADOQ: TADOQuery;
YH_DS: TDataSource;
Panel2: TPanel;
FlatGroupBox1: TFlatGroupBox;
YHXX_DBG: TDBGrid;
Panel3: TPanel;
Del_FBtn: TFlatButton;
Label2: TLabel;
YHM_FE: TFlatEdit;
Label3: TLabel;
MM_FE: TFlatEdit;
Label4: TLabel;
QRMM_FE: TFlatEdit;
Label5: TLabel;
QX_FCB: TFlatComboBox;
YH_ADOT: TADOTable;
Label6: TLabel;
FlatGroupBox4: TFlatGroupBox;
Label1: TLabel;
LJ_FBtn: TFlatButton;
Panel4: TPanel;
LJ_FE: TFlatEdit;
FlatGroupBox6: TFlatGroupBox;
FlatButton1: TFlatButton;
Label7: TLabel;
SJD_FCB: TFlatComboBox;
Panel5: TPanel;
FlatGroupBox5: TFlatGroupBox;
BF_FRBtn: TFlatRadioButton;
HY_FRBtn: TFlatRadioButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure YHGL_TBtnClick(Sender: TObject);
procedure SJKGL_TBtnClick(Sender: TObject);
procedure Exit_FBtnClick(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure Del_FBtnClick(Sender: TObject);
procedure YHXX_DBGMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure XG_FRBtnClick(Sender: TObject);
procedure TJ_FRBtnClick(Sender: TObject);
procedure Run_FBtnClick(Sender: TObject);
procedure LJ_FBtnClick(Sender: TObject);
procedure HY_FRBtnClick(Sender: TObject);
procedure BF_FRBtnClick(Sender: TObject);
procedure FlatButton1Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
private
Procedure ShowYHInfo;
{ Private declarations }
public
{ Public declarations }
end;
var
Set_F: TSet_F;
implementation
uses
About_Form, Common_Unit, DataModule, BFML_Form,IniFiles,StrUtils,ShellAPI;
{$R *.dfm}
procedure TSet_F.ShowYHInfo;
begin
YHM_FE.Text:=YHXX_DBG.Fields[0].Text;
YHM_FE.Enabled:=false;
QX_FCB.ItemIndex:=QX_FCB.Items.IndexOf(YHXX_DBG.Fields[1].Text);
if YHM_FE.Text<>YH then
begin
MM_FE.Enabled:=false;
QRMM_FE.Enabled:=false;
end
else begin
MM_FE.Enabled:=true;
QRMM_FE.Enabled:=true;
end;
end;
//****************************************************************************************
procedure TSet_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
//****************************************************************************************
procedure TSet_F.FormDestroy(Sender: TObject);
begin
YH_ADOQ.Close;
YH_ADOT.Close;
FreeAndNil(YH_ADOT);
FreeAndNil(Set_F);
end;
//****************************************************************************************
procedure TSet_F.FormShow(Sender: TObject);
var
QXM_ADOQ:TADOQuery;
begin
YHGL_TS.TabVisible:=false;
SJKGL_TS.TabVisible:=false;
Set_PC.ActivePage:=YHGL_TS;
YH_ADOQ.Close; //查出用户信息
YH_ADOQ.SQL.Clear;
YH_ADOQ.SQL.Add('SELECT A.UserName as 用户名,B.QXM as 权限 FROM YH AS A ');
YH_ADOQ.SQL.Add('INNER JOIN QX AS B ON A.QXID=B.QXID');
YH_ADOQ.Open;
QXM_ADOQ:=TADOQuery.Create(nil); //动态创建ADOQuery控件
QXM_ADOQ.Connection:=BYSJ_DM.TiKu_ADOC;
QXM_ADOQ.SQL.Add('SELECT QXM FROM QX');
QXM_ADOQ.Open;
while not QXM_ADOQ.Eof do
begin
QX_FCB.Items.Add(QXM_ADOQ.FieldValues['QXM']);
QXM_ADOQ.Next;
end;
QXM_ADOQ.Close;
FreeAndNil(QXM_ADOQ);
ShowYHInfo;
YH_ADOT.TableName:='YH';
YH_ADOT.Open;
end;
//****************************************************************************************
procedure TSet_F.YHGL_TBtnClick(Sender: TObject);
begin
Set_PC.ActivePage:=YHGL_TS;
end;
//****************************************************************************************
procedure TSet_F.SJKGL_TBtnClick(Sender: TObject);
var
myini:TIniFile;
num,i:integer;
SJD,path:string;
begin
Set_PC.ActivePage:=SJKGL_TS;
BF_FRBtn.Checked:=true;
myini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
path:=myini.ReadString('bakup','BakPath','');
if path='' then
begin
path:=ExtractFilePath(Application.ExeName)+'BackupDB';
myini.WriteString('bakup','BakPath',path);
end;
LJ_FE.Text:=path;
num:=myini.ReadInteger('bakup','num',0); //还原点的个数
SJD_FCB.Clear;
for i:=1 to num do //依次读出各个还原点
begin
SJD:=myini.ReadString('bakupdian','bak'+IntToStr(i),'0');
SJD_FCB.Items.Add(SJD);
end;
SJD_FCB.ItemIndex:=0;
FreeAndNil(myini);
end;
//****************************************************************************************
procedure TSet_F.Exit_FBtnClick(Sender: TObject);
begin
close;
end;
//****************************************************************************************
procedure TSet_F.ToolButton5Click(Sender: TObject); //显示关于窗口
begin
with TAbout_F.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
//****************************************************************************************
procedure TSet_F.Del_FBtnClick(Sender: TObject); //删除用户信息
var
DelFlag:integer;
begin
if YHXX_DBG.Fields[0].Text=YH then
begin
MessageBox(handle,'错误:不能删除当前登陆的用户!','错误',MB_OK or MB_ICONERROR);
exit;
end;
DelFlag:=MessageBox(handle,'警告:删除是不可恢复的。确认删除吗?','确认删除',MB_YesNo or MB_ICONWARNING);
if DelFlag=IDYes then
begin
//YH_ADOQ.Delete; //由于ADOQuery没有查出表中所有的字段,故不能用这一语句
if YH_ADOT.Locate('UserName',YHXX_DBG.Fields[0].Text,[loCaseInsensitive]) then
try
YH_ADOT.Delete;
MessageBox(handle,'用户删除成功!','成功',MB_OK or MB_ICONINFORMATION);
YH_ADOQ.Close;
YH_ADOQ.Open;
except
MessageBox(handle,'发生未知错误:用户删除失败!','错误',MB_OK or MB_ICONERROR);
end;
YHM_FE.Text:='';
QX_FCB.ItemIndex:=-1;
MM_FE.Text:='';
QRMM_FE.Text:='';
end;
end;
//****************************************************************************************
procedure TSet_F.YHXX_DBGMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //显示用户信息
begin
ShowYHInfo;
end;
//****************************************************************************************
procedure TSet_F.XG_FRBtnClick(Sender: TObject); //修改用户信息
begin
ShowYHInfo;
end;
//****************************************************************************************
procedure TSet_F.TJ_FRBtnClick(Sender: TObject); //添加用户信息
begin
YHM_FE.Text:='';
QX_FCB.ItemIndex:=-1;
MM_FE.Text:='';
QRMM_FE.Text:='';
YHM_FE.Enabled:=true;
MM_FE.Enabled:=true;
QRMM_FE.Enabled:=true;
end;
//****************************************************************************************
procedure TSet_F.Run_FBtnClick(Sender: TObject); //提交用户信息
var
AdminNum_ADOQ:TADOQuery;
begin
if TJ_FRBtn.Checked then //添加用户信息
begin
if QX_FCB.ItemIndex=-1 then
begin
MessageBox(handle,'错误:请选择此用户的权限!','信息不完整',MB_OK or MB_ICONERROR);
exit;
end;
if MM_FE.Text='' then
begin
MessageBox(handle,'错误:密码不能为空!','信息有误',MB_OK or MB_ICONERROR);
exit;
end;
if MM_FE.Text<>QRMM_FE.Text then
begin
MessageBox(handle,'错误:两次输入的密码不相同,请重新输入!','密码有误',MB_OK or MB_ICONERROR);
MM_FE.Text:='';
QRMM_FE.Text:='';
exit;
end;
if YH_ADOT.Locate('UserName',YHM_FE.Text,[loCaseInsensitive]) then
begin
MessageBox(handle,'错误:用户已经存在了!','信息有误',MB_OK or MB_ICONERROR);
exit;
end;
YH_ADOT.Append; //添加用户信息
YH_ADOT.FieldByName('UserName').AsString:=YHM_FE.Text;
YH_ADOT.FieldByName('Password').AsString:=MM_FE.Text;
YH_ADOT.FieldByName('QXID').AsInteger:=QX_FCB.ItemIndex;
try
YH_ADOT.Post;
MessageBox(handle,'用户信息添加成功!','成功',MB_OK or MB_ICONINFORMATION);
YH_ADOQ.Close;
YH_ADOQ.Open;
YHM_FE.Text:='';
QX_FCB.ItemIndex:=-1;
MM_FE.Text:='';
QRMM_FE.Text:='';
except
YH_ADOT.Cancel;
end;
end
else begin //修改用户信息
if MM_FE.Text<>QRMM_FE.Text then
begin
MessageBox(handle,'错误:两次输入的密码不相同,请重新输入!','密码有误',MB_OK or MB_ICONERROR);
MM_FE.Text:='';
QRMM_FE.Text:='';
exit;
end;
if QX_FCB.ItemIndex=0 then //如果降低了自己的权限,则进行审核
begin
AdminNum_ADOQ:=TADOQuery.Create(nil);
AdminNum_ADOQ.Connection:=BYSJ_DM.TiKu_ADOC;
AdminNum_ADOQ.SQL.Add('SELECT 1 FROM YH WHERE QXID=1');
AdminNum_ADOQ.Open;
if AdminNum_ADOQ.RecordCount<2 then MessageBox(handle,
'程序至少要有一个权限为“系统管理员”的用户,你不能降低这个唯一用户的权限!',
'错误',MB_OK or MB_ICONERROR);
AdminNum_ADOQ.Close;
FreeAndNil(AdminNum_ADOQ);
exit;
end;
YH_ADOT.Locate('UserName',YHM_FE.Text,[loCaseInsensitive]); //定位记录
if MM_FE.Text='' then
begin
YH_ADOT.Edit; //没有修改密码
YH_ADOT.FieldByName('QXID').AsInteger:=QX_FCB.ItemIndex;
try
YH_ADOT.Post; //修改用户信息
MessageBox(handle,'用户信息修改成功!','成功',MB_OK or MB_ICONINFORMATION);
YH_ADOQ.Close;
YH_ADOQ.Open;
except
YH_ADOT.Cancel;
end;
end
else begin
YH_ADOT.Edit; //有修改密码
YH_ADOT.FieldByName('Password').AsString:=MM_FE.Text;
YH_ADOT.FieldByName('QXID').AsInteger:=QX_FCB.ItemIndex;
try
YH_ADOT.Post;
MessageBox(handle,'用户信息修改成功!','成功',MB_OK or MB_ICONINFORMATION);
YH_ADOQ.Close;
YH_ADOQ.Open;
except
YH_ADOT.Cancel;
end;
end;
end;
end;
//****************************************************************************************
procedure TSet_F.LJ_FBtnClick(Sender: TObject); //设置备份路径
begin
Share_FE:=LJ_FE;
with TBFML_F.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
//****************************************************************************************
procedure TSet_F.HY_FRBtnClick(Sender: TObject);
begin
SJD_FCB.Enabled:=true;
end;
//****************************************************************************************
procedure TSet_F.BF_FRBtnClick(Sender: TObject);
begin
SJD_FCB.Enabled:=false;
end;
//****************************************************************************************
procedure TSet_F.FlatButton1Click(Sender: TObject); //执行操作
var
myini:TIniFile;
Flag:integer;
ExePath:string;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
ExePath:=ExtractFilePath(Application.ExeName);
myini:=TIniFile.Create(ExePath+'set.ini');
if BF_FRBtn.Checked then
begin
Flag:=MessageBox(handle,'为了保证备份数据的正确性,必须退出本程序,确认吗?','备份确认',MB_OKCANCEL or MB_ICONINFORMATION);
if Flag=IDCancel then
begin
FreeAndNil(myini);
exit;
end;
myini.WriteInteger('bakup','CZ',0);
FreeAndNil(myini);
StartupInfo.cb:=sizeof(StartupInfo);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
CreateProcess(nil,pchar(ExePath+'BackUp.exe'+' han_backup'),nil,nil,false,0,nil,nil,StartupInfo,ProcessInfo);
Application.Terminate;
end
else begin
Flag:=MessageBox(handle,'为了保证还原的正确性,必须退出本程序,确认吗?','还原确认',MB_OKCANCEL or MB_ICONINFORMATION);
if Flag=IDCancel then
begin
FreeAndNil(myini);
exit;
end;
myini.WriteInteger('bakup','CZ',1);
myini.WriteString('bakup','RQ',SJD_FCB.Text);
FreeAndNil(myini);
StartupInfo.cb:=sizeof(StartupInfo);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
CreateProcess(nil,pchar(ExePath+'BackUp.exe'+' han_backup'),nil,nil,false,0,nil,nil,StartupInfo,ProcessInfo);
Application.Terminate;
end;
end;
//****************************************************************************************
procedure TSet_F.ToolButton4Click(Sender: TObject); //打开帮助
begin
ShellExecute(handle,nil,'BYSJ.chm',nil,nil,SW_MAXIMIZE);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -