📄 frm_s_grouppas.pas
字号:
unit frm_s_grouppas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ModalForm, Menus, StdCtrls, ExtCtrls, CheckLst, ComCtrls,
YLabelButton, ChangeImage, DB, ADODB, ImgList, UErrDisplay, ModalForm1;
type
Tfrm_s_group = class(TMyModalForm1)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
clbRight: TCheckListBox;
Label1: TLabel;
Panel1: TPanel;
Edit1: TEdit;
chb: TCheckBox;
clbRight1: TCheckListBox;
Label2: TLabel;
Edit2: TEdit;
Image1: TImage;
BtnOk: TChangeImg;
LBtnOk: TLabelB;
BtnExit: TChangeImg;
LBtnExit: TLabelB;
Tv_Right: TTreeView;
ImageList1: TImageList;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure clbRightDblClick(Sender: TObject);
procedure BtnOkClick(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure clbRightClickCheck(Sender: TObject);
procedure Tv_RightDblClick(Sender: TObject);
private
{ Private declarations }
procedure ShowRight;
procedure GetRight(Name: string; bz: string);
procedure change_Right(tvnode: Ttreenode; ImageIndex: integer); //改变权限
public
{ Public declarations }
GroupName: string;
end;
var
frm_s_group: Tfrm_s_group;
implementation
uses DM_DataModal, UTGroup, frm_s_subrightpas;
var
Group: TGroup;
{$R *.dfm}
procedure Tfrm_s_group.FormShow(Sender: TObject);
begin
inherited;
if GroupName <> '' then
begin
Group.GetGroupInfo(GroupName);
edit1.Enabled := False;
edit1.Text := GroupName;
edit2.Text := group.Ms;
chb.Checked := group.Stop <> 0;
GetRight(edit1.Text, '组');
// ShowRight;
end
else
begin
chb.Checked := False;
edit1.Enabled := True;
edit1.Text := '';
edit2.Text := '';
PageControl1.Pages[1].Destroy;
end;
end;
procedure Tfrm_s_group.FormCreate(Sender: TObject);
begin
inherited;
Group := TGroup.create;
end;
procedure Tfrm_s_group.clbRightDblClick(Sender: TObject);
var
i: integer;
begin
inherited;
if clbRight.ItemIndex > -1 then
begin
frm_s_subright := Tfrm_s_subright.Create(self);
frm_s_subright.ParentRight := clbRight1.Items.Strings[clbRight.ItemIndex];
frm_s_subright.Group := Group;
frm_s_subright.ShowModal;
frm_s_subright.Free;
ShowRight;
end;
end;
procedure Tfrm_s_group.ShowRight;
var
i: integer;
s: string;
j: integer;
begin
inherited;
group.UpdateRecGRight;
clbRight.Items.Clear;
clbRight1.Items.Clear;
for i := 0 to group.RightCount - 1 do
begin
if length(group.RecGRight[i].RightNum) = 2 then
begin
j := clbRight.Items.Add(group.RecGRight[i].RightMc);
clbRight1.Items.Add(group.RecGRight[i].RightNum);
if not group.RecGRight[i].Right then
clbRight.State[j] := cbUnchecked
else
begin
if group.RecGRight[i].RightCount = group.RecGRight[i].SubCount then
clbRight.State[j] := cbchecked
else
clbRight.State[j] := cbGrayed;
end;
end;
end;
end;
procedure Tfrm_s_group.BtnOkClick(Sender: TObject);
var
i: integer;
begin
inherited;
Group.GroupName := edit1.Text;
Group.Ms := edit2.Text;
if chb.Checked then
Group.Stop := 1
else
Group.Stop := 0;
if edit1.Enabled then
Group.AddGroup
else
begin
Group.UpdateGroupInfo;
// Group.SaveRight;
end;
close;
end;
procedure Tfrm_s_group.BtnExitClick(Sender: TObject);
begin
inherited;
close;
end;
procedure Tfrm_s_group.clbRightClickCheck(Sender: TObject);
begin
inherited;
if clbRight.ItemIndex > -1 then
begin
group.SetRight(clbRight1.Items.Strings[clbRight.ItemIndex],
clbRight.Checked[clbRight.ItemIndex]);
group.UpdateRecGRight;
end;
end;
procedure Tfrm_s_group.GetRight(Name: string; bz: string);
var
Num: integer; //每级菜单的位数
TvNodeTmp: Ttreenode;
str_RightNum: string; //权限号
i, j: integer;
str_sql: string;
TempQry, GroupQry: TAdoQuery;
begin
try
num := 2;
TempQry := TAdoQuery.Create(nil);
TempQry.Connection := WindData.AdoConn;
GroupQry := TAdoQuery.Create(nil);
GroupQry.Connection := WindData.AdoConn;
with TempQry do
begin
sql.Clear;
sql.Add('select * from Usr_rightinfo order by RightNum');
open;
end;
tv_right.Items.Clear;
tv_right.Items.AddChild(nil, '权限');
tv_right.Items[0].ImageIndex := 3;
tv_right.Items[0].SelectedIndex := 3;
while not TempQry.Eof do
begin
str_RightNum := trim(TempQry.fieldbyname('RightNum').value);
TvNodeTmp := tv_right.Items[0];
if str_RightNum = '02' then
str_RightNum := '02';
for i := 0 to ((length(str_rightNum) div Num) - 2) do
begin
j := strtoint(copy(str_rightNum, i * 2 + 1, 2));
TvNodeTmp := TvNodeTmp.Item[j - 1];
end;
TvNodeTmp := tv_Right.Items.AddChild(TvNodeTmp, TempQry.fieldbyname('RightMemo').value);
str_sql := 'select * from Usr_Right where GroupName=''' + Name + '''';
str_sql := str_sql + ' and RightNum=''' + str_RightNum + '''';
with groupqry do
begin
sql.Clear;
sql.Add(str_sql);
open;
end;
if groupqry.RecordCount = 0 then
begin
TvNodeTmp.ImageIndex := 1;
TvNodeTmp.SelectedIndex := 1;
end
else begin
TvNodeTmp.ImageIndex := 0;
TvNodeTmp.SelectedIndex := 0;
end;
TempQry.Next;
end;
except
// showmessage(str_RightNum);
end;
end;
procedure Tfrm_s_group.change_Right(tvnode: Ttreenode; ImageIndex: integer); //改变权限
var //imageindex为0表示赋予权限,为1表示拒绝权限
i: integer;
StrTmp: string;
Str: string;
str_sql: string;
TTreeNodeTmp: ttreenode;
TempQry: TAdoQuery;
begin
TempQry := TAdoQuery.Create(nil);
TempQry.Connection := WindData.AdoConn;
TvNode.ImageIndex := ImageIndex;
TvNode.SelectedIndex := ImageIndex;
str := ''; //的到权限号
TTreeNodeTmp := tvnode;
while TTreeNodeTmp.Parent <> nil do
begin
StrTmp := inttostr(TTreeNodeTmp.index + 1);
if length(strTmp) = 1 then strtmp := '0' + strtmp;
str := strtmp + str;
TTreeNodeTmp := TTreeNodeTmp.Parent;
end;
if imageindex = 0 then //赋予权限
begin
str_sql := 'insert into Usr_right(GroupName,RightNum,bz) values(''';
str_sql := str_sql + edit1.Text + ''',''';
str_sql := str_sql + str + ''',';
str_sql := str_sql + '''组'')';
with TempQry do
begin
sql.Clear;
sql.Add(str_sql);
ExecSql;
end;
end
else if imageindex = 1 then //拒绝权限
begin
str_sql := 'delete from Usr_right where GroupName=''';
str_sql := str_sql + edit1.Text + ''' and bz=''';
str_sql := str_sql + '组''';
str_sql := str_sql + ' and RightNum=''' + str + '''';
with TempQry do
begin
try
sql.Clear;
sql.add(str_sql);
ExecSQL;
except
end;
end;
end;
for i := 0 to tvnode.Count - 1 do change_Right(tvnode.Item[i], imageIndex); //子节点
end;
procedure Tfrm_s_group.Tv_RightDblClick(Sender: TObject);
begin
inherited;
if tv_right.Items.Count = 0 then exit;
if application.MessageBox('请确认是否改变权限!', '系统提示',
MB_YESNO + mb_iconwarning) = id_no then
exit;
if tv_right.Selected.ImageIndex = 0 then
change_Right(tv_right.Selected, 1)
else
if tv_right.Selected.ImageIndex = 1 then
change_Right(tv_right.Selected, 0);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -