📄 setright.~pas
字号:
unit setright;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, CheckLst, ComCtrls, DBCtrls, Grids, DBGrids,
DB, ADODB;
type
TFormSetRight = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
CheckListBox1: TCheckListBox;
Panel1: TPanel;
Label1: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
TabSheet2: TTabSheet;
Panel2: TPanel;
DX_User: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
T_User: TADOQuery;
T_Userid: TAutoIncField;
T_UserUsername: TWideStringField;
T_UserPassword: TWideStringField;
T_Usertag: TWideStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
procedure ComboBox1CloseUp(Sender: TObject);
private
procedure loadActions;
public
{ Public declarations }
end;
type PItem = ^AItem; //字段列表中的对象
AItem = record
field_name: string; //字段名
field_remark: string; //字段显示名
end;
var
FormSetRight: TFormSetRight;
implementation
uses Main, datamodule, ActnList;
{$R *.dfm}
procedure TFormSetRight.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TFormSetRight.loadActions;
var i: Integer;
act: TActionList;
act_item: PItem;
begin
CheckListBox1.Clear;
act := MainForm.ActionList1;
for i := 0 to act.ActionCount - 1 do
if act.Actions[i].Category = 'Window' then begin
New(act_item);
act_item.field_name := act.Actions[i].Name;
act_item.field_remark := TAction(act.Actions[i]).Caption;
CheckListBox1.AddItem(act_item.field_remark, TObject(act_item));
end;
end;
procedure TFormSetRight.Button1Click(Sender: TObject);
var oper: string;
i: Integer;
act_item: PItem;
begin
oper := trim(ComboBox1.Text);
if oper <> '' then begin
DM.Conn.Execute(Format('delete from UserRight where username=''%s''', [oper]));
for i := 0 to CheckListBox1.Count - 1 do
if CheckListBox1.Checked[i] then begin
act_item := PItem(CheckListBox1.Items.Objects[i]);
DM.Conn.Execute(Format('insert into UserRight(username,funcname) values (''%s'',''%s'')', [oper, act_item.field_name]));
end;
end
else
ShowMessage('请先选择用户');
end;
procedure TFormSetRight.TabSheet1Show(Sender: TObject);
begin
ComboBox1.Items.Text := DM.getrsstring('select distinct username from users where username<>''admin''');
loadActions;
end;
procedure TFormSetRight.FormCreate(Sender: TObject);
begin
PageControl1.ActivePageIndex := 0;
end;
procedure TFormSetRight.TabSheet2Show(Sender: TObject);
begin
T_User.Close;
T_User.SQL.Text := 'select * from Users where username<>''admin''';
T_User.Open;
end;
procedure TFormSetRight.ComboBox1CloseUp(Sender: TObject);
var
strs_tmp: TStringList;
i, j: Integer;
act_item: PItem;
begin
strs_tmp := TStringList.Create;
try
strs_tmp.Text := DM.getrsstring(Format('select funcname from userright where username=''%s''', [ComboBox1.Text]));
for i := 0 to CheckListBox1.Count - 1 do begin
act_item := PItem(CheckListBox1.Items.Objects[i]);
if strs_tmp.IndexOf(act_item.field_name) >= 0 then
CheckListBox1.Checked[i] := true
else
CheckListBox1.Checked[i] := false;
end;
finally
strs_tmp.Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -