📄 frmuseru.pas
字号:
unit frmUserU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, Buttons, ExtCtrls,
cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid;
type
TfrmUser = class(TForm)
GroupBox1: TGroupBox;
cxGridUser: TcxGrid;
cxGridDBTableView2: TcxGridDBTableView;
cxGridUserLevel1: TcxGridLevel;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
cxStyle2: TcxStyle;
cxStyle3: TcxStyle;
dsUser: TDataSource;
Panel1: TPanel;
GroupBox2: TGroupBox;
chkLP1: TCheckBox;
chkLP2: TCheckBox;
chkLP3: TCheckBox;
chkLP4: TCheckBox;
chkLP5: TCheckBox;
chkLP6: TCheckBox;
chkLP7: TCheckBox;
chkLP8: TCheckBox;
chkLP9: TCheckBox;
btnAdd: TBitBtn;
btnEdit: TBitBtn;
btnDel: TBitBtn;
btnSave: TBitBtn;
btnCancel: TBitBtn;
btnClose: TBitBtn;
Label1: TLabel;
edName: TEdit;
Label2: TLabel;
edPass: TEdit;
cxGridDBTableView2DBColumn1: TcxGridDBColumn;
cxGridDBTableView2DBColumn2: TcxGridDBColumn;
cxGridDBTableView2DBColumn3: TcxGridDBColumn;
cxGridDBTableView2DBColumn4: TcxGridDBColumn;
cxGridDBTableView2DBColumn5: TcxGridDBColumn;
cxGridDBTableView2DBColumn6: TcxGridDBColumn;
cxGridDBTableView2DBColumn7: TcxGridDBColumn;
cxGridDBTableView2DBColumn8: TcxGridDBColumn;
cxGridDBTableView2DBColumn9: TcxGridDBColumn;
cxGridDBTableView2DBColumn10: TcxGridDBColumn;
cxGridDBTableView2DBColumn11: TcxGridDBColumn;
procedure FormShow(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure cxGridDBTableView2CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure cxGridDBTableView2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure edPassEnter(Sender: TObject);
procedure edPassClick(Sender: TObject);
private
{ Private declarations }
Procedure ClsText();
Procedure TextEnable(boo:Boolean);
Procedure LoadData();
Procedure Conn();
Function BooToStr(Boo:Boolean):String;
public
{ Public declarations }
end;
var
frmUser: TfrmUser;
implementation
uses DMU, frmQAU, frmMainU;
{$R *.dfm}
var
ifAdd:Boolean;
strpass:String;
procedure TfrmUser.ClsText;
begin
chkLP1.Checked:=False;
chkLP2.Checked:=False;
chkLp3.Checked:=False;
chkLP4.Checked:=False;
chkLP5.Checked:=False;
chkLp6.Checked:=False;
chkLP7.Checked:=False;
chkLP8.Checked:=False;
chkLP9.Checked:=False;
edName.Clear;
edPass.Clear;
end;
procedure TfrmUser.FormShow(Sender: TObject);
begin
ifAdd:=True;
Conn();
ClsText();
LoadData();
TextEnable(False);
end;
procedure TfrmUser.TextEnable(boo: Boolean);
begin
edPass.Enabled:=boo;
btnAdd.Enabled:=not boo;
btnEdit.Enabled:=not boo;
btnDel.Enabled:=not boo;
btnSave.Enabled:=boo;
btnCancel.Enabled:=boo;
btnClose.Enabled:=not boo;
cxGridUser.Enabled:=not boo;
if (Dm.adoUser2.FieldByName('Name').AsString='Admin') and (ifAdd=False) then
exit;
chkLP1.Enabled:=boo;
chkLP2.Enabled:=boo;
chkLP3.Enabled:=boo;
chkLP4.Enabled:=boo;
chkLP5.Enabled:=boo;
chkLP6.Enabled:=boo;
chkLP7.Enabled:=boo;
chkLP8.Enabled:=boo;
chkLP9.Enabled:=boo;
edName.Enabled:=boo;
end;
procedure TfrmUser.btnCloseClick(Sender: TObject);
begin
Dm.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='select * from qa';
DM.adoTemp.Open;
if DM.adoTemp.RecordCount<>1 then
begin
MessageBox(0,'请为Admin帐号设置一个问题和答案,该问题和答案可以在你忘记Admin帐号的密码时使用。','提示',MB_OK+MB_TASKMODAL+MB_ICONEXCLAMATION);
frmQA.ShowModal;
end;
Dm.adoTemp.Close;
close;
end;
procedure TfrmUser.LoadData;
begin
chkLP1.Checked:=Boolean(Dm.adoUser2.FieldByName('lp1').AsInteger);
chkLP2.Checked:=Boolean(Dm.adoUser2.FieldByName('lp2').AsInteger);
chkLP3.Checked:=Boolean(Dm.adoUser2.FieldByName('lp3').AsInteger);
chkLP4.Checked:=Boolean(Dm.adoUser2.FieldByName('lp4').AsInteger);
chkLP5.Checked:=Boolean(Dm.adoUser2.FieldByName('lp5').AsInteger);
chkLP6.Checked:=Boolean(Dm.adoUser2.FieldByName('lp6').AsInteger);
chkLP7.Checked:=Boolean(Dm.adoUser2.FieldByName('lp7').AsInteger);
chkLP8.Checked:=Boolean(Dm.adoUser2.FieldByName('lp8').AsInteger);
chkLP9.Checked:=Boolean(Dm.adoUser2.FieldByName('lp9').AsInteger);
edName.Text:=Dm.adoUser2.FieldByName('Name').AsString;
edPass.Text:=Dm.adoUser2.FieldByName('Pass').AsString;
strPass:=edPass.Text;
end;
procedure TfrmUser.Conn;
begin
Dm.adoUser2.Close;
Dm.adoUser2.SQL.Clear;
Dm.adoUser2.SQL.Text:='select * from lpUser';
Dm.adoUser2.Open;
end;
procedure TfrmUser.btnDelClick(Sender: TObject);
begin
if DM.adoUser2.FieldByName('name').AsString='Admin' then
begin
MessageBox(0,'不能删除系统管理员帐号','提示',MB_OK+MB_TASKMODAL+MB_ICONEXCLAMATION);
exit;
end;
if MessageBox(0,Pchar('真的要删除用户“'+Dm.adoUser2.FieldByName('Name').AsString+'”的用户吗?'),'提示',MB_OKCANCEL+MB_TASKMODAL+MB_ICONQUESTION)=IDOK then
begin
if DM.adoUser2.FieldByName('Name').AsString=Dm.adoLP.FieldByName('Name').AsString then
begin
if MessageBox(0,Pchar('你正要删除对当前系统用户:“'+Dm.adoUser2.FieldByName('Name').AsString+'”'+Chr(13)+'删除系统当前用户后系统会自动断开连接。你真的要删除该用户吗?'),'提示',MB_OKCANCEL+MB_TASKMODAL+MB_ICONQUESTION)=IDOK then
begin
Dm.adoUser2.Delete;
frmMain.LogonEnable(False);
frmUser.Close;
Dm.adoCon.Close;
end;
end
else
Dm.adoUser2.Delete;
end;
end;
procedure TfrmUser.btnAddClick(Sender: TObject);
begin
ifAdd:=True;
ClsText();
TextEnable(True);
end;
procedure TfrmUser.btnEditClick(Sender: TObject);
begin
if (DM.adoLP.FieldByName('Name').AsString<>'Admin') and (Dm.adoUser2.FieldByName('Name').AsString='Admin') then
begin
MessageBox(0,'当前用户不是系统管理员,不能修改系统管理员帐号。','错误',MB_OK+MB_TASKMODAL+MB_ICONSTOP);
exit;
end;
ifAdd:=False;
TextEnable(True);
edName.Enabled:=False;
end;
procedure TfrmUser.btnCancelClick(Sender: TObject);
begin
TextEnable(False);
LoadData();
end;
procedure TfrmUser.btnSaveClick(Sender: TObject);
begin
if ifAdd then
begin
DM.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='select * from lpUser where name='+QuotedStr(edName.Text);
DM.adoTemp.Open;
if Dm.adoTemp.RecordCount<>0 then
begin
MessageBox(0,'用户名不能重复。','提示',MB_OK+MB_TASKMODAL+MB_ICONEXCLAMATION);
edName.SetFocus;
Dm.adoTemp.Close;
exit;
end;
Dm.adoTemp.Close;
Dm.adoUser2.Append;
end
else
Dm.adoUser2.Edit;
Dm.adoUser2.FieldByName('Name').AsString:=edName.Text;
if edPass.Text<>strPass then
Dm.adoUser2.FieldByName('Pass').AsString:=Dm.MD5(edPass.Text);
if edPass.Text='' then
Dm.adoUser2.FieldByName('Pass').AsString:='';
Dm.adoUser2.FieldByName('lp1').AsString:=BooToStr(chkLP1.Checked);
Dm.adoUser2.FieldByName('lp2').AsString:=BooToStr(chkLP2.Checked);
Dm.adoUser2.FieldByName('lp3').AsString:=BooToStr(chkLP3.Checked);
Dm.adoUser2.FieldByName('lp4').AsString:=BooToStr(chkLP4.Checked);
Dm.adoUser2.FieldByName('lp5').AsString:=BooToStr(chkLP5.Checked);
Dm.adoUser2.FieldByName('lp6').AsString:=BooToStr(chkLP6.Checked);
Dm.adoUser2.FieldByName('lp7').AsString:=BooToStr(chkLP7.Checked);
Dm.adoUser2.FieldByName('lp8').AsString:=BooToStr(chkLP8.Checked);
Dm.adoUser2.FieldByName('lp9').AsString:=BooToStr(chkLP9.Checked);
DM.adoUser2.Post;
if Dm.adoLP.FieldByName('name').AsString=edName.Text then
Dm.adoLpCon(True,edName.Text);
TextEnable(False);
LoadData();
end;
function TfrmUser.BooToStr(Boo: Boolean): String;
begin
if boo then
Result:='1'
else
Result:='0';
end;
procedure TfrmUser.cxGridDBTableView2CellClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
LoadData();
end;
procedure TfrmUser.cxGridDBTableView2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
LoadData();
end;
procedure TfrmUser.edPassEnter(Sender: TObject);
begin
edPass.SelectAll;
end;
procedure TfrmUser.edPassClick(Sender: TObject);
begin
edPass.SelectAll;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -