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

📄 untbaseright.~pas

📁 是分布式粮库程序,是采用Delphi实现的
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit UntBaseRight;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, ImgList, ExtDlgs, Menus, StdCtrls, ExtCtrls,Db,DBTables,
  Buttons;

type
  TfrmBaseRight = class(TForm)
    pnlLeft: TPanel;
    tvRight: TTreeView;
    pnlRight: TPanel;
    Panel1: TPanel;
    lblName: TLabel;
    lblPassword: TLabel;
    lblLogon: TLabel;
    edtRightName: TEdit;
    stcRightCode: TStaticText;
    redtRgihtMemo: TRichEdit;
    tbAdd: TBitBtn;
    tbEdit: TBitBtn;
    tbDelete: TBitBtn;
    tbRefresh: TBitBtn;
    tbSave: TBitBtn;
    tbCancel: TBitBtn;
    imlUser: TImageList;
    bbtnExit: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure tbAdd1Click(Sender: TObject);
    procedure edtRightNameChange(Sender: TObject);
    procedure tbSave1Click(Sender: TObject);
    procedure tvRightChange(Sender: TObject; Node: TTreeNode);
    procedure tbCancel1Click(Sender: TObject);
    procedure tbEdit1Click(Sender: TObject);
    procedure tbDelete1Click(Sender: TObject);
    procedure tbRefresh1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tbSaveClick(Sender: TObject);
    procedure tbAddClick(Sender: TObject);
    procedure tbEditClick(Sender: TObject);
    procedure tbDeleteClick(Sender: TObject);
    procedure tbRefreshClick(Sender: TObject);
    procedure tbCancelClick(Sender: TObject);
    procedure bbtnExitClick(Sender: TObject);
  private
    { Private declarations }
    TempQuery:Tquery;
    procedure CreateRightTree;
    function GetNextRightCode(sRightCode:string): string;
    function ConnectDatabase:boolean;

  public
    { Public declarations }
    gQuery:TQuery;
  end;

var
  frmBaseRight: TfrmBaseRight;

implementation
  uses UnitDataModul,UntPub;

{$R *.dfm}

function TfrmBaseRight.ConnectDatabase: boolean;
begin
  try
    gQuery:= TQuery.Create(nil);
    gQuery.DatabaseName:='LYDB';
    TempQuery:=TQuery.create(nil);
    TempQuery.DatabaseName:= 'LYDB';
    Result:= True;
  except
    On E: Exception Do
    begin
      Result:= False;
     // MessageBox(pchar('连接数据库有误'),pchar('连接错误'),MB_ICONINFORMATION);
    end;
  end;
end;

procedure TfrmBaseRight.CreateRightTree;
var
  TreeNode,TempNode1,TempNode2: TTreeNode;
  sTempCode:string;
begin
  Try
    tvRight.Items.Clear;
    With gQuery Do
    begin
      SQl.Clear;
      Unprepare;
      SQL.Add('select * from Ent_sys_Rights where substring(PermCode,3,2)=''00'' order by PermCode');
      Prepare;
      Active:= True;
      //加入用户组结点
      TreeNode:= tvRight.Items.AddFirst(nil,'所有权限');
      TreeNode.ImageIndex:= 6;
      TreeNode.SelectedIndex:= 6;
      TreeNode.StateIndex:=6;
      first;
      While Not Eof Do
      begin
        TempNode1:= tvright.Items.AddChild(TreeNode,FieldbyName('PermName').AsString);
        TempNode1.ImageIndex:= 8;
        TempNode1.SelectedIndex:= 8;
        TempNode1.StateIndex:=strtoint(FieldbyName('PermCode').AsString);
        sTempCode:=copy(FieldbyName('PermCode').AsString,1,2);
        //加入用户角色结点
        With TempQuery Do
        begin
          SQL.Clear;
          SQL.Add('select * from Ent_sys_Rights where substring(PermCode,1,2)='''+sTempCode+''' and substring(PermCode,3,2)<>''00'' order by PermCode');
          Prepare;
          Active:= True;
          First;
          While Not Eof Do
          Begin
            TempNode2:= tvRight.Items.AddChild(TempNode1,Fieldbyname('PermName').Asstring);
            TempNode2.ImageIndex:= 9;
            TempNode2.SelectedIndex:= 9;
            TempNode2.StateIndex:=strtoint(FieldbyName('PermCode').AsString);
            sTempCode:=copy(FieldbyName('PermCode').AsString,1,2);
            //加入用户结点
            Next;
          End;
          Active:= False;
        end;
        next;
      end;
      Active:= False;
    end;
  Except
    //MsgBox('无法在树型控件中显示数据库中的数据!','显示',MB_ICONINFORMATION);
  end;
end;

procedure TfrmBaseRight.FormShow(Sender: TObject);
begin
  if not ConnectDatabase  then
    Application.MessageBox('连接数据库出错!', Pchar(_sAppTitle), MB_ICONERROR + MB_OK);
  CreateRightTree;
  edtRightName.Enabled:=false;
  redtRgihtMemo.Enabled:=false;
  tbSave.enabled:=false;
  tbCancel.enabled:=false;
  stcRightCode.Caption:='';
  edtRightName.Text:='';
  redtRgihtMemo.Text:='';
end;

function TfrmBaseRight.GetNextRightCode(sRightCode:string): string;
var
  sStr,sTemp:string;
  iTemp:integer;
begin
  //得到下一个权限类别的代码
  if sRightCode='' then
  begin
    With gQuery Do
    begin
      SQl.Clear;
      Unprepare;
      SQL.Add('select isnull(Max(PermCode),''00000000'') as MaxPermCode from Ent_sys_Rights ');
      Prepare;
      Active:= True;
      sStr:=fieldbyname('MaxPermCode').AsString;
    end;
      sStr:='00'+inttostr(strtoint(Copy(sStr,1,2))+1)+'000000';
      iTemp:=Length(sstr)-8+1;
      result:=copy(sStr,iTemp,8);
  end
  else
  begin
    With gQuery Do
    begin
      SQl.Clear;
      Unprepare;
      sTemp:=copy(sRightCode,1,2);
      SQL.Add('select Max(PermCode) as MaxPermCode from Ent_sys_Rights where substring(PermCode,1,2)='''+sTemp+'''');
      Prepare;
      Active:= True;
      sStr:=fieldbyname('MaxPermCode').AsString;
    end;
    sTemp:=copy(sStr,1,2);
    sStr:='00'+inttostr(strtoint(Copy(sStr,3,2))+1)+'0000';
    iTemp:=Length(sstr)-6+1;
    sStr:=sTemp+copy(sStr,iTemp,6);
    result:=sStr;
  end;
end;

procedure TfrmBaseRight.tbAdd1Click(Sender: TObject);
var
  newNode:Ttreenode;
  sCode,sRightCode:string;
begin
  if tvRight.Selected.Level=0 then
  begin
    tbAdd.enabled:= False;
    tbEdit.enabled:= False;
    tbDelete.enabled:= False;
    tbRefresh.enabled:= False;
    tbSave.enabled:=true;
    tbCancel.enabled:=true;
    //清空编辑框
    edtRightName.Clear;
    redtRgihtMemo.Clear;
    newNode:=tvright.Items.AddChild(tvright.Selected,'');
    newNode.ImageIndex:= 8;
    newNode.SelectedIndex:= 8;
    newNode.Selected:=true;
    edtRightName.Enabled:=true;
    redtRgihtMemo.Enabled:=true;
    tbSave.Tag:= 1;
    stcRightCode.caption:=GetNextRightCode('');
    newNode.StateIndex:=strtoint(stcRightCode.caption);
    edtRightName.SetFocus;
  end
  else if  tvRight.Selected.Level=1 then
  begin
    tbAdd.enabled:= False;
    tbEdit.enabled:= False;
    tbDelete.enabled:= False;
    tbRefresh.enabled:= False;
    tbSave.enabled:=true;
    tbCancel.enabled:=true;
    //清空编辑框
    edtRightName.Clear;
    redtRgihtMemo.Clear;
    sCode:='00'+inttostr(tvRight.Selected.StateIndex);
    sRightCode:=copy(sCode,length(sCode)-8+1,8);
    newNode:=tvright.Items.AddChild(tvright.Selected,'');
    newNode.Selected:=true;
    newNode.ImageIndex:= 9;
    newNode.SelectedIndex:= 9;
    edtRightName.Enabled:=true;
    redtRgihtMemo.Enabled:=true;
    tbSave.Tag:= 2;
    stcRightCode.caption:=GetNextRightCode(sRightCode);
    newnode.StateIndex:=strtoint(stcRightCode.caption);
    edtRightName.SetFocus;
  end;
end;

procedure TfrmBaseRight.edtRightNameChange(Sender: TObject);
begin
 if tbSave.Tag<>0 then  Tvright.Selected.Text:=edtRightName.Text;
end;

procedure TfrmBaseRight.tbSave1Click(Sender: TObject);
begin
  if (tbSave.Tag=1) or (tbSave.tag=2 )then
  begin
    With gQuery Do
    begin
      SQl.Clear;
      Unprepare;
      SQL.Add('insert Ent_sys_Rights(PermName,PermDesc,PermCode) values ('''
                   +edtRightName.Text+''','''+redtRgihtMemo.Text+''','''+stcRightCode.Caption+''') ');
      Prepare;
      ExecSQL;
    end;
    edtRightName.Enabled:=false;
    redtRgihtMemo.Enabled:=false;
  end;
  if (tbSave.Tag=3) then
  begin
    With gQuery Do
    begin
      SQl.Clear;
      Unprepare;
      SQL.Add('update  Ent_sys_Rights set PermName='''+edtRightName.Text+''',PermDesc='''+redtRgihtMemo.Text+''' where PermCode='''+stcRightCode.Caption+'''');
      Prepare;
      ExecSQL;
    end;
    edtRightName.Enabled:=false;
    redtRgihtMemo.Enabled:=false;
  end;
  tbSave.Tag:= 0;
  tbAdd.enabled:= true;
  tbEdit.enabled:= true;
  tbDelete.enabled:= true;
  tbRefresh.enabled:= true;
  tbSave.enabled:=false;
  tbCancel.enabled:=false;
end;

procedure TfrmBaseRight.tvRightChange(Sender: TObject; Node: TTreeNode);
var
  sPermCode,sTemp:string;
begin
  if tvRight.Tag=0 then
  begin
    if (tvright.Selected.Level=1) or (tvright.selected.Level=2) then
    begin
      sTemp:='00'+inttostr(tvright.Selected.stateindex);
      sPermCode:=copy(sTemp,Length(sTemp)-8+1,8);
      With gQuery Do
      begin
        SQl.Clear;
        Unprepare;
        SQL.Add('select * from  Ent_sys_Rights where PermCode = '''+sPermCode+'''');
        Prepare;
        active:=true;
      end;
      stcRightCode.Caption:=gQuery.fieldbyname('PermCode').AsString;
      edtRightName.Text:=gQuery.fieldbyname('PermName').AsString;
      redtRgihtMemo.Text:=gQuery.fieldbyname('PermDesc').AsString;
    end;
    if (tvright.Selected.Level=0) then
    begin
      tbAdd.Enabled:=true;
      tbedit.Enabled:=false;
      tbdelete.Enabled:=false;
      stcRightCode.Caption:='';
      edtRightName.Text:='';
      redtRgihtMemo.Text:='';
    end
    else if (tvright.Selected.Level=1) then
    begin
      tbAdd.Enabled:=true;
      tbedit.Enabled:=true;
      tbdelete.Enabled:=true;
    end
    else if (tvright.Selected.Level=2) then
    begin
      tbAdd.Enabled:=false;
      tbedit.Enabled:=true;
      tbdelete.Enabled:=true;

⌨️ 快捷键说明

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