247 lines
7.6 KiB
ObjectPascal
247 lines
7.6 KiB
ObjectPascal
|
|
unit pUCFrame_Profile;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
{$I 'UserControl.inc'}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
{$IFDEF DELPHI5_UP}
|
|||
|
|
{$ELSE}
|
|||
|
|
Variants,
|
|||
|
|
{$ENDIF}
|
|||
|
|
Buttons,
|
|||
|
|
Classes,
|
|||
|
|
Controls,
|
|||
|
|
Db,
|
|||
|
|
DBGrids,
|
|||
|
|
Dialogs,
|
|||
|
|
ExtCtrls,
|
|||
|
|
Forms,
|
|||
|
|
Graphics,
|
|||
|
|
Grids,
|
|||
|
|
IncPerfil_U,
|
|||
|
|
Messages,
|
|||
|
|
StdCtrls,
|
|||
|
|
SysUtils,
|
|||
|
|
UcBase,
|
|||
|
|
UserPermis_U,
|
|||
|
|
Windows;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TFrame_Profile = class(TFrame)
|
|||
|
|
DbGridPerf: TDBGrid;
|
|||
|
|
Panel2: TPanel;
|
|||
|
|
BtnAddPer: TBitBtn;
|
|||
|
|
BtnAltPer: TBitBtn;
|
|||
|
|
BtnExcPer: TBitBtn;
|
|||
|
|
BtnClose: TBitBtn;
|
|||
|
|
BtnAcePer: TBitBtn;
|
|||
|
|
DataPerfil: TDataSource;
|
|||
|
|
procedure BtnAddPerClick(Sender: TObject);
|
|||
|
|
procedure BtnAltPerClick(Sender: TObject);
|
|||
|
|
procedure BtnExcPerClick(Sender: TObject);
|
|||
|
|
procedure BtnAcePerClick(Sender: TObject);
|
|||
|
|
protected
|
|||
|
|
FIncluirPerfil: TfrmIncluirPerfil;
|
|||
|
|
procedure ActionBtPermissProfileDefault;
|
|||
|
|
procedure SetWindowPerfil(Adicionar: Boolean);
|
|||
|
|
procedure SetWindowProfile;
|
|||
|
|
private
|
|||
|
|
{ Private declarations }
|
|||
|
|
public
|
|||
|
|
fUserControl: TUserControl;
|
|||
|
|
FDataSetPerfilUsuario: TDataset;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
{ Public declarations }
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.SetWindowPerfil(Adicionar: Boolean);
|
|||
|
|
begin
|
|||
|
|
with fUserControl.UserSettings.AddChangeProfile do
|
|||
|
|
begin
|
|||
|
|
FIncluirPerfil.Caption := WindowCaption;
|
|||
|
|
if Adicionar then
|
|||
|
|
FIncluirPerfil.LbDescricao.Caption := LabelAdd
|
|||
|
|
else
|
|||
|
|
FIncluirPerfil.LbDescricao.Caption := LabelChange;
|
|||
|
|
|
|||
|
|
FIncluirPerfil.lbNome.Caption := LabelName;
|
|||
|
|
FIncluirPerfil.btGravar.Caption := BtSave;
|
|||
|
|
FIncluirPerfil.btCancela.Caption := BtCancel;
|
|||
|
|
FIncluirPerfil.Position := FUserControl.UserSettings.WindowsPosition;
|
|||
|
|
FIncluirPerfil.FDataSetPerfilUsuario := FDataSetPerfilUsuario;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.ActionBtPermissProfileDefault;
|
|||
|
|
var
|
|||
|
|
TempCampos, TempCamposEX: String;
|
|||
|
|
begin
|
|||
|
|
UserPermis.FTempIdUser := FDataSetPerfilUsuario.FieldByName('IdUser').AsInteger;
|
|||
|
|
with fUserControl do
|
|||
|
|
begin
|
|||
|
|
TempCampos := Format(' %s as IdUser, %s as Modulo, %s as ObjName, %s as UCKey ',
|
|||
|
|
[TableRights.FieldUserID,
|
|||
|
|
TableRights.FieldModule,
|
|||
|
|
TableRights.FieldComponentName,
|
|||
|
|
TableRights.FieldKey]);
|
|||
|
|
TempCamposEX := Format('%s, %s as FormName ', [TempCampos, TableRights.FieldFormName]);
|
|||
|
|
|
|||
|
|
UserPermis.DSPermiss := DataConnector.UCGetSQLDataset(Format('Select %s from %s tab Where tab.%s = %s and tab.%s = %s',
|
|||
|
|
[TempCampos,
|
|||
|
|
TableRights.TableName,
|
|||
|
|
TableRights.FieldUserID,
|
|||
|
|
FDataSetPerfilUsuario.FieldByName('IdUser').AsString,
|
|||
|
|
TableRights.FieldModule,
|
|||
|
|
QuotedStr(ApplicationID)]));
|
|||
|
|
|
|||
|
|
UserPermis.DSPermiss.Open;
|
|||
|
|
|
|||
|
|
UserPermis.DSPermissEX := DataConnector.UCGetSQLDataset(Format('Select %s from %s tab1 Where tab1.%s = %s and tab1.%s = %s',
|
|||
|
|
[TempCamposEX,
|
|||
|
|
TableRights.TableName + 'EX',
|
|||
|
|
TableRights.FieldUserID,
|
|||
|
|
FDataSetPerfilUsuario.FieldByName('IdUser').AsString,
|
|||
|
|
TableRights.FieldModule,
|
|||
|
|
QuotedStr(ApplicationID)]));
|
|||
|
|
|
|||
|
|
UserPermis.DSPermissEX.Open;
|
|||
|
|
|
|||
|
|
UserPermis.DSPerfil := TDataset.Create(UserPermis);
|
|||
|
|
|
|||
|
|
UserPermis.ShowModal;
|
|||
|
|
|
|||
|
|
FDataSetPerfilUsuario.Close;
|
|||
|
|
FDataSetPerfilUsuario.Open;
|
|||
|
|
FDataSetPerfilUsuario.Locate('idUser', UserPermis.FTempIdUser, []);
|
|||
|
|
|
|||
|
|
FreeAndNil(UserPermis);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.SetWindowProfile;
|
|||
|
|
begin
|
|||
|
|
with fUserControl.UserSettings.Rights do
|
|||
|
|
begin
|
|||
|
|
UserPermis.Caption := WindowCaption;
|
|||
|
|
UserPermis.LbDescricao.Caption := LabelProfile;
|
|||
|
|
UserPermis.lbUser.Left := UserPermis.LbDescricao.Left + UserPermis.LbDescricao.Width + 5;
|
|||
|
|
UserPermis.PageMenu.Caption := PageMenu;
|
|||
|
|
UserPermis.PageAction.Caption := PageActions;
|
|||
|
|
UserPermis.PageControls.Caption := PageControls; // By Vicente Barros Leonel
|
|||
|
|
UserPermis.BtLibera.Caption := BtUnlock;
|
|||
|
|
UserPermis.BtBloqueia.Caption := BtLock;
|
|||
|
|
UserPermis.BtGrava.Caption := BtSave;
|
|||
|
|
UserPermis.BtCancel.Caption := BtCancel;
|
|||
|
|
UserPermis.Position := fUsercontrol.UserSettings.WindowsPosition;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.BtnAcePerClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if FDataSetPerfilUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
UserPermis := TUserPermis.Create(self);
|
|||
|
|
UserPermis.FUserControl := fUsercontrol;
|
|||
|
|
SetWindowProfile;
|
|||
|
|
UserPermis.lbUser.Caption := FDataSetPerfilUsuario.FieldByName('Nome').AsString;
|
|||
|
|
ActionBtPermissProfileDefault;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.BtnAddPerClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
try
|
|||
|
|
FIncluirPerfil := TfrmIncluirPerfil.Create(Self);
|
|||
|
|
FIncluirPerfil.FUserControl := Self.FUserControl;
|
|||
|
|
SetWindowPerfil(True);
|
|||
|
|
FIncluirPerfil.ShowModal;
|
|||
|
|
finally
|
|||
|
|
FreeAndNil(FIncluirPerfil);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.BtnAltPerClick(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
if FDataSetPerfilUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
try
|
|||
|
|
FIncluirPerfil := TfrmIncluirPerfil.Create(self);
|
|||
|
|
FIncluirPerfil.FUserControl := Self.FUserControl;
|
|||
|
|
FIncluirPerfil.FNewIdUser := FDataSetPerfilUsuario.FieldByName('IdUser').AsInteger;
|
|||
|
|
SetWindowPerfil(False);
|
|||
|
|
with FIncluirPerfil do
|
|||
|
|
begin
|
|||
|
|
EditDescricao.Text := FDataSetPerfilUsuario.FieldByName('Nome').AsString;
|
|||
|
|
FAltera := True;
|
|||
|
|
ShowModal;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
FreeAndNil(FIncluirPerfil);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TFrame_Profile.BtnExcPerClick(Sender: TObject);
|
|||
|
|
var
|
|||
|
|
TempID: Integer;
|
|||
|
|
CanDelete: Boolean;
|
|||
|
|
ErrorMsg: String;
|
|||
|
|
TempDS: TDataset;
|
|||
|
|
begin
|
|||
|
|
if FDataSetPerfilUsuario.IsEmpty then
|
|||
|
|
Exit;
|
|||
|
|
TempID := FDataSetPerfilUsuario.FieldByName('IDUser').AsInteger;
|
|||
|
|
TempDS := FUserControl.DataConnector.UCGetSQLDataset('Select ' + FUserControl.TableUsers.FieldUserID + ' as IdUser from ' +
|
|||
|
|
FUserControl.TableUsers.TableName +
|
|||
|
|
' Where ' + FUserControl.TableUsers.FieldTypeRec + ' = ' + QuotedStr('U') +
|
|||
|
|
' AND ' + FUserControl.TableUsers.FieldProfile + ' = ' + IntToStr(TempID));
|
|||
|
|
|
|||
|
|
if TempDS.FieldByName('IdUser').AsInteger > 0 then
|
|||
|
|
begin
|
|||
|
|
TempDS.Close;
|
|||
|
|
FreeAndNil(TempDS);
|
|||
|
|
//changed by fduenas: PromptDelete_WindowCaption
|
|||
|
|
if MessageBox(handle, PChar(Format(FUserControl.UserSettings.UsersProfile.PromptDelete, [FDataSetPerfilUsuario.FieldByName('Nome').AsString])),
|
|||
|
|
PChar(FUserControl.UserSettings.UsersProfile.PromptDelete_WindowCaption), MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2) <> idYes then
|
|||
|
|
Exit;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
TempDS.Close;
|
|||
|
|
FreeAndNil(TempDS);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
CanDelete := True;
|
|||
|
|
if Assigned(FUserControl.onDeleteProfile) then
|
|||
|
|
FUserControl.onDeleteProfile(TObject(Owner), TempID, CanDelete, ErrorMsg);
|
|||
|
|
if not CanDelete then
|
|||
|
|
begin
|
|||
|
|
MessageDlg(ErrorMSG, mtWarning, [mbOK], 0);
|
|||
|
|
Exit;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with FUserControl do
|
|||
|
|
begin
|
|||
|
|
DataConnector.UCExecSQL('Delete from ' + TableUsers.TableName + ' where ' + TableUsers.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
DataConnector.UCExecSQL('Delete from ' + TableRights.TableName + ' where ' + TableRights.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
DataConnector.UCExecSQL('Delete from ' + TableRights.TableName + 'EX where ' + TableRights.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
DataConnector.UCExecSQL('Update ' + TableUsers.TableName +
|
|||
|
|
' Set ' + TableUsers.FieldProfile + ' = null where ' + TableUsers.FieldUserID + ' = ' + IntToStr(TempID));
|
|||
|
|
end;
|
|||
|
|
FDataSetPerfilUsuario.Close;
|
|||
|
|
FDataSetPerfilUsuario.Open;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TFrame_Profile.Destroy;
|
|||
|
|
begin
|
|||
|
|
//nada a destruir
|
|||
|
|
//n<>o destruir o FDataSetPerfilUsuario o USERCONTROL toma conta dele
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|