📄 userpermis_u.pas
字号:
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 + -