?? level.pas
字號:
end;
Function TFormLevel.getMenu_ID(FORM_CODE:string):Integer;
begin
with QueryTmp3 do
begin
close;
sql.clear;
sql.add('select ID from t_d_menuset ');
sql.add(' where FORM_CODE=:FORM_CODE');
ParamByName('FORM_CODE').Asstring:=FORM_CODE;
open;
result:=Fields[0].AsInteger;
end;
end;
procedure TFormLevel.InsertFun(TreeView:TTreeView;FunLeaf:string;Form_Code:string);
var FormLeaf:string;
i,Menu_ID:integer;
newNode:TTreeNode;
begin
with QueryTmp2 do
begin
close;
sql.clear;
sql.add('select FORM_CODE||'':''||FORM_NAME,FORM_CODE ');
sql.add(' from T_D_FormSet');
sql.add(' where (FORM_CODE=:Code)');
ParamBYName('CODE').ASString:=Form_Code;
open;
FormLeaf:=Fields[0].AsString;
Menu_ID:=getMenu_ID(Fields[1].AsString);
end;{with}
for i:=0 to TreeView.Items.Count-1 do
begin //已經有窗體結點時 直接插入功能結點
if TreeView.Items[i].text=FormLeaf then
begin
newNode:=TreeView.Items.AddChild(TreeView.Items[i],FunLeaf);
newNode.ImageIndex:=4;
newNode.SelectedIndex:=5;
exit;
end;{if}
end;{for}
for i:=0 to TreeView.Items.Count-1 do
begin //沒有窗體結點時 先插入窗體結點,再插入功能結點
if copy(TreeView.Items[i].text,1,pos('.',TreeView.Items[i].text))=IntToStr(Menu_ID)+'.' then
begin
newNode:=TreeView.Items.AddChild(TreeView.Items[i],FormLeaf);
newNode.ImageIndex:=2;
newNode.SelectedIndex:=3;
newNode:=TreeView.Items.AddChild(newNode,FunLeaf);
newNode.ImageIndex:=4;
newNode.SelectedIndex:=5;
exit;
end;{if}
end;{for}
end;
procedure TFormLevel.InsertTreeViewFun(TreeView:TTreeView;P_jbdm:string);
begin//插入有權限的窗體、功能
with QueryTmp1 do
begin
close;
sql.clear;
if P_jbdm<>'' then
begin
sql.add('select to_Char(a.FUN_ID)||''*''||a.FUN_NAME,a.Form_Code');
sql.add(' from t_d_funset a,t_d_fungrant b');
sql.add(' where (a.FUN_ID=b.Fun_ID)');
sql.add(' and (b.WK_NO=:P_jbdm)');
sql.add(' order by a.FUN_ID');
ParamByName('P_jbdm').AsString:=P_jbdm;
end
else
begin
sql.add('select to_Char(FUN_ID)||''*''||FUN_NAME,Form_Code');
sql.add(' from t_d_funset');
sql.add(' order by FUN_ID');
end;
open;
while not eof do
begin
InsertFun(TreeView,Fields[0].AsString,Fields[1].AsString);
next;
end;{while}
end;
end;
procedure TFormLevel.InitTreeView_QX(TreeView:TTreeView;P_jbdm:string);
begin//可分配的權限樹
TreeView.Items.Clear;
InsertTreeViewMenu(TreeView,P_jbdm); //插入有權限的菜單
//InsertTreeViewFun(TreeView,P_jbdm); //插入有權限的窗體、功能
end;
procedure TFormLevel.locateTree(TreeView:TTreeView;Node:TTreeNode);
var i:integer;
TmpNode1,TmpNode2:TTreeNode;
begin//定位葉子
for i:=0 To TreeView.Items.Count-1 do
begin
TmpNode1:=TreeView.Items[i];
TmpNode2:=Node;
while (TmpNode1.Text=TmpNode2.Text) do
begin
TmpNode1:=TmpNode1.Parent;
TmpNode2:=TmpNode2.Parent;
if (TmpNode1=nil)or(TmpNode2=nil) then break;
end;
if (TmpNode1=nil)and(TmpNode2=nil) then
begin
TreeView.Selected:=TreeView.Items[i];
exit;
end;{if}
end;{for}
end;
procedure TFormLevel.TreeView1DragDrop(Sender, Source: TObject; X,Y: Integer);
var HT2:TTreeNode;
P_jbdm:string;
begin
if Source<>TreeView2 then Exit;
HT2:=TreeView2.Selected;
if (HT2=nil) then Exit;
HT2:=TreeView2.Items[HT2.AbsoluteIndex];
dgfather_InsertSetAccess(HT2);
dgChild_InsertSetAccess(HT2);
P_jbdm:='';
TreeView_1.Items.Clear;
TreeView1.Items.Clear;
InitTreeView_QX(TreeView1,P_jbdm); //權限樹
TreeView1.Items:=TreeView1.Items;
//ClearXH(TreeView1);
locateTree(TreeView1,TreeView2.Selected); //定位葉子
Query_PubAfterScroll(nil);
end;
procedure TFormLevel.TreeView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TTreeView;
end;
procedure TFormLevel.TreeView2DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TTreeView;
end;
procedure TFormLevel.DeleteAccessmenu(P_jbdm:string;ID:Integer);
begin
Dm_Main.Databasedh.StartTransaction;
with QueryTmp1 do
begin
close;
sql.clear;
sql.add('delete t_d_init');
sql.add(' where (LEVEL_SEQ=:P_jbdm)');
sql.add(' and (OBJECT=:ID)');
ParamByName('P_jbdm').AsString:=P_jbdm;
ParamByName('ID').AsInteger:=ID;
execsql;
end;
Dm_Main.Databasedh.Commit;
end;
procedure TFormLevel.Delete_Set_Access_Fun(P_jbdm:string;ID:integer);
begin
Dm_Main.Databasedh.StartTransaction;
with QueryTmp1 do
begin
close;
sql.clear;
sql.add('delete 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:=ID;
ExecSql;
end;
Dm_Main.Databasedh.Commit;
end;
procedure TFormLevel.dgChild_DeleteAccess(HT1:TTreeNode);
var T_Node:TTreeNode;
QX_ID:Integer;
begin//遞歸刪除權限
T_Node:=HT1.getFirstChild;
while T_Node<>nil do
begin
dgChild_DeleteAccess(T_Node);
T_Node:=HT1.GetNextChild(T_Node);
end;{while}
if pos(':',HT1.text)<>0 then exit;
if pos('.',HT1.text)<>0 then
begin
QX_ID:=StrToInt(copy(HT1.text,1,pos('.',HT1.text)-1));
DeleteAccessmenu(P_jbdm,QX_ID);
end
else
begin
//QX_ID:=StrToInt(copy(HT1.text,1,pos('*',HT1.text)-1));
//Delete_Set_Access_Fun(P_jbdm,QX_ID);
end;
end;
procedure TFormLevel.TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
var HT1:TTreeNode;
begin
if Source<>TreeView1 then Exit;
HT1:=TreeView1.Selected;
if HT1=nil then Exit;
HT1:=TreeView1.Items[HT1.AbsoluteIndex];
dgChild_DeleteAccess(HT1);
locateTree(TreeView2,TreeView1.Selected); //定位葉子
HT1.Delete;
//TreeView1.Selected.Delete;
Query_PubAfterScroll(nil);
end;
procedure TFormLevel.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := CaFree;
end;
procedure TFormLevel.Query_PubAfterScroll(DataSet: TDataSet);
begin
FlatEdit1.Enabled :=false;
FlatEdit2.Enabled :=false;
if P_Insert then exit;
P_jbdm :=Query_pub.fieldbyname('JBDM').asstring;
Flatedit1.text :=P_jbdm;
Flatedit2.text :=Query_pub.fieldbyname('JBMC').asstring;
if PageControl1.ActivePageIndex=1 then
InitTreeView_QX(TreeView1,P_jbdm); //權限樹
//***********當沒有記錄時要控制按鈕及權限************
If not(Query_PuB.bof and Query_PuB.eof) Then
begin
//
BitBtnAdd.Enabled:=true;
BitBtnAlter.Enabled:=true;
BitBtnDel.Enabled:=true;
//權限
BitBtnAdd.Enabled:=(JBDM<=2);
BitBtnAlter.Enabled:=(JBDM<=2);
BitBtnDel.Enabled:=(JBDM<=2);
end
else
begin
//BitBtnAdd.Enabled:=false;
BitBtnAlter.Enabled:=false;
BitBtnDel.Enabled:=false;
end;
//*******************************************
end;
procedure TFormLevel.BitBtnCloseClick(Sender: TObject);
begin
close;
end;
procedure TFormLevel.BitBtnAlterClick(Sender: TObject);
begin
P_edit:=true;
FlatEdit1.Enabled :=false;
FlatEdit2.Enabled :=true;
FlatEdit2.SelectAll;
FlatEdit2.SetFocus;
end;
procedure TFormLevel.BitBtnDelClick(Sender: TObject);
var
sql :string;
begin
if MessageDlg('是否要刪除該記錄?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
//Dm_Main.Databasedh.StartTransaction;
Sql :='Delete t_v_level where JBDM='+#39+P_jbdm+#39;
if AnalyzeSql(SQL)=1 then exit;
FlatEdit1.text :='';
FlatEdit2.text :='';
Query_Pub.Close;
Query_Pub.Open;
Query_PUB.AfterScroll(nil);
end;
procedure TFormLevel.BitBtnSaveClick(Sender: TObject);
var
xlh , editxlh,sql : string;
begin
if length(FlatEdit1.Text) >60 then
begin
MessageDlg('投訴類別字段超過長度!',mtConfirmation, [mbYes], 0);
exit;
end;
if length(FlatEdit1.Text) >200 then
begin
MessageDlg('備注字段超過長度!',mtConfirmation, [mbYes], 0);
exit;
end;
if P_edit=false then
begin
QueryTmp1.close;
QueryTmp1.sql.Text :='select count(*) from t_v_level where jbdm='+#39+flatedit1.text+#39;
QueryTmp1.open;
if QueryTmp1.fields[0].AsInteger >0 then
begin
MessageDlg('級別編碼已經存在!',mtConfirmation, [mbYes], 0);
exit;
end;
end;
//提示是否更新
if P_edit=true then
if MessageDlg('是否要更新該記錄?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
if P_edit=false then
Begin
//先判斷級別是否存在
Sql :='insert into t_v_level values('+#39+FlatEdit1.Text+#39+','+#39+FlatEdit2.Text+#39+')';
if AnalyzeSql(SQL)=1 then exit;
end
else
begin
Sql :='update t_v_level set JBMC='+#39
+FlatEdit2.Text+#39+' where JBDM='+#39+P_JBDM+#39;
if AnalyzeSql(SQL)=1 then exit;
end;
//*************數據同步********************
if P_edit=false then
Begin
P_Insert :=true;
Query_Pub.insert;
end
else
begin
P_Insert :=true;
Query_Pub.Edit;
end;
Query_PUB.FieldByName('jbdm').AsString :=FlatEdit1.Text;
Query_PUB.FieldByName('jbmc').AsString :=FlatEdit2.Text;
P_Insert :=false;
Query_Pub.Post;
//*****************************************
//SetBitBtn(true);
Query_PUB.AfterScroll(nil);
end;
procedure TFormLevel.BitBtnCancelClick(Sender: TObject);
begin
inherited;
Query_PUB.AfterScroll(nil);
end;
procedure TFormLevel.BitBtnAddClick(Sender: TObject);
begin
P_edit :=false;
FlatEdit1.Text:='';
FlatEdit2.Text:='';
FlatEdit1.Enabled :=true;
FlatEdit2.Enabled :=true;
FlatEdit1.SetFocus;
//SetBitBtn(false);
end;
procedure TFormLevel.PageControl1Change(Sender: TObject);
begin
if P_jbdm<> '' then
if PageControl1.ActivePageIndex=1 then
InitTreeView_QX(TreeView1,P_jbdm); //權限樹
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -