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

📄 userpermis_u.pas

📁 delphi 控件有需要的可以下载看看,可以用的,希望对你用 帮助
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      Delete(Temp2,1,pos(#1,Temp2));
      New(TempCPointer);
      TempCPointer.Grupo := False;
      TempCPointer.Selecionado := 0;
      Desc := Copy(Temp2,1,Pos(#2,Temp2)-1); // descricao do objeto
      Delete(Temp2,1,pos(#2,Temp2));

      TempCPointer.FormName := Copy(Temp2,1,Pos(#3,Temp2)-1);
      Delete(Temp2,1,pos(#3,Temp2));
      TempCPointer.CompName := Temp2;
      TreeControls.Items.AddChildObject(TempNode, Desc, TempCPointer);
    end;
    TreeControls.FullExpand;
    TreeControls.Perform(WM_VSCROLL, SB_TOP, 0);
  end else PageControls.TabVisible := False;



end;

procedure TUserPermis.UnCheckChild(node : TTreeNode);
var
  child : TTreeNode;
begin
  PTreemenu(node.data).Selecionado := 0;
  node.ImageIndex := 0;
  node.SelectedIndex := 0;
  child := node.getFirstChild;
  repeat
    if child.HasChildren then
      UnCheckChild(child)
    else begin
      PTreemenu(child.data).Selecionado := 0;
      child.ImageIndex := 0;
      child.SelectedIndex := 0;
    end;
    child := node.GetNextChild(child);
  until child = nil;
end;

procedure TUserPermis.TreeMenuItem( Marca : Boolean);
var
  AbsIdx : Integer;
begin
 if Marca then
    if PTreemenu(TreeMenu.Selected.data).Selecionado < 2 then
    begin
      if PTreemenu(TreeMenu.Selected.data).Selecionado = 0 then //marcar
      begin
        AbsIdx := TreeMenu.Selected.AbsoluteIndex;
        while AbsIdx > -1 do
        begin
          PTreemenu(TreeMenu.Items.Item[AbsIdx].data).Selecionado := 1;
          TreeMenu.Items.Item[AbsIdx].ImageIndex := 1;
          TreeMenu.Items.Item[AbsIdx].SelectedIndex := 1;
          if TreeMenu.Items.Item[AbsIdx].Parent <> nil then
          begin
            AbsIdx := TreeMenu.Items.Item[AbsIdx].Parent.AbsoluteIndex;
            if PTreemenu(TreeMenu.Items.Item[AbsIdx].data).Selecionado = 2 then AbsIdx := -1;
          end else
            AbsIdx := -1;
        end;
      end else begin //desmarcar
        if TreeMenu.Selected.HasChildren then  UnCheckChild(TreeMenu.Selected)
        else begin
          PTreemenu(TreeMenu.Selected.data).Selecionado := 0;
          TreeMenu.Selected.ImageIndex := 0;
          TreeMenu.Selected.SelectedIndex := 0;
        end;

      end;
      TreeMenu.Repaint;
    end;


{ if Marca then
  begin
    if PTreemenu(TreeMenu.Selected.data).Selecionado < 2 then
    begin
      if PTreemenu(TreeMenu.Selected.data).Selecionado = 0 then PTreemenu(TreeMenu.Selected.data).Selecionado := 1
      else PTreemenu(TreeMenu.Selected.data).Selecionado := 0;
    end;
    TreeMenu.Selected.ImageIndex := PTreemenu(TreeMenu.Selected.data).Selecionado;
    TreeMenu.Selected.SelectedIndex := PTreemenu(TreeMenu.Selected.data).Selecionado;

    TreeMenu.Items.Item


  end;
  TreeMenu.Repaint;}
end;

procedure TUserPermis.TreeActionItem( marca : Boolean);
begin
  if not assigned(FActions) then exit;
  if PTreeAction(TreeAction.Selected.data).Grupo then exit;
  if Marca then begin
    if PTreeAction(TreeAction.Selected.data).Selecionado < 2 then
    begin
      if PTreeAction(TreeAction.Selected.data).Selecionado = 0 then PTreeAction(TreeAction.Selected.data).Selecionado := 1
      else PTreeAction(TreeAction.Selected.data).Selecionado := 0;
    end;
    TreeAction.Selected.ImageIndex := PTreeAction(TreeAction.Selected.data).Selecionado;
    TreeAction.Selected.SelectedIndex := PTreeAction(TreeAction.Selected.data).Selecionado;
  end;
  TreeAction.Repaint;
end;

procedure TUserPermis.TreeControlItem( marca : Boolean);
begin
  if PTreeControl(TreeControls.Selected.data).Grupo then exit;
  if Marca then begin
    if PTreeControl(TreeControls.Selected.data).Selecionado < 2 then
    begin
      if PTreeControl(TreeControls.Selected.data).Selecionado = 0 then PTreeControl(TreeControls.Selected.data).Selecionado := 1
      else PTreeControl(TreeControls.Selected.data).Selecionado := 0;
    end;
    TreeControls.Selected.ImageIndex := PTreeControl(TreeControls.Selected.data).Selecionado;
    TreeControls.Selected.SelectedIndex := PTreeAction(TreeControls.Selected.data).Selecionado;
  end;
  TreeControls.Repaint;
end;

procedure TUserPermis.TreeMenuClick(Sender: TObject);
begin
  if not ChangingTree then TreeMenuItem(True);
end;

procedure TUserPermis.BtCancelClick(Sender: TObject);
begin
  Close;
end;

procedure TUserPermis.BtLiberaClick(Sender: TObject);
begin
  Atualiza(True);
end;

procedure TUserPermis.Atualiza( Selec : Boolean);
var
  Contador, Temp : Integer;
begin
  if Selec then Temp := 1 else Temp := 0;
  if PC.ActivePage = PageMenu then
  begin
    for Contador := 0 to TreeMenu.Items.Count -1 do
      if PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado < 2 then
      begin
        PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado := Temp;
        TreeMenu.Items[Contador].ImageIndex := Temp;
        TreeMenu.Items[Contador].SelectedIndex := Temp;
      end;
    TreeMenu.Repaint;
  end else if PC.ActivePage = PageAction then
  begin
    for Contador := 0 to TreeAction.Items.Count -1 do
      if not PTreeAction(TreeAction.Items[Contador].Data).Grupo then
        if PTreeAction(TreeAction.Items[Contador].Data).Selecionado < 2 then
        begin
          PTreeAction(TreeAction.Items[Contador].Data).Selecionado := Temp;
          TreeAction.Items[Contador].ImageIndex := Temp;
          TreeAction.Items[Contador].SelectedIndex := Temp;
        end;
    TreeAction.Repaint;
  end else begin // tabContols
    for Contador := 0 to TreeControls.Items.Count -1 do
      if not PTreeControl(TreeControls.Items[Contador].Data).Grupo then
        if PTreeControl(TreeControls.Items[Contador].Data).Selecionado < 2 then
        begin
          PTreeControl(TreeControls.Items[Contador].Data).Selecionado := Temp;
          TreeControls.Items[Contador].ImageIndex := Temp;
          TreeControls.Items[Contador].SelectedIndex := Temp;
        end;
    TreeControls.Repaint;
  end;
end;


procedure TUserPermis.BtBloqueiaClick(Sender: TObject);
begin
  Atualiza(False);
end;


procedure TUserPermis.FormShow(Sender: TObject);
var
  Contador, Selec : Integer;
begin
//carrega itens do menu actions etc
CarregaTreeviews;
 // Exibe Permissoes do Usuario
  For Contador := 0 to TreeAction.Items.Count -1 do
  begin
    DSPermiss.First;
    if DSPermiss.Locate('ObjName',PTreeAction(TreeAction.Items[Contador].Data).MenuName,[]) then Selec := 1 else Selec := 0;

    PTreeAction(TreeAction.Items[Contador].Data).Selecionado := Selec;
    if not PTreeAction(TreeAction.Items[Contador].Data).Grupo then
    begin
      TreeAction.Items[Contador].ImageIndex := Selec;
      TreeAction.Items[Contador].SelectedIndex := Selec;
    end;
  end;


  For Contador := 0 to TreeMenu.Items.Count -1 do
  begin
    DSPermiss.First;
    if DSPermiss.Locate('ObjName',PTreeMenu(TreeMenu.Items[Contador].Data).MenuName,[]) then Selec := 1 else Selec := 0;

    PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado := Selec;
    TreeMenu.Items[Contador].ImageIndex := Selec;
    TreeMenu.Items[Contador].SelectedIndex := Selec;
  end;


  //Extra Rights
  For Contador := 0 to Pred(TreeControls.Items.Count) do
  begin
    DSPermissEX.First;
    if DSPermissEX.Locate('FormName;ObjName',VarArrayOf([PTreeControl(TreeControls.Items[Contador].Data).FormName, PTreeControl(TreeControls.Items[Contador].Data).CompName]),[]) then Selec := 1 else Selec := 0;

    PTreeControl(TreeControls.Items[Contador].Data).Selecionado := Selec;
    if not PTreeControl(TreeControls.Items[Contador].Data).Grupo then
    begin
      TreeControls.Items[Contador].ImageIndex := Selec;
      TreeControls.Items[Contador].SelectedIndex := Selec;
    end;
  end;



  // Exibe Permissoes do Perfil
  if DSPerfil.Active then
  begin
    For Contador := 0 to TreeAction.Items.Count -1 do begin
      DSPerfil.First;
      if DSPerfil.Locate('ObjName',PTreeAction(TreeAction.Items[Contador].Data).MenuName,[]) then
      begin
        Selec := 2;
        PTreeAction(TreeAction.Items[Contador].Data).Selecionado := Selec;
        if not PTreeAction(TreeAction.Items[Contador].Data).Grupo then
        begin
          TreeAction.Items[Contador].ImageIndex := Selec;
          TreeAction.Items[Contador].SelectedIndex := Selec;
        end;
      end;
    end;


    For Contador := 0 to TreeMenu.Items.Count -1 do
    begin
      DSPerfil.First;
      if DSPerfil.Locate('ObjName',PTreeMenu(TreeMenu.Items[Contador].Data).MenuName,[]) then
      begin
        Selec := 2;
        PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado := Selec;
        TreeMenu.Items[Contador].ImageIndex := Selec;
        TreeMenu.Items[Contador].SelectedIndex := Selec;
      end;
    end;

    //Extra Rights

    For Contador := 0 to Pred(TreeControls.Items.Count) do
    begin
      DSPerfilEX.First;
      if DSPerfilEX.Locate('FormName;ObjName',VarArrayOf([PTreeControl(TreeControls.Items[Contador].Data).FormName, PTreeControl(TreeControls.Items[Contador].Data).CompName]),[]) then
      begin
        Selec := 2;
        PTreeControl(TreeControls.Items[Contador].Data).Selecionado := Selec;
        if not PTreeControl(TreeControls.Items[Contador].Data).Grupo then
        begin
          TreeControls.Items[Contador].ImageIndex := Selec;
          TreeControls.Items[Contador].SelectedIndex := Selec;
        end;
      end;
    end;
  end;
  TreeAction.Repaint;
  TreeMenu.Repaint;
  ChangingTree := False;
end;

procedure TUserPermis.TreeActionClick(Sender: TObject);
begin
  if not ChangingTree then TreeActionItem(True);
end;

procedure TUserPermis.TreeControlsClick(Sender: TObject);
begin
  if not ChangingTree then TreeControlItem(True);
end;

procedure TUserPermis.TreeMenuCollapsing(Sender: TObject; Node: TTreeNode;
  var AllowCollapse: Boolean);
begin
  if (Self.Showing) and (TTreeView(Sender).Focused) then ChangingTree := True;
end;

procedure TUserPermis.TreeMenuKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ' ' then
  begin
    TTreeView(Sender).OnClick(Sender);
    Key := #0; 
  end;
end;

procedure TUserPermis.TreeMenuMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ChangingTree := False;
end;

end.

⌨️ 快捷键说明

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