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

📄 yhgl.pas

📁 销售帐目管理
💻 PAS
字号:
unit yhgl;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, CheckLst, ComCtrls,
  Buttons,ActnList, ExtCtrls,DB, SUIForm, SUIDlg, SUIButton;

type
  TFrmyhgl = class(TForm)
    suiForm1: TsuiForm;
    Panel4: TPanel;
    Label3: TLabel;
    CheckListBox1: TCheckListBox;
    Panel1: TPanel;
    Label1: TLabel;
    List_user: TListBox;
    Panel2: TPanel;
    suiMessageDialog1: TsuiMessageDialog;
    add_user: TsuiButton;
    cancel_user: TsuiButton;
    delete_user: TsuiButton;
    save_user: TsuiButton;
    procedure FormShow(Sender: TObject);
    function check_user(username:string):string;
    procedure add_userClick(Sender: TObject);
    procedure save_userClick(Sender: TObject);
    procedure cancel_userClick(Sender: TObject);
    procedure delete_userClick(Sender: TObject);
    procedure CheckListBox1ClickCheck(Sender: TObject);
    procedure E_passwordChange(Sender: TObject);
    procedure CheckListBox1Enter(Sender: TObject);
    procedure List_userClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);//自定义函数检索权限
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frmyhgl: TFrmyhgl;

implementation

uses Main, Adduser, ChgPwd, DataModule, PubUnit, DeleteUser;

{$R *.DFM}

//-----------------------获取用户权限列表
function TFrmyhgl.check_user(username:string):string;
begin
   result:='';
   with DataModule1.tbl_Power do begin
     first;
     while not Eof do begin
       if AnsiLowerCase(trim(FieldByName('用户名').AsString))=username then begin
          result:=trim(FieldByName('用户权限').AsString);
          Exit;
       end;
       next;
     end;
   end;
end;

procedure TFrmyhgl.FormShow(Sender: TObject);
var
    i,j,k:integer;
    options:string;
    tmpSuper : integer;
begin
   //搜索用户名
   List_user.Items.Clear ;
   with DataModule1.tbl_Power do begin
     first;
     while not Eof do begin
       List_user.Items.Add(FieldByName('用户名').AsString);
       next;
     end;
   end;
   List_user.ItemIndex :=0;

   //添加菜单选项
   CheckListBox1.Items.clear;
   j:=FrmMain.ComponentCount-1;
   for i:= 0 to j-1 do
     if FrmMain.components[i] is TAction then
        checklistbox1.Items.Add(TAction(FrmMain.components[i]).caption);

   //搜索第一个用户的功能菜单选项
   if list_user.Items.Count > 0 then begin
      tmpSuper := 0 ; Options := '';
      with DataModule1.tbl_Power do begin
        if Locate('用户名',trim(list_user.items[0]),[loCaseInsensitive]) then begin
           powerOptions := trim(FieldByName('用户权限').AsString);
           tmpSuper := FieldByName('用户级别').AsInteger ;
        end;
      end;

      //第一个用户功能菜单选项的状态
      k:=checklistbox1.Items.Count;
      for i:=0 to k - 1 do begin
        if AnsiPos(trim(checklistbox1.Items.Strings[i]),options)>0 then
          checklistbox1.State[i]:=cbchecked;
      end;
      if tmpSuper <> 1 then begin
        checklistbox1.Enabled := false;
        Add_user.Enabled := false;
        Delete_user.Enabled := false;
      end else begin
        Add_user.Enabled := true;
        Delete_user.Enabled := true;
        checklistbox1.Enabled := true;
      end;
   end;
   checklistbox1.Enabled := (Super = 1);
   Add_user.Enabled := (Super = 1);
   Delete_user.Enabled := (Super = 1);
end;

//----------------------添加用户
procedure TFrmyhgl.add_userClick(Sender: TObject);
var FrmAdduser : TFrmAdduser;
begin
  FrmAdduser:=TFrmAdduser.Create(self);
  FrmAddUser.ShowModal ;
  FrmAddUser.Free;
  Self.FormShow(nil);
end;

//--------------------------保存用户的更改
procedure TFrmyhgl.save_userClick(Sender: TObject);
var i:integer;
    options:string;
    username:string;
    locatesuccess:boolean;
    searchoptions:TLocateOptions;
begin
  searchoptions:=[loPartialKey];
  username:=trim(list_user.items[list_user.itemindex]);

  //搜索功能菜单
  options:='';
  for i:=0 to checklistbox1.Items.Count -1 do
     if checklistbox1.Checked[i] then
        options:=options +'['+ checklistbox1.Items.Strings[i]+']';

  with DataModule1.tbl_Power do begin
       locatesuccess:=locate('用户名',username,searchoptions);
       if locatesuccess then begin
          Edit;
          fieldvalues['用户权限']:=powerOptions ;
          save_user.Enabled :=false;
          cancel_user.Enabled :=true;
          delete_user.Enabled :=true;
       end;
  end;
  save_user.Enabled :=false;
  cancel_user.Enabled :=true;
  delete_user.Enabled :=true;
end;

//------------------更改用户口令
procedure TFrmyhgl.cancel_userClick(Sender: TObject);
var
    username:string;
    locatesuccess:boolean;
    searchoptions:TLocateOptions;
    Frmchgpwd : TFrmchgpwd;
begin
   searchoptions:=[loPartialKey];
   if list_user.ItemIndex = -1 then begin
      Application.MessageBox('请选择用户!','提示',mb_iconwarning);
      exit;
   end;
   username:=trim(list_user.items[list_user.itemindex]);
   with DataModule1.tbl_Power do begin
    locatesuccess:=locate('用户名',username,searchoptions);
    if locatesuccess then begin
       Frmchgpwd:=TFrmchgpwd.Create(self);
       Frmchgpwd.label_user.Caption := '更改用户'+username+'的密码。';
       FrmChgpwd.ShowModal ;
       FrmChgPwd.Free;
    end else begin
       suiMessageDialog1.ButtonCount := 1;
       suiMessageDialog1.Button1Caption := '确定(&S)';
       suiMessageDialog1.Button1ModalResult := mrOK;
       suiMessageDialog1.Caption := Self.Caption ;
       suiMessageDialog1.IconType := suiStop;
       suiMessageDialog1.Text := '该用户在用户列表中不存在!';
       suiMessageDialog1.ShowModal ;
       Exit;
    end;
   end;
end;

//-------------------删除用户
procedure TFrmyhgl.delete_userClick(Sender: TObject);
var
    username:string;
    locatesuccess:boolean;
    searchoptions:TLocateOptions;
    i : integer;
    FrmDeleteUser : TFrmDelete;
begin
  if List_User.ItemIndex < 0 then Exit;
  searchoptions:=[loPartialKey];
  username:=trim(list_user.items[list_user.itemindex]);
//  tmpSuper := 0;
{  with DM1.tbluser do begin
    locatesuccess:=locate('username',username,searchoptions);
    if locatesuccess then begin
       tmpSuper := FieldByName('Super').AsInteger ;
       if Application.MessageBox('是否删除该用户?','询问',mb_YesNo+mb_IconWarning)=idYes then
          delete
       else exit;
    end;
  end;
  with DM1.tblUser do begin
    First;
    while not Eof do begin
      if FieldByName('Super').AsInteger = 1 then
         if Super = 0 then begin
            Next;
            Continue;
         end;
      Strings.Add(Trim(FieldByName('Username').AsString));
      Next;
    end;
  end;}
  if Super = 1 then begin
     FrmDeleteUser := TFrmDelete.Create(Self);
     for i:=0 to List_user.Count-1 do
       FrmDeleteUser.ListBox1.Items.Add(List_User.Items[i]);
     FrmDeleteUser.ShowModal ;
     FrmDeleteUser.Free ;
     Self.OnShow(self);
  end  else begin
     with DataModule1.tbl_Power do begin
       locatesuccess:=locate('用户名',username,searchoptions);
       if locatesuccess then begin
          suiMessageDialog1.ButtonCount := 2;
          suiMessageDialog1.Button1Caption := '是(&Y)';
          suiMessageDialog1.Button2Caption := '否(&N)';
          suiMessageDialog1.Button1ModalResult := mrYes;
          suiMessageDialog1.Button2ModalResult := mrNo;
          suiMessageDialog1.Caption := Self.Caption ;
          suiMessageDialog1.IconType := suiHelp;
          suiMessageDialog1.Text := '是否删除该用户?';
          if suiMessageDialog1.ShowModal = mrYes then 
             Delete
          else
             Exit;
       end;
     end;
     list_user.Items.Delete(list_user.itemindex);
  end;
end;

//-------------如果修改了功能菜单项,则保存按纽起作用
procedure TFrmyhgl.CheckListBox1ClickCheck(Sender: TObject);
begin
   save_user.Enabled :=true;
end;

procedure TFrmyhgl.E_passwordChange(Sender: TObject);
begin
  save_user.Enabled :=true;
end;

procedure TFrmyhgl.CheckListBox1Enter(Sender: TObject);
begin
if UpperCase(LoginUser) <> 'SUPER' then
  if trim(list_user.Items[list_user.itemindex])='system' then
     checklistbox1.Enabled := false
  else
     checklistbox1.Enabled := true;
end;

//------------------用户名变化,功能菜单跟着改变
procedure TFrmyhgl.List_userClick(Sender: TObject);
var i,j:integer;
    options:string;
    UserName : string;
    tmpSuper : integer;
begin
   if List_User.ItemIndex = -1 then Exit;
   UserName:=List_User.Items[List_User.ItemIndex];
   //改变菜单选项
   j:=checklistbox1.items.count;
   for i:= 0 to j-1 do
     if checklistbox1.Checked[i] then
        checklistbox1.State[i]:=cbUnChecked;

   tmpSuper := 0 ; Options := '';
   with DataModule1.tbl_Power do begin
     if Locate('用户名',trim(UserName),[loCaseInsensitive]) then begin
        powerOptions := trim(FieldByName('用户权限').AsString);
        tmpSuper := FieldByName('用户级别').AsInteger ;
     end;
   end;

   for i:=0 to checklistbox1.Items.Count -1 do
       if pos(checklistbox1.Items.Strings[i],options)>0 then
          checklistbox1.State[i]:= cbchecked;
   checklistbox1.Enabled := (Super = 1);
   Add_user.Enabled := (Super = 1);
   Delete_user.Enabled := (Super = 1);
{   if Super <> 1 then begin
     checklistbox1.Enabled := (Super = 1);
     Add_user.Enabled := false;
     Delete_user.Enabled := false;
   end else begin
     Add_user.Enabled := true;
     Delete_user.Enabled := true;
     if tmpSuper = 0 then
        checklistbox1.Enabled := true
     else
        checklistbox1.Enabled := false;
   end;}
end;

procedure TFrmyhgl.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  with DataModule1 do
  begin
    tbl_Power.Next ;
    if tbl_Power.UpdatesPending then
    begin
       suiMessageDialog1.ButtonCount := 2;
       suiMessageDialog1.Button1Caption := '是';
       suiMessageDialog1.Button1ModalResult := mrYes;
       suiMessageDialog1.Button2Caption := '否';
       suiMessageDialog1.Button2ModalResult := mrNo ;
       suiMessageDialog1.Caption := suiForm1.Caption ;
       suiMessageDialog1.IconType := suiHelp ;
       suiMessageDialog1.Text := '是否保存所改变的密码?' ;
       if suiMessageDialog1.ShowModal = mrNo then
       begin
         tbl_Power.CancelUpdates ;
         Exit ;
       end;
       try
         db1.StartTransaction ;
         tbl_Power.ApplyUpdates ;
         tbl_Power.CommitUpdates ;
         db1.Commit ;
       except
         on E : Exception do
         begin
           suiMessageDialog1.ButtonCount := 1;
           suiMessageDialog1.Button1Caption := '确定(&S)';
           suiMessageDialog1.Button1ModalResult := mrOK;
           suiMessageDialog1.Caption := Self.Caption ;
           suiMessageDialog1.IconType := suiStop;
           suiMessageDialog1.Text := '数据错误无法保存:'+E.Message ;
           suiMessageDialog1.ShowModal ;
           tbl_Power.CancelUpdates ;
           db1.Rollback ;
           Abort ;
         end;
       end;
    end;
  end;
end;

procedure TFrmyhgl.FormCreate(Sender: TObject);
begin
  ChangeInterface(Self,suiForm1);

end;

end.

⌨️ 快捷键说明

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