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.