Varela_PuntosVenta/Source/ApplicationBase/Usuarios/Views/uEditorPermisosUsuario.pas

701 lines
26 KiB
ObjectPascal

unit uEditorPermisosUsuario;
interface
uses
UCBase, ActnMan, ActnMenus, Variants, Buttons, Classes, ComCtrls, Controls,
DB, ExtCtrls, Forms, Graphics, ImgList, Menus, StdCtrls, uBizUsuarios;
type
PTreeMenu = ^TTreeMenu;
TTreeMenu = record
Selecionado: Integer;
MenuName: String;
end;
PTreeAction = ^TTreeAction;
TTreeAction = record
Grupo: Boolean;
Selecionado: Integer;
MenuName: String;
end;
PTreeControl = ^TTreeControl;
TTreeControl = record
Grupo: Boolean;
Selecionado: Integer;
CompName: String;
FormName: String;
end;
TfEditorPermisosUsuario = class(TForm)
Panel3: TPanel;
BtLibera: TBitBtn;
BtBloqueia: TBitBtn;
ImageList1: TImageList;
PC: TPageControl;
PageMenu: TTabSheet;
PageAction: TTabSheet;
TreeMenu: TTreeView;
TreeAction: TTreeView;
PageControls: TTabSheet;
TreeControls: TTreeView;
Panel2: TPanel;
bAceptar: TButton;
bCancelar: TButton;
GroupBox1: TGroupBox;
procedure BtGravaClick(Sender: TObject);
procedure TreeMenuClick(Sender: TObject);
procedure BtLiberaClick(Sender: TObject);
procedure BtBloqueiaClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TreeActionClick(Sender: TObject);
procedure TreeControlsClick(Sender: TObject);
procedure TreeMenuCollapsing(Sender: TObject; Node: TTreeNode; var AllowCollapse: Boolean);
procedure TreeMenuKeyPress(Sender: TObject; var Key: char);
procedure TreeMenuMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormDestroy(Sender: TObject);
procedure bCancelarClick(Sender: TObject);
procedure bAceptarClick(Sender: TObject);
private
FMenu: TMenu;
FActions: TObject;
FChangingTree: Boolean;
FTempMPointer: PTreeMenu;
FTempAPointer: PTreeAction;
FTempCPointer: PTreeControl;
FExtraRights: TUCExtraRights;
FTempLista: TStringList;
FListaAction: array of PTreeAction;
FListaMenu: array of PTreeMenu;
FListaControl: array of PTreeControl;
{$IFDEF UCACTMANAGER}
FActionMainMenuBar: TActionMainMenuBar;
procedure TrataItem(IT: TActionClientItem; node: TTreeNode); overload;
{$ENDIF}
procedure TrataItem(IT: TMenuItem; node: TTreeNode); overload;
procedure TreeMenuItem(marca: Boolean);
procedure Atualiza(Selec: Boolean);
procedure TreeActionItem(marca: Boolean);
procedure UnCheckChild(node: TTreeNode);
procedure TreeControlItem(marca: Boolean);
procedure CarregaTreeviews;
public
FUser : IBizUsuario;
FUserControl: TUserControl;
DSPermiss: TDataset;
DSPermissEX: TDataset;
DSPerfil: TDataset;
DSPerfilEX: TDataset;
end;
implementation
uses
ActnList, Messages, SysUtils, Windows;
{$R *.dfm}
procedure TfEditorPermisosUsuario.BtGravaClick(Sender: TObject);
var
Contador: Integer;
begin
with FUserControl.TableRights do
begin
FUserControl.DataConnector.UCExecSQL('Delete from ' + TableName + ' Where ' + FieldUserID + ' = ' + IntToStr(FUser.ID) + ' and ' + FieldModule + ' = ' + QuotedStr(FUserControl.ApplicationID));
FUserControl.DataConnector.UCExecSQL('Delete from ' + TableName + 'EX Where ' + FieldUserID + ' = ' + IntToStr(FUser.ID) + ' and ' + FieldModule + ' = ' + QuotedStr(FUserControl.ApplicationID));
end;
for Contador := 0 to TreeMenu.Items.Count - 1 do
if PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRight(FUser.ID, PTreeMenu(TreeMenu.Items[Contador].Data).MenuName);
for Contador := 0 to TreeAction.Items.Count - 1 do
if PTreeAction(TreeAction.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRight(FUser.ID, PTreeAction(TreeAction.Items[Contador].Data).MenuName);
//Extra Rights
for Contador := 0 to Pred(TreeControls.Items.Count) do
if PTreeControl(TreeControls.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRightEX(FUser.ID, FUserControl.ApplicationID, PTreeControl(TreeControls.Items[Contador].Data).FormName, PTreeControl(TreeControls.Items[Contador].Data).CompName);
Close;
end;
procedure TfEditorPermisosUsuario.TrataItem(IT: TMenuItem; node: TTreeNode);
var
contador: Integer;
TempNode: TTreeNode;
begin
for contador := 0 to IT.Count - 1 do
if IT.Items[Contador].Caption <> '-' then
if IT.Items[Contador].Count > 0 then
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := IT.Items[Contador].Name;
TempNode := TreeMenu.Items.AddChildObject(node, StringReplace(IT.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
TrataItem(IT.Items[Contador], TempNode);
end
else
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := IT.Items[Contador].Name;
TreeMenu.Items.AddChildObject(node, StringReplace(IT.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
end;
end;
{$IFDEF UCACTMANAGER}
procedure TUserPermis.TrataItem(IT: TActionClientItem; node: TTreeNode);
var
contador: Integer;
TempNode: TTreeNode;
begin
for contador := 0 to IT.Items.Count - 1 do
if IT.Items[Contador].Caption <> '-' then
if IT.Items[Contador].Items.Count > 0 then
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := #1 + 'G' + IT.Items[Contador].Caption;
TempNode := TreeMenu.Items.AddChildObject(node, StringReplace(IT.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
TrataItem(IT.Items[Contador], TempNode);
end
else
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := IT.Items[Contador].Action.Name;
TreeMenu.Items.AddChildObject(node, StringReplace(IT.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
end;
end;
{$ENDIF}
procedure TfEditorPermisosUsuario.CarregaTreeviews;
var
Contador: Integer;
TempNode: TTreeNode;
Temp: String;
Temp2: String;
Desc: String;
begin
FChangingTree := False;
PC.ActivePage := PageControls;
// Self.FMenu := FUserControl.ControlRight.MainMenu;
//Self.FActionMainMenuBar := FUserControl.ControlRight.ActionMainMenuBar;
{ if Assigned(FUserControl.ControlRight.ActionList) then
Self.FActions := FUserControl.ControlRight.ActionList
else
Self.FActions := FUserControl.ControlRight.ActionManager;}
Self.FExtraRights := FUserControl.ExtraRights;
{ if Assigned(FMenu) then
begin
TreeMenu.Items.Clear;
for Contador := 0 to FMenu.Items.Count - 1 do
if FMenu.Items[Contador].Count > 0 then
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := FMenu.Items[Contador].Name;
TempNode := TreeMenu.Items.AddObject(nil, StringReplace(FMenu.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
TrataItem(FMenu.Items[Contador], TempNode);
end
else
if FMenu.Items[Contador].Caption <> '-' then
begin
New(FTempMPointer);
SetLength(FListaMenu, Length(FListaMenu) + 1); //Adicionado por Luiz 18/01/06
FListaMenu[High(FListaMenu)] := FTempMPointer; //Adicionado por Luiz 18/01/06
FTempMPointer.Selecionado := 0;
FTempMPointer.MenuName := FMenu.Items[Contador].Name;
TreeMenu.Items.AddObject(nil, StringReplace(FMenu.Items[Contador].Caption, '&', '', [rfReplaceAll]), FTempMPointer);
end;
TreeMenu.FullExpand;
TreeMenu.Perform(WM_VSCROLL, SB_TOP, 0);
end;
TempNode := nil;
if Assigned(FActions) then
begin
TreeAction.Items.Clear;
if Assigned(FTempLista) then
FreeAndNil(FTempLista);
FTempLista := TStringList.Create;
for Contador := 0 to TActionList(FActions).ActionCount - 1 do
FTempLista.Append(TActionList(FActions).Actions[contador].Category + #1 + TActionList(FActions).Actions[contador].Name + #2 + TAction(TActionList(FActions).Actions[contador]).Caption);
FTempLista.Sort;
Temp := #1;
for Contador := 0 to FTempLista.Count - 1 do
begin
if Temp <> Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1) then
begin
New(FTempAPointer);
SetLength(FListaAction, Length(FListaAction) + 1); //Adicionado por Luiz 18/01/06
FListaAction[High(FListaAction)] := FTempAPointer; //Adicionado por Luiz 18/01/06
FTempAPointer.Grupo := True;
FTempAPointer.Selecionado := 0;
FTempAPointer.MenuName := 'Grupo';
TempNode := TreeAction.Items.AddObject(nil, StringReplace(Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1), '&', '', [rfReplaceAll]), FTempAPointer);
TempNode.ImageIndex := 2;
TempNode.SelectedIndex := 2;
Temp := Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1);
end;
Temp2 := FTempLista[Contador];
Delete(Temp2, 1, pos(#1, Temp2));
New(FTempAPointer);
SetLength(FListaAction, Length(FListaAction) + 1); //Adicionado por Luiz 18/01/06
FListaAction[High(FListaAction)] := FTempAPointer; //Adicionado por Luiz 18/01/06
FTempAPointer.Grupo := False;
FTempAPointer.Selecionado := 0;
FTempAPointer.MenuName := Copy(Temp2, 1, Pos(#2, Temp2) - 1);
Delete(Temp2, 1, pos(#2, Temp2));
TreeAction.Items.AddChildObject(TempNode, StringReplace(Temp2, '&', '', [rfReplaceAll]), FTempAPointer);
end;
TreeAction.FullExpand;
TreeAction.Perform(WM_VSCROLL, SB_TOP, 0);
end;
}
//ExtraRights
TempNode := nil;
if Self.FExtraRights.Count > 0 then
begin
TreeControls.Items.Clear;
if Assigned(FTempLista) then
FreeAndNil(FTempLista);
FTempLista := TStringList.Create;
for Contador := 0 to Pred(FExtraRights.Count) do
//FTempLista.Append(FExtraRights[Contador].GroupName + #1 + FExtraRights[Contador].Caption + #2 + FExtraRights[Contador].FormName + #3 + FExtraRights[Contador].CompName);
FTempLista.Append(FExtraRights[Contador].GroupName + #1 + FExtraRights[Contador].Caption + #2 + FExtraRights[Contador].Caption + #3 + FExtraRights[Contador].Caption);
FTempLista.Sort;
Temp := #1;
for Contador := 0 to Pred(FTempLista.Count) do
begin
if Temp <> Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1) then
begin
New(FTempCPointer);
SetLength(FListaControl, Length(FListaControl) + 1); //Adicionado por Luiz 18/01/06
FListaControl[High(FListaControl)] := FTempCPointer; //Adicionado por Luiz 18/01/06
FTempCPointer.Grupo := True;
FTempCPointer.Selecionado := 0;
FTempCPointer.FormName := 'Grupo';
FTempCPointer.CompName := 'Grupo';
TempNode := TreeControls.Items.AddObject(nil, Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1), FTempCPointer);
TempNode.ImageIndex := 2;
TempNode.SelectedIndex := 2;
Temp := Copy(FTempLista[Contador], 1, Pos(#1, FTempLista[Contador]) - 1);
end;
Temp2 := FTempLista[Contador];
Delete(Temp2, 1, pos(#1, Temp2));
New(FTempCPointer);
SetLength(FListaControl, Length(FListaControl) + 1); //Adicionado por Luiz 18/01/06
FListaControl[High(FListaControl)] := FTempCPointer; //Adicionado por Luiz 18/01/06
FTempCPointer.Grupo := False;
FTempCPointer.Selecionado := 0;
Desc := Copy(Temp2, 1, Pos(#2, Temp2) - 1); // descricao do objeto
Delete(Temp2, 1, pos(#2, Temp2));
FTempCPointer.FormName := Copy(Temp2, 1, Pos(#3, Temp2) - 1);
Delete(Temp2, 1, pos(#3, Temp2));
FTempCPointer.CompName := Temp2;
TreeControls.Items.AddChildObject(TempNode, Desc, FTempCPointer);
FTempCPointer := nil;
end;
TreeControls.FullExpand;
TreeControls.Perform(WM_VSCROLL, SB_TOP, 0);
end;
{ PageMenu.TabVisible := Assigned(FMenu);
PageAction.TabVisible := Assigned(FActions);}
PageControls.TabVisible := (Assigned(FExtraRights) and (FExtraRights.Count > 0));
end;
procedure TfEditorPermisosUsuario.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 TfEditorPermisosUsuario.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
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; //desmarcar
TreeMenu.Repaint;
end;
end;
procedure TfEditorPermisosUsuario.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
if PTreeAction(TreeAction.Selected.Data).Selecionado = 0 then
PTreeAction(TreeAction.Selected.Data).Selecionado := 1
else
PTreeAction(TreeAction.Selected.Data).Selecionado := 0;
TreeAction.Selected.ImageIndex := PTreeAction(TreeAction.Selected.Data).Selecionado;
TreeAction.Selected.SelectedIndex := PTreeAction(TreeAction.Selected.Data).Selecionado;
end;
TreeAction.Repaint;
end;
procedure TfEditorPermisosUsuario.TreeControlItem(marca: Boolean);
begin
if PTreeControl(TreeControls.Selected.Data).Grupo then
Exit;
if Marca then
begin
if PTreeControl(TreeControls.Selected.Data).Selecionado < 2 then
if PTreeControl(TreeControls.Selected.Data).Selecionado = 0 then
PTreeControl(TreeControls.Selected.Data).Selecionado := 1
else
PTreeControl(TreeControls.Selected.Data).Selecionado := 0;
TreeControls.Selected.ImageIndex := PTreeControl(TreeControls.Selected.Data).Selecionado;
TreeControls.Selected.SelectedIndex := PTreeAction(TreeControls.Selected.Data).Selecionado;
end;
TreeControls.Repaint;
end;
procedure TfEditorPermisosUsuario.TreeMenuClick(Sender: TObject);
begin
if not FChangingTree then
TreeMenuItem(True);
end;
procedure TfEditorPermisosUsuario.BtLiberaClick(Sender: TObject);
begin
Atualiza(True);
end;
procedure TfEditorPermisosUsuario.bCancelarClick(Sender: TObject);
begin
Close;
end;
procedure TfEditorPermisosUsuario.Atualiza(Selec: Boolean);
var
Contador: Integer;
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 TfEditorPermisosUsuario.bAceptarClick(Sender: TObject);
var
Contador: Integer;
begin
with FUserControl.TableRights do
begin
FUserControl.DataConnector.UCExecSQL('Delete from ' + TableName + ' Where ' + FieldUserID + ' = ' + IntToStr(FUser.ID) + ' and ' + FieldModule + ' = ' + QuotedStr(FUserControl.ApplicationID));
FUserControl.DataConnector.UCExecSQL('Delete from ' + TableName + 'EX Where ' + FieldUserID + ' = ' + IntToStr(FUser.ID) + ' and ' + FieldModule + ' = ' + QuotedStr(FUserControl.ApplicationID));
end;
for Contador := 0 to TreeMenu.Items.Count - 1 do
if PTreeMenu(TreeMenu.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRight(FUser.ID, PTreeMenu(TreeMenu.Items[Contador].Data).MenuName);
for Contador := 0 to TreeAction.Items.Count - 1 do
if PTreeAction(TreeAction.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRight(FUser.ID, PTreeAction(TreeAction.Items[Contador].Data).MenuName);
//Extra Rights
for Contador := 0 to Pred(TreeControls.Items.Count) do
if PTreeControl(TreeControls.Items[Contador].Data).Selecionado = 1 then
FUserControl.AddRightEX(FUser.ID, FUserControl.ApplicationID, PTreeControl(TreeControls.Items[Contador].Data).FormName, PTreeControl(TreeControls.Items[Contador].Data).CompName);
Close;
end;
procedure TfEditorPermisosUsuario.BtBloqueiaClick(Sender: TObject);
begin
Atualiza(False);
end;
procedure TfEditorPermisosUsuario.FormShow(Sender: TObject);
var
Contador: Integer;
Selec: Integer;
begin
Caption := 'Permisos para ' + FUser.USERNAME;
// Adcionado por Luiz
SetLength(FListaAction, 0);
SetLength(FListaMenu, 0);
SetLength(FListaControl, 0);
//carrega itens do menu, actions e controles
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;
FChangingTree := False;
end;
procedure TfEditorPermisosUsuario.TreeActionClick(Sender: TObject);
begin
if not FChangingTree then
TreeActionItem(True);
end;
procedure TfEditorPermisosUsuario.TreeControlsClick(Sender: TObject);
begin
if not FChangingTree then
TreeControlItem(True);
end;
procedure TfEditorPermisosUsuario.TreeMenuCollapsing(Sender: TObject; Node: TTreeNode; var AllowCollapse: Boolean);
begin
if (Self.Showing) and (TTreeView(Sender).Focused) then
FChangingTree := True;
end;
procedure TfEditorPermisosUsuario.TreeMenuKeyPress(Sender: TObject; var Key: char);
begin
if Key = ' ' then
begin
TTreeView(Sender).OnClick(Sender);
Key := #0;
end;
end;
procedure TfEditorPermisosUsuario.TreeMenuMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
FChangingTree := False;
end;
procedure TfEditorPermisosUsuario.FormDestroy(Sender: TObject);
var
Contador: Integer;
begin
// Adicionado por Luiz 18/01/06
if Assigned(DSPermiss) then
FreeAndNil(DSPermiss);
if Assigned(DSPermissEX) then
FreeAndNil(DSPermissEX);
if Assigned(DSPerfil) then
FreeAndNil(DSPerfil);
if Assigned(DSPerfilEX) then
FreeAndNil(DSPerfilEX);
if Assigned(FTempLista) then
FreeAndNil(FTempLista);
for Contador := 0 to High(FListaMenu) do
Dispose(FListaMenu[Contador]);
for Contador := 0 to High(FListaAction) do
Dispose(FListaAction[Contador]);
for Contador := 0 to High(FListaControl) do
Dispose(FListaControl[Contador]);
end;
end.