📄 unit1.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 + -