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

📄 role.pas

📁 服装厂管理系统源程序压缩包, 请耐心阅读提供的文件包含的内容
💻 PAS
字号:
unit Role;

interface

uses
  Windows, Messages, SysUtils,DB, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, CheckLst, Grids, DBGrids, Mask, DBCtrls,
  ExtCtrls,Menus,ComCtrls, ToolWin,ADODB;

type
  TForm_Role = class(TForm)
    DataSource1: TDataSource;
    Panel_down: TPanel;
    Label1: TLabel;
    Panel_button: TPanel;
    AppendBtn: TBitBtn;
    EditBtn: TBitBtn;
    DeleteBtn: TBitBtn;
    BitBtn3: TBitBtn;
    saveBtn: TBitBtn;
    CancelBtn: TBitBtn;
    P_main: TPanel;
    Panel1: TPanel;
    CBx_00: TCheckListBox;
    Label2: TLabel;
    CBx_01: TCheckListBox;
    CBx_02: TCheckListBox;
    CBx_04: TCheckListBox;
    DBGrid1: TDBGrid;
    SelallBtn: TBitBtn;
    ClearBtn: TBitBtn;
    UserManagerBtn: TBitBtn;
    Label3: TLabel;
    Label6: TLabel;
    Label4: TLabel;
    CBx_03: TCheckListBox;
    Label5: TLabel;
    E_name: TDBEdit;
    procedure SelallBtnClick(Sender: TObject);
    procedure ClearBtnClick(Sender: TObject);
    procedure AppendBtnClick(Sender: TObject);
    procedure DeleteBtnClick(Sender: TObject);
    procedure EditBtnClick(Sender: TObject);
    procedure saveBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure UserManagerBtnClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    B_create:boolean;
    edit_teamname:string;
    procedure refreshdb;
    procedure invalidation_control;
    procedure active_control;
  public
    { Public declarations }
    procedure Setfunctionitem();
    function  Getfunctionitem():boolean;
  end;

var
  Form_Role: TForm_Role;
  Power_array:array[0..19,0..29]of char;
implementation
uses data,sharevar,sharefun, Admin;

{$R *.dfm} 

procedure TForm_role.refreshdb;
begin
  with DataMod.ADOQteam do
  begin
      try
         close;
         sql.clear;
         sql.Add('select * from teampower');
         execsql;
         open;
      except
         MsgErr(handle,'刷新数据库失败(teampower_Q)!');
      end;
  end;
end;

procedure TForm_role.invalidation_control;
begin
  panel1.Enabled :=false;
  e_name.Enabled :=false;
  DBGrid1.Enabled :=true;
  SelAllBtn.Enabled :=false;
  ClearBtn.Enabled :=false;
  EditBtn.Enabled:=true;
  DeleteBtn.Enabled:=true;
  AppendBtn.Enabled:=true;
  if curAdmin.team_power[4][2]='0' then
  begin
    UserManagerBtn.Enabled:=false;
    exit;
  end;
  UserManagerBtn.Enabled :=true;
end;

procedure TForm_role.active_control;
begin
  DBGrid1.Enabled :=false;
  panel1.Enabled :=true;
  ClearBtn.Enabled :=true;
  SelAllBtn.Enabled :=true;
  if DataMod.ADOQteam.State in [dsinsert] then ClearBtn.Click;
  UserManagerBtn.Enabled :=false;
  EditBtn.Enabled:=false;
  DeleteBtn.Enabled:=false;
  AppendBtn.Enabled:=false;
  e_name.Enabled :=true;
  e_name.SetFocus;
end;

procedure TForm_Role.FormCreate(Sender: TObject);
begin
  B_create:=false;
  refreshdb;
  B_create:=DataMod.ADOQteam.Active;
end;

procedure TForm_Role.FormShow(Sender: TObject);
begin
  fillchar(Power_array,sizeof(Power_array),'0');
  if curAdmin.team_power[4][2]='0' then
  begin
    UserManagerBtn.Enabled:=false;
    UserManagerBtn.Visible:=false;
  end;
end;

procedure TForm_Role.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DataMod.ADOQteam.Close;
  action:=cafree;
end;

procedure TForm_Role.SelallBtnClick(Sender: TObject);
var
      i,j:integer;
      subobj:TCheckListBox;
begin  
  for i:=0 to panel1.ControlCount -1 do
  if panel1.Controls[i].ClassType = TCheckListBox then
  begin
           subobj:=(panel1.Controls[i] as TCheckListBox);
           for j:=0 to subobj.Count-1 do subobj.Checked[j] :=true;
  end;
end;

procedure TForm_Role.ClearBtnClick(Sender: TObject);
var
      i,j:integer;
      subobj:TCheckListBox;
begin  
  for i:=0 to panel1.ControlCount -1 do
  if panel1.Controls[i].ClassType = TCheckListBox then
  begin
           subobj:=(panel1.Controls[i] as TCheckListBox);
           for j:=0 to subobj.Count-1 do subobj.Checked[j] :=false;
  end;
end;

procedure TForm_Role.AppendBtnClick(Sender: TObject);
var
MaxID:integer;
begin

  GetMaxID(DataMod.ADOCon,'teampower','team_id',MaxID);

  if DataMod.ADOQteam.State in [dsedit,dsinsert] then  exit;

  with DataMod.ADOQteam do
  begin
        append;
        FieldValues['team_id']:=MaxID;
        FieldValues['team_name']:='';
  end;
  active_control;
end;

procedure TForm_Role.DeleteBtnClick(Sender: TObject);
var
team_name:string;
begin
  if DataMod.ADOQteam.State in [dsedit,dsinsert] then  exit;
  if DataMod.ADOQteam.RecordCount<=0 then exit;
  team_name:=DataMod.ADOQteam.FieldValues['team_name'];
  if MsgQst(handle,'确定删除权限组 ['+team_name+'] 吗?') =IDYES then
  begin
        panel1.Enabled :=false;
        e_name.Enabled :=false;
        UserManagerBtn.Enabled :=true;
        try
          DataMod.ADOQteam.Delete;
        except
          MsgOk(handle,'用户表中有该组的操作员,请先删除对应操作员或更改其权限组!');
          exit;
        end;
        refreshdb;
  end;
end;

procedure TForm_Role.EditBtnClick(Sender: TObject);
begin  
  if DataMod.ADOQteam.State in [dsedit,dsinsert] then  exit;
  if DataMod.ADOQteam.RecordCount<=0 then exit;
  edit_teamname:=DataMod.ADOQteam.FieldValues['team_name'];
  DataMod.ADOQteam.Edit;
  active_control;
end;

procedure TForm_Role.saveBtnClick(Sender: TObject);
var info, team_name:string;
team_id:integer;
begin
        team_name:=trim(e_name.text);
        if not (DataMod.ADOQteam.State in[dsedit,dsinsert]) then exit;
        if team_name='' then
        begin
                MsgErr(handle,'权组名不能为空!',);
                e_name.SetFocus;
                exit;
        end;

        if (DataMod.ADOQteam.State in[dsinsert]) and findRec('teampower','team_name',team_name,info) then
        begin
          MsgOK(handle,'权限组名:['+team_name+']已存在!');
          e_name.SetFocus;
          exit;
        end;

        if DataMod.ADOQteam.State in [dsedit] then
        begin
          if trim(team_name)<>trim(edit_teamname) then
          if findRec('teampower','team_name',team_name,info) then
          begin
            MsgOK(handle,'权限组名:['+team_name+']已存在!');
            e_name.SetFocus;
            exit;
          end;
        end;

        //处理功能项
        if not Getfunctionitem()then
        begin
                MsgOK(handle,'你必须选择功能项,否则增加不成功!');
                exit;
        end;
        DataMod.ADOQteam.FieldByName('team_name').AsString :=e_name.Text;
        DataMod.ADOQteam.FieldByName('power1').AsString :=power_array[0];
        DataMod.ADOQteam.FieldByName('power2').AsString :=power_array[1];
        DataMod.ADOQteam.FieldByName('power3').AsString :=power_array[2];
        DataMod.ADOQteam.FieldByName('power4').AsString :=power_array[3];
        DataMod.ADOQteam.FieldByName('power5').AsString :=power_array[4];
        DataMod.ADOQteam.FieldByName('power6').AsString :=power_array[5];
        DataMod.ADOQteam.FieldByName('power7').AsString :=power_array[6];
        DataMod.ADOQteam.FieldByName('power8').AsString :=power_array[7];
        DataMod.ADOQteam.FieldByName('power9').AsString :=power_array[8];
        DataMod.ADOQteam.FieldByName('power10').AsString :=power_array[9];
        DataMod.ADOQteam.FieldByName('power11').AsString :=power_array[10];
        DataMod.ADOQteam.FieldByName('power12').AsString :=power_array[11];
        DataMod.ADOQteam.FieldByName('power13').AsString :=power_array[12];
        DataMod.ADOQteam.FieldByName('power14').AsString :=power_array[13];
        DataMod.ADOQteam.FieldByName('power15').AsString :=power_array[14];
        DataMod.ADOQteam.FieldByName('power16').AsString :=power_array[15];
        DataMod.ADOQteam.FieldByName('power17').AsString :=power_array[16];
        DataMod.ADOQteam.FieldByName('power18').AsString :=power_array[17];
        DataMod.ADOQteam.FieldByName('power19').AsString :=power_array[18];
        DataMod.ADOQteam.FieldByName('power20').AsString :=power_array[19];
        try
          team_id:=DataMod.ADOQteam.FieldValues['team_id'];
          DataMod.ADOQteam.post;
        except
          MsgErr(handle,'权限组操作失败!');
        end;
        invalidation_control;
        if curAdmin.user_team_id = team_id then
        if not CBx_04.Checked[2] then
        begin
          UserManagerBtn.Enabled:=false;
          UserManagerBtn.Visible:=false;
        end
        else
        begin
          UserManagerBtn.Enabled:=true;
          UserManagerBtn.Visible:=true;
        end;
        refreshdb;
end;

procedure TForm_Role.CancelBtnClick(Sender: TObject);
begin
  if not (DataMod.ADOQteam.State in [dsedit,dsinsert]) then exit;
  DataMod.ADOQteam.Cancel;
  invalidation_control;
end;

procedure TForm_Role.DataSource1DataChange(Sender: TObject; Field: TField);
var
tmpstr:string;
begin
   with DataMod.ADOQteam do
   begin
        if not Active then exit;
        if (State in [dsinsert,dsedit]) then exit;
        tmpstr:=FieldValues['power1'];
        strPcopy(Power_array[0],tmpstr);
        tmpstr:=FieldValues['power2'];
        strPcopy(Power_array[1],tmpstr);
        tmpstr:=FieldValues['power3'];
        strPcopy(Power_array[2],tmpstr);
        tmpstr:=FieldValues['power4'];
        strPcopy(Power_array[3],tmpstr);
        tmpstr:=FieldValues['power5'];
        strPcopy(Power_array[4],tmpstr);
        tmpstr:=FieldValues['power6'];
        strPcopy(Power_array[5],tmpstr);
        tmpstr:=FieldValues['power7'];
        strPcopy(Power_array[6],tmpstr);
        tmpstr:=FieldValues['power8'];
        strPcopy(Power_array[7],tmpstr);
        tmpstr:=FieldValues['power9'];
        strPcopy(Power_array[8],tmpstr);
        tmpstr:=FieldValues['power10'];
        strPcopy(Power_array[9],tmpstr);
        tmpstr:=FieldValues['power11'];
        strPcopy(Power_array[10],tmpstr);
        tmpstr:=FieldValues['power12'];
        strPcopy(Power_array[11],tmpstr);
        tmpstr:=FieldValues['power13'];
        strPcopy(Power_array[12],tmpstr);
        tmpstr:=FieldValues['power14'];
        strPcopy(Power_array[13],tmpstr);
        tmpstr:=FieldValues['power15'];
        strPcopy(Power_array[14],tmpstr);
        tmpstr:=FieldValues['power16'];
        strPcopy(Power_array[15],tmpstr);
        tmpstr:=FieldValues['power17'];
        strPcopy(Power_array[16],tmpstr);
        tmpstr:=FieldValues['power18'];
        strPcopy(Power_array[17],tmpstr);
        tmpstr:=FieldValues['power19'];
        strPcopy(Power_array[18],tmpstr);
        tmpstr:=FieldValues['power20'];
        strPcopy(Power_array[19],tmpstr);
        Setfunctionitem();
   end;
end;

procedure TForm_Role.FormPaint(Sender: TObject);
begin  
  if not B_create then close;
end;

//显示对应权限的权限于 [Checklistbox]
procedure TForm_Role.Setfunctionitem;
var
      i,j,objindex:integer;
      subobj:TCheckListBox;
begin
 for i:=0 to panel1.ControlCount -1 do
 begin
        if panel1.Controls[i].ClassType = TCheckListBox then
        begin
           subobj:=(panel1.Controls[i] as TCheckListBox);
           objindex:=strtoint(copy(subobj.Name,length(subobj.Name),2)); 
           for j:=0 to subobj.Count-1 do
           begin
                 if power_array[objindex][j]='1' then
                      subobj.Checked[j] :=true
                 else
                      subobj.Checked[j] :=false;
           end;
        end;
 end;
end;

//将对应 [Checklistbox] 内的BOOLEAN 值赋给数组 [power_array]
function TForm_Role.Getfunctionitem():boolean;
var
      i,j,objindex:integer;
      subobj:TCheckListBox;
begin  
 result:=false;
 for i:=0 to panel1.ControlCount -1 do
 begin
        if panel1.Controls[i].ClassType = TCheckListBox then
        begin
           subobj:=(panel1.Controls[i] as TCheckListBox);
           objindex:=strtoint(copy(subobj.Name,length(subobj.Name)-1,2)); 
           for j:=0 to subobj.Count-1 do
           begin
                 if subobj.Checked[j]then
                 begin
                      power_array[objindex][j]:='1';
                       result:=true;
                 end
                 else
                      power_array[objindex][j]:='0' ;
           end;
        end;
 end;
end;


procedure TForm_Role.UserManagerBtnClick(Sender: TObject);
begin
  if DataMod.ADOQteam.State in [dsedit,dsinsert] then  exit;
  Form_Admin:=TForm_Admin.Create(Application);
  Form_Admin.showmodal;
end;

procedure TForm_Role.BitBtn3Click(Sender: TObject);
begin
  if DataMod.ADOQteam.State in [dsEdit,dsInsert] then
  if MsgQst(handle,'是否保存当数据?')=idyes then
    saveBtn.Click
  else DataMod.ADOQteam.Cancel;
  close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -