?? level.pas
字號:
unit level;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, DBCtrls, StdCtrls, Mask, Db, ImgList, ComCtrls, Buttons,
ExtCtrls, Menus, Grids, DBGrids, TFlatButtonUnit, TFlatComboBoxUnit,crypt,procedurep;
type
TFormLevel = class(TForm)
QueryTmp1: TQuery;
QueryTmp2: TQuery;
Splitter1: TSplitter;
Panel1: TPanel;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
QueryTmp3: TQuery;
ImageList1: TImageList;
Querytem4: TQuery;
Query_City: TQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
DataSource2: TDataSource;
Query_Pub: TQuery;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
FlatEdit1: TEdit;
FlatEdit2: TEdit;
Pal_button: TPanel;
BitBtnAdd: TFlatButton;
BitBtnAlter: TFlatButton;
BitBtnDel: TFlatButton;
BitBtnSave: TFlatButton;
BitBtnCancel: TFlatButton;
BitBtnClose: TFlatButton;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
TreeView_1: TTreeView;
TreeView1: TTreeView;
Splitter2: TSplitter;
Panel6: TPanel;
TreeView2: TTreeView;
Panel7: TPanel;
TreeView_2: TTreeView;
UpdateSQL1: TUpdateSQL;
Query_Tmp: TQuery;
procedure FormShow(Sender: TObject);
procedure DBGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure N1Click(Sender: TObject);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Query_PubAfterScroll(DataSet: TDataSet);
procedure BitBtnCloseClick(Sender: TObject);
procedure BitBtnAlterClick(Sender: TObject);
procedure BitBtnDelClick(Sender: TObject);
procedure BitBtnSaveClick(Sender: TObject);
procedure BitBtnCancelClick(Sender: TObject);
procedure BitBtnAddClick(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
private
{ Private declarations }
//當前的節(jié)日編碼
P_jbdm :string;
//判斷是否為插入狀態(tài)
P_Insert :boolean;
//是否重建樹的標志
P_Refresh :boolean;
//是否編輯標志
P_Edit :boolean;
//刪除人員所有權(quán)限
procedure DeleteAllQX(P_jbdm:string);
procedure InsertAccessMenu(P_jbdm:string;ID:integer);
procedure Insert_Set_Access_Fun(P_jbdm:string; FUN_ID:integer);
procedure insert_init_QX;
procedure clearXH(Tree:TTreeView);
procedure dgfather_InsertSetAccess(HT2:TTreeNode);
procedure dgChild_InsertSetAccess(HT2:TTreeNode);
procedure InitTreeView_QX(TreeView:TTreeView;P_jbdm:string);
procedure InsertTreeViewMenu(TreeView:TTreeView;P_jbdm:string);
procedure InsertTreeViewFun(TreeView:TTreeView;P_jbdm:string);
procedure InsertFun(TreeView:TTreeView;FunLeaf:string;Form_Code:string);
procedure locateTree(TreeView:TTreeView;Node:TTreeNode);
procedure dgChild_DeleteAccess(HT1:TTreeNode);
procedure DeleteAccessmenu(P_jbdm:string;ID:Integer);
procedure Delete_Set_Access_Fun(P_jbdm:string;ID:integer);
Function getMenu_ID(FORM_CODE:string):Integer;
public
{ Public declarations }
P_jxdm,P_cityno,P_room :string;
TmpNode:TTreeNode;
end;
var
FormLevel: TFormLevel;
implementation
uses Main,unit_public, dmmain;
{$R *.DFM}
procedure TFormLevel.FormShow(Sender: TObject);
begin
inherited;
P_Insert :=false;
PageControl1.ActivePageIndex :=0;
FlatEdit1.Enabled :=false;
FlatEdit2.Enabled :=false;
crypt.UserEnter_Log(Caption,'瀏覽',-1,P_jbdm,'登入窗體');
setFunVisible(Self,P_jbdm);
FormMain.GP_SetButtonPos(Pal_button);
Query_PUB.close;
Query_PUB.open;
//SetBitBtn(true);
//Query_PUB.AfterScroll(nil);
//修改部分 2001-07-10 ChenQingBo
BitBtnAdd.Enabled:=(JBDM<=2);
BitBtnAlter.Enabled:=(JBDM<=2);
BitBtnDel.Enabled:=(JBDM<=2);
//Query_PUBAfterScroll(nil);
BitBtnAdd.Enabled:=false;
BitBtnAlter.Enabled:=false;
BitBtnDel.Enabled:=false;
P_Refresh :=true;
P_Edit :=false;
if JBDM=0
then InitTreeView_QX(TreeView2,'') //可分配的權(quán)限樹
else InitTreeView_QX(TreeView2,P_jbdm); //可分配的權(quán)限樹
//TreeView2.Items:=TreeView_2.Items;
//clearXH(TreeView2);
P_Refresh :=false;
end;
procedure TFormLevel.clearXH(Tree:TTreeView);
var i,m,n:integer;
begin//清除葉子上的序號
for i:=0 to Tree.Items.Count-1 do
begin
m:=Pos('.',Tree.Items[i].Text)+Pos(':',Tree.Items[i].Text)+Pos('*',Tree.Items[i].Text)+1;
n:=length(Tree.Items[i].Text);
Tree.Items[i].Text:=copy(Tree.Items[i].Text,m,n);
end;{for}
end;
procedure TFormLevel.insert_init_QX;
begin//設(shè)置初始權(quán)限
with QueryTmp2 do
begin
close;
sql.clear;
sql.add('select INITID,OBJECT');
sql.add(' from t_d_init');
sql.add(' where (LEVEL_SEQ=:nJBDM)');
ParamByName('nJBDM').AsInteger:=100;
open;
end;{with}
while not QueryTmp2.eof do
begin
if QueryTmp2.fields[1].AsString='菜單' then
insertaccessmenu('',QueryTmp2.fields[0].AsInteger);
if QueryTmp2.fields[1].AsString='功能' then
Insert_Set_Access_Fun('',QueryTmp2.fields[0].AsInteger);
QueryTmp2.next;
end;{while}
end;
procedure TFormLevel.insertaccessmenu(P_jbdm:string;ID:integer);
var
str :string;
begin
with QueryTmp1 do
begin
close;
sql.clear;
sql.add('select count(*)');
sql.add(' from t_d_init');
sql.add(' where (LEVEL_SEQ=:sTmp1)');
sql.add(' and (OBJECT=:nTmp2)');
ParamByName('sTmp1').AsString:=P_jbdm;
ParamByName('nTmp2').AsInteger:=ID;
open;
if Fields[0].AsInteger>=1 then exit;
end;
Dm_Main.Databasedh.StartTransaction;
with QueryTmp1 do
begin
close;
sql.clear;
str :='insert into t_d_init(LEVEL_SEQ,INITID,OBJECT) values(:P_jbdm,SEQ_INITID.nextval,:ID)';
QueryTmp1.sql.Text :=str;
ParamByName('P_jbdm').AsString:=P_jbdm;
ParamByName('ID').Asinteger :=ID;
execsql;
end;
Dm_Main.Databasedh.Commit;
end;
procedure TFormLevel.Insert_Set_Access_Fun(P_jbdm:string; FUN_ID:integer);
begin
with QueryTmp1 do
begin
close;
sql.clear;
sql.add('select count(*) from t_d_fungrant');
sql.add(' where (WK_NO=:P_jbdm)');
sql.add(' and (FUN_ID=:FUN_ID)');
ParamByName('P_jbdm').AsString:=P_jbdm;
ParamByName('FUN_ID').AsInteger:=FUN_ID;
open;
if Fields[0].AsInteger>0 then exit;
end;
Dm_Main.Databasedh.StartTransaction;
with QueryTmp1 do
begin
close;
sql.clear;
sql.add('insert into t_d_fungrant');
sql.add(' (WK_NO,ID,FUN_ID)');
sql.add('values (:P_jbdm,SEQ_FUNGRANTID.nextval,:FUN_ID)');
ParamByName('P_jbdm').AsString:=P_jbdm;
ParamByName('FUN_ID').AsInteger:=FUN_ID;
execsql;
end;
Dm_Main.Databasedh.Commit;
end;
procedure TFormLevel.DBGrid1DragOver(Sender, Source: TObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TDBGrid;
end;
procedure TFormLevel.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,#13]) then
key:=#0;
end;
procedure TFormLevel.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,#13,#189]) then
key:=#0;
end;
procedure TFormLevel.DeleteAllQX(P_jbdm:string);
begin//刪除這一工號的所有權(quán)限
with QueryTmp1 do
begin //刪除功能
close;
sql.clear;
sql.add('delete t_d_menugrant');
sql.add(' where (WK_NO=:P_jbdm)');
ParamByName('P_jbdm').ASString:=P_jbdm;
execsql;
end;
with QueryTmp1 do
begin //刪除功能
close;
sql.clear;
sql.add('delete t_d_fungrant');
sql.add(' where (WK_NO=:P_jbdm)');
ParamByName('P_jbdm').ASString:=P_jbdm;
execsql;
end;
end;
procedure TFormLevel.N1Click(Sender: TObject);
begin
if JBDM<>0 then
begin
Application.MessageBox('對不起,只有系統(tǒng)管理員才可做這項操作!','錯誤',MB_OK);
exit;
end;
end;
procedure TFormLevel.dgfather_InsertSetAccess(HT2:TTreeNode);
var HTTmp:TTreeNode;
QX_ID:Integer;
begin//遞歸插入權(quán)限設(shè)置
HTTmp:=HT2.Parent;
if HTTmp<>nil then dgfather_InsertSetAccess(HTTmp);
if pos(':',HT2.text)<>0 then exit;
if pos('.',HT2.text)<>0 then
begin
QX_ID:=StrToInt(copy(HT2.text,1,pos('.',HT2.text)-1));
insertaccessmenu(P_jbdm,QX_ID);
end
else
begin
//QX_ID:=StrToInt(copy(HT2.text,1,pos('*',HT2.text)-1));
//Insert_Set_Access_Fun(P_jbdm,QX_ID);
end;
end;
procedure TFormLevel.dgChild_InsertSetAccess(HT2:TTreeNode);
var HTTmp:TTreeNode;
QX_ID:Integer;
begin//遞歸孩子
if pos(':',HT2.text)=0 then
begin
if pos('.',HT2.text)<>0 then
begin
QX_ID:=StrToInt(copy(HT2.text,1,pos('.',HT2.text)-1));
insertaccessmenu(P_jbdm,QX_ID);
end
else
begin
QX_ID:=StrToInt(copy(HT2.text,1,pos('*',HT2.text)-1));
Insert_Set_Access_Fun(P_jbdm,QX_ID);
end;
end;
HTTmp:=HT2.getFirstChild;
while HTTmp<>nil do
begin
dgChild_InsertSetAccess(HTTmp);
HTTmp:=HT2.GetNextChild(HTTmp);
end;{while}
end;
procedure TFormLevel.InsertTreeViewMenu(TreeView:TTreeView;P_jbdm:string);
var Node:TTreeNode;
i:integer;
str :string;
begin//插入有權(quán)限的菜單
with QueryTmp1 do
begin
close;
sql.clear;
if P_jbdm<>'' then
begin
str :='select to_Char(a.ID)||''.''||a.Menu_Name,a.UP_MENU_NO '+
' from t_d_menuset a,t_d_init b'
+' where to_Char(a.ID)=b.OBJECT'+
' and b.LEVEL_SEQ=:P_jbdm'+
' order by a.ID';
QueryTmp1.sql.Text :=str;
ParamByName('P_jbdm').AsString:=P_jbdm;
end
else
begin
sql.add('select to_Char(ID)||''.''||Menu_Name,UP_MENU_NO ');
sql.add(' from t_d_menuset');
sql.add(' order by ID');
end;
open;
while not eof do
begin
Node:=Nil;
for i:=0 to TreeView.Items.Count-1 do
begin
if copy(TreeView.Items[i].Text,1,Pos('.',TreeView.Items[i].Text))=Fields[1].ASString+'.' then
begin
Node:=TreeView.Items[i];
break;
end;{if}
end;{for}
Node:=TreeView.Items.AddChild(Node,QueryTmp1.Fields[0].AsString);
Node.ImageIndex:=0;
Node.SelectedIndex:=1;
next;
end;{while}
end;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -