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

📄 level.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -