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

📄 unit1.pas

📁 Raize的RzCheckTree权限管理 本程序使用Delphi7和Raize4.1控件里的RzCheckTree实现权限管理 请下载Raize安装后使用本程序 access2000作为数据库
💻 PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MainMenu: TMainMenu;
    N1: TMenuItem;
    N21: TMenuItem;
    N31: TMenuItem;
    N111: TMenuItem;
    N121: TMenuItem;
    N131: TMenuItem;
    N141: TMenuItem;
    N211: TMenuItem;
    N221: TMenuItem;
    N231: TMenuItem;
    N241: TMenuItem;
    N251: TMenuItem;
    N261: TMenuItem;
    N311: TMenuItem;
    N321: TMenuItem;
    RzCheckTree: TRzCheckTree;
    N41: TMenuItem;
    N411: TMenuItem;
    N51: TMenuItem;
    N511: TMenuItem;
    N521: TMenuItem;
    Conn: TADOConnection;
    ADOQuery: TADOQuery;
    DataSource: TDataSource;
    DBGrid1: TDBGrid;
    Temp: TADOQuery;
    Panel1: TPanel;
    ButtonSave: TButton;
    ButtonRead: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ADOQueryAfterScroll(DataSet: TDataSet);
    procedure ButtonSaveClick(Sender: TObject);
    procedure ButtonReadClick(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
    function   InitMenu(MainMenu:   TMainMenu;   ItemsOwner:   TRzCheckTree):   TTreeNodes;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
  
{ TForm1 }

function TForm1.InitMenu(MainMenu: TMainMenu; ItemsOwner: TRzCheckTree): TTreeNodes;
      procedure   lop(SubMenu:TMenuItem;var   TreeItem:TTreeNodes;SubNode:TTreeNode);
      var
          SCount,Slop:integer;
          SSubNode:TTreeNode;
      begin
          SCount   :=   SubMenu.Count;
          For   Slop   :=   1   to   SCount   do
          begin
              SSubNode   :=   TreeItem.AddChild(subNode,SubMenu.items[Slop-1].Caption);
              SSubNode.StateIndex   :=   1;
              Lop(SubMenu.Items[Slop-1],TreeItem,SSubNode);
          end;
      end;
  var
      RetuMenu:TTreeNodes;
      SubItem,ParentItem:TTreeNode;
      MenuCount,lops:integer;
  begin
      RetuMenu   :=   TTreeNodes.Create(ItemsOwner);
      ParentItem   :=   RetuMenu.AddFirst(nil,'权限菜单');
          MenuCount   :=   MainMenu.Items.Count;
          for   lops   :=   0   to   MenuCount-1   do
          begin
              SubItem   :=   RetuMenu.Add(ParentItem,MainMenu.Items[lops].Caption);
              SubItem.StateIndex   :=   1;
              lop(MainMenu.Items[lops],RetuMenu,SubItem);
          end;
          Result   :=   RetuMenu;
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  InitMenu(MainMenu,RzCheckTree);
  ADOQuery.Open;

end;

procedure TForm1.ADOQueryAfterScroll(DataSet: TDataSet);
var
  Authority : string;
  Len       : Integer;
  i         : Integer;
begin
  Temp.Close;
  Temp.SQL.Text := 'select * from users where code = ''' + ADOQuery.FieldByName('code').AsString + '''';
  Temp.Open;
  Authority := Temp.FieldByName('Authority').AsString;
  Temp.Close;
  Len := Length(Authority);
  for i:= 0 to Len - 1 do
  begin
    if (Copy(Authority,i+1,1) = '1') then
      RzCheckTree.ItemState[i] :=  csChecked
    else
      RzCheckTree.ItemState[i] :=  csUnchecked;
  end;
end;

procedure TForm1.ButtonSaveClick(Sender: TObject);
var
  Authority : string;
  i         : Integer;
begin
  Authority := '';
  for i:=0 to RzCheckTree.Items.Count - 1 do
  begin
    if (RzCheckTree.ItemState[i] = csChecked) or (RzCheckTree.ItemState[i] = csPartiallyChecked) then
      Authority := Authority + '1'
    else
      Authority := Authority + '0';
  end;
  Temp.Close;
  Temp.SQL.Text := ' update users set Authority = ''' + Authority + '''' +
                   ' where code = ''' + ADOQuery.FieldByName('code').AsString + '''';
  Temp.ExecSQL;
  Temp.Close;
  Application.MessageBox(PChar('保存成功!'),'提示',64);
end;

procedure TForm1.ButtonReadClick(Sender: TObject);
var
  Authority : string;
  Len       : Integer;
  x,y,i,j     : Integer;
begin
  Temp.Close;
  Temp.SQL.Text := 'select * from users where code = ''' + ADOQuery.FieldByName('code').AsString + '''';
  Temp.Open;
  Authority := Temp.FieldByName('Authority').AsString;
  Temp.Close;
  Len := 1;
  i := MainMenu.Items.Count;
  for x:= 0 to i - 1  do
  begin
    j := MainMenu.Items[x].Count;
    if (Copy(Authority,Len+1,1) = '1') then
      MainMenu.Items[x].Visible := True
    else
      MainMenu.Items[x].Visible := False;
    Inc(Len);

    for y := 0 to j - 1 do
    begin
      if (Copy(Authority,Len+1,1) = '1') then
        MainMenu.Items[x].Items[y].Visible := True
      else
        MainMenu.Items[x].Items[y].Visible := False;
      Inc(Len);
    end;

  end;
end;

end.

⌨️ 快捷键说明

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