⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_s_grouppas.pas

📁 是一个用delphi设计的考勤系统
💻 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 + -