You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

162 lines
4.3 KiB

unit ufrmLiberaPermissao;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Vcl.StdCtrls, Vcl.ComCtrls;
type
TfrmLiberaPermissao = class(TmstMaster)
cb_perm: TComboBox;
lbl_perm: TLabel;
lbl_user: TLabel;
edt_user: TEdit;
lbl_pass: TLabel;
edt_pass: TEdit;
btn_ok: TButton;
btn_cancel: TButton;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btn_okClick(Sender: TObject);
private
{ Private declarations }
public
string_permissoes: TStringList;
level: integer;
{ Public declarations }
end;
var
frmLiberaPermissao: TfrmLiberaPermissao;
implementation
{$R *.dfm}
uses udtmSystem;
procedure TfrmLiberaPermissao.btn_okClick(Sender: TObject);
var
tava_aberto: boolean;
recno: integer;
begin
inherited;
if dtmSystem.tblGrupos.Active then
begin
recno := dtmSystem.tblGrupos.recno;
dtmSystem.tblGrupos.Close;
tava_aberto := true;
end;
if not dtmSystem.tblUsuariosConsulta.Active then
begin
dtmSystem.tblUsuariosConsulta.Open;
end;
if ((not dtmSystem.tblUsuariosConsulta.Locate('TX_USUARIO',
AnsiUpperCase(edt_user.Text), [])) and
(not dtmSystem.tblUsuariosConsulta.Locate('TX_USUARIO',
AnsiLowerCase(edt_user.Text), [])) and
(not dtmSystem.tblUsuariosConsulta.Locate('TX_USUARIO', edt_user.Text, []))) then
begin
MessageDlg('Usuário Inexistente/Incorreto.', mtWarning, [mbok], 0);
dtmSystem.tent_perm := dtmSystem.tent_perm + 1;
if (dtmSystem.tent_perm > 2) then
begin
MessageDlg
('Você excedeu o limite de tentativas de Entrada (3 tentativas). O programa irá terminar agora.',
mtWarning, [mbok], 0);
Application.Terminate;
end;
edt_user.SetFocus;
exit;
end
else if AnsiUpperCase(edt_pass.Text) <>
AnsiUpperCase(dtmSystem.tblUsuariosConsultaTX_SENHA.AsString) then
begin
MessageDlg('Senha Incorreta.', mtWarning, [mbok], 0);
dtmSystem.tent_perm := dtmSystem.tent_perm + 1;
if (dtmSystem.tent_perm > 2) then
begin
MessageDlg
('Você excedeu o limite de tentativas de Entrada (3 tentativas). O programa irá terminar agora.',
mtWarning, [mbok], 0);
Application.Terminate;
end;
edt_pass.SetFocus;
exit;
end
else if dtmSystem.tblUsuariosConsultaTP_ATIVO.Value = 'N' then
begin
MessageDlg('Conta de usuário bloqueada.', mtWarning, [mbok], 0);
exit;
end
else
begin
dtmSystem.tblGrupos.Locate('ID_GRUPO',
dtmSystem.tblUsuariosConsultaID_GRUPO.AsInteger, []);
if dtmSystem.tblGruposTP_SU.AsString = 'N' then
begin
MessageDlg('Conta de usuário não é um administrador.', mtWarning,
[mbok], 0);
exit;
end
else
begin
dtmSystem.tent_perm := 0;
dtmSystem.cod_liberapermissao := cb_perm.ItemIndex;
MessageDlg('Permissão concedida com sucesso!', mtWarning,
[mbok], 0);
end;
end;
if tava_aberto then
begin
dtmSystem.tblGrupos.Open;
dtmSystem.tblGrupos.recno := recno;
end;
end;
procedure TfrmLiberaPermissao.FormCreate(Sender: TObject);
begin
inherited;
string_permissoes := TStringList.Create;
end;
procedure TfrmLiberaPermissao.FormShow(Sender: TObject);
var
i, id_parent: integer;
cb_item: TStringList;
string_helper: string;
j: integer;
begin
inherited;
if not dtmSystem.tblPermissoes.Active then
begin
dtmSystem.tblPermissoes.Open;
end;
cb_item := TStringList.Create;
for i := 0 to string_permissoes.Count - 1 do
begin
cb_item.Clear;
dtmSystem.tblPermissoes.Locate('CD_PERMISSAO', string_permissoes[i], []);
cb_item.Add(dtmSystem.tblPermissoesTX_DESCRICAO.AsString);
id_parent := dtmSystem.tblPermissoesID_PARENT.AsInteger;
while id_parent <> level do
begin
dtmSystem.tblPermissoes.Locate('ID_PERMISSAO', id_parent, []);
cb_item.Add(dtmSystem.tblPermissoesTX_DESCRICAO.AsString);
id_parent := dtmSystem.tblPermissoesID_PARENT.AsInteger;
end;
for j := 0 to cb_item.Count - 1 do
begin
string_helper := string_helper + cb_item[cb_item.Count - 1 - j] + ' - ';
end;
setlength(string_helper, length(string_helper) - 3);
cb_perm.Items.Add(string_helper);
string_helper := '';
end;
cb_perm.ItemIndex := 0;
end;
end.