📄 user_right.pas
字号:
unit User_Right;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, CheckLst;
type
Tfrm_User_Right = class(TForm)
Panel1: TPanel;
GroupBox3: TGroupBox;
Panel3: TPanel;
Panel4: TPanel;
CheckListBox1: TCheckListBox;
Panel5: TPanel;
SpeedButton1: TSpeedButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Panel2: TPanel;
Label1: TLabel;
GroupBox1: TGroupBox;
Panel6: TPanel;
Label2: TLabel;
EditUser_Type: TComboBox;
EditUser_Name: TComboBox;
Label3: TLabel;
EditUser_ID: TLabeledEdit;
Edit_Right: TEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure EditUser_NameChange(Sender: TObject);
procedure EditUser_TypeChange(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_User_Right: Tfrm_User_Right;
Right :string;//局部权限定义
i :Integer;
implementation
uses Data, func;
{$R *.dfm}
procedure Tfrm_User_Right.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=Cafree;
end;
procedure Tfrm_User_Right.FormShow(Sender: TObject);
begin
with frm_data.Query_Login do
begin
Edituser_Type.Clear;
EditUser_Name.Clear;
Close;
Sql.Clear;
Sql.Add('SELECT Distinct User_Type FROM [Login]');
Try
Prepared;
Open;
while not eof do
begin
Edituser_Type.Items.Add(frm_data.Query_Login.FieldByName('User_Type').AsString);
Next;
end;
except
Application.MessageBox('系统错误!在打开数据表【LOGIN】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
Exit;
End;
end;
end;
procedure Tfrm_User_Right.EditUser_NameChange(Sender: TObject);
begin
//
//**************************************************************************
//把符合条件的用户ID过滤出来并加载到文本筐里
with frm_data.Query_Login do
begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM [Login] WHERE User_Type='''+Trim(EditUser_Type.Text)+''' and User_Name='''+Trim(EditUser_Name.Text)+''' ');
Try
Prepared;
Open;
EditUser_ID.Text:=frm_data.Query_Login.FieldByName('User_ID').AsString;
Except
Application.MessageBox('系统错误!在打开数据表【LOGIN】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
Exit;
End
end;
//**************************************************************************
//
//--------------------------------------------------------------------------
//提取现有权限
with frm_data.Query_User_Right do
begin
Close;
Sql.Clear;
Sql.Add('Select * from [User_Right] where User_ID='''+Trim(EditUser_ID.Text)+'''');
Try
Prepared;
Open;
Pub_Right:='';
if frm_data.Query_User_Right.RecordCount>0 then
begin
First;
while not Eof do
begin
Right:=Right+frm_data.Query_User_Right.FieldByName('Right_Name').AsString+',';
Next ;
end;
for i:=0 to checklistbox1.Count-1 do
begin
if pos(checklistbox1.Items.Strings[i],right)>0 then
begin
checklistbox1.Checked[i]:=true
end
else
begin
checklistbox1.Checked[i]:=false;
end;
end;
end;
if frm_data.Query_User_Right.RecordCount<=0 then
begin
for i:=0 to checklistbox1.Count-1 do
begin
checklistbox1.Checked[i]:=false;
end;
end;
Except
Application.MessageBox('系统错误!在打开数据表【User_Right】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
Exit;
End;
end;
//--------------------------------------------------------------------------
end;
procedure Tfrm_User_Right.EditUser_TypeChange(Sender: TObject);
begin
with frm_data.Query_Login do
begin
EditUser_Name.Clear;
Close;
Sql.Clear;
Sql.Add('SELECT User_Name FROM [Login] WHERE User_Type='''+Trim(EditUser_Type.Text)+'''');
Try
Prepared;
Open;
while not eof do
begin
EditUser_Name.Items.Add(frm_data.Query_Login.FieldByName('User_Name').AsString);
Next;
end;
except
Application.MessageBox('系统错误!在打开数据表【LOGIN】时与远程服务器连接错误!请确认!',Pchar(Application.Title),MB_ICONWARNing);
Exit;
End;
end;
end;
procedure Tfrm_User_Right.RadioButton1Click(Sender: TObject);
begin
if trim(EditUser_ID.Text)='' then
begin
Application.MessageBox('操作失败,【用户姓名】不能为空,请确认!',Pchar(application.Title),MB_ICONWarning);
RadioButton1.Checked:=false;
exit;
end
else
begin
for i:=0 to checklistbox1.Count-1 do
begin
Checklistbox1.Checked[i]:=true;
end;
end;
end;
procedure Tfrm_User_Right.RadioButton2Click(Sender: TObject);
begin
for i:=0 to checklistbox1.Count-1 do
begin
Checklistbox1.Checked[i]:=False;
end;
end;
procedure Tfrm_User_Right.SpeedButton1Click(Sender: TObject);
begin
if trim(EditUser_ID.Text)='' then
begin
Application.MessageBox('操作失败,【用户姓名】不能为空,请确认!',Pchar(application.Title),MB_ICONWarning);
RadioButton1.Checked:=false;
Exit;
end;
with frm_data.Query_User_Right do
begin
Close;
Sql.Clear;
Sql.Add('delete [User_Right] where User_ID='''+Trim(EditUser_ID.Text)+'''');
Try
Prepared;
ExecSql;
for i:=0 to checklistbox1.Items.Count-1 do
begin
if checklistbox1.Checked[i] then
begin
with frm_data.Query_User_Right do
begin
Close;
Sql.Clear;
Sql.Add('insert into [User_Right] (User_ID,Right_Name) values (:User_ID,:Right_Name)');
frm_data.Query_User_Right.Parameters[0].Value:=Trim(EditUser_ID.Text);
frm_data.Query_User_Right.Parameters[1].Value:=checklistbox1.Items[i];
Try
Prepared;
ExecSql;
Except
Application.MessageBox('系统错误,系统在保存数据表【User_Right】时出错!,请确认!',Pchar(application.Title),MB_ICONWarning);
Exit;
End;
end;
end;
end;
Application.MessageBox('权限设置完成!请确认!',Pchar(application.Title),MB_ICONWarning);
Except
Application.MessageBox('系统错误,系统在删除数据表【User_Right】时出错!,请确认!',Pchar(application.Title),MB_ICONWarning);
Exit;
End;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -