unit ufrmCheckAdmin; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.UITypes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TfrmCheckAdmin = class(TForm) lbl_user: TLabel; edt_user: TEdit; lbl_password: TLabel; edt_password: TEdit; btn_ok: TButton; btn_cancel: TButton; procedure btn_cancelClick(Sender: TObject); procedure btn_okClick(Sender: TObject); procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private procedure WMMoving(var MSG: TWMMoving); message WM_MOVING; { Private declarations } public { Public declarations } end; var frmCheckAdmin: TfrmCheckAdmin; implementation {$R *.dfm} uses udtmSystem; procedure TfrmCheckAdmin.btn_cancelClick(Sender: TObject); begin if (MessageDlg ('Deseja realmente cancelar o término de sessăo? Se sim o programa será terminado.', mtcustom, [mbok, mbcancel], 0)) = mrCancel then begin Abort; end; Close; end; procedure TfrmCheckAdmin.btn_okClick(Sender: TObject); begin with dtmsystem do begin if ((not tblUsuarios.Locate('TX_USUARIO', AnsiUpperCase(edt_user.Text), [])) and (not tblUsuarios.Locate('TX_USUARIO', AnsiLowerCase(edt_user.Text), [])) and (not tblUsuarios.Locate('TX_USUARIO', edt_user.Text, []))) then begin MessageDlg ('Usuário e/ou Senha Inexistente/Incorreto. O programa irá finalizar agora.', mtWarning, [mbok], 0); frmCheckAdmin.ModalResult := mrCancel; end else begin if tblUsuariosID_GRUPO.AsInteger <> 1 then begin MessageDlg ('Este Usuário năo possúi privilégios de administrador. O programa irá finalizar agora.', mtWarning, [mbok], 0); frmCheckAdmin.ModalResult := mrCancel; end else begin if AnsiUpperCase(edt_password.Text) <> AnsiUpperCase(tblUsuariosTX_SENHA.AsString) then begin MessageDlg ('Usuário e/ou Senha Inexistente/Incorreto. O programa irá finalizar agora.', mtWarning, [mbok], 0); frmCheckAdmin.ModalResult := mrCancel; end; end; end; end; end; procedure TfrmCheckAdmin.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean); begin Resize := false; end; procedure TfrmCheckAdmin.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmCheckAdmin.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_ESCAPE then begin Key := 0; Close; end; end; procedure TfrmCheckAdmin.FormKeyPress(Sender: TObject; var Key: Char); begin // faz o enter funcionar como 'tab' if (Key = #13) then begin SelectNext(ActiveControl as TWinControl, true, true); Key := #0; end; end; procedure TfrmCheckAdmin.WMMoving(var MSG: TWMMoving); var workArea: TRect; begin workArea := Screen.WorkareaRect; with MSG.DragRect^ do begin if left < workArea.left then OffsetRect(MSG.DragRect^, workArea.left - left, 0); if top < workArea.top then OffsetRect(MSG.DragRect^, 0, workArea.top - top); if Right > workArea.Right then OffsetRect(MSG.DragRect^, workArea.Right - Right, 0); if Bottom > workArea.Bottom then OffsetRect(MSG.DragRect^, 0, workArea.Bottom - Bottom); end; end; end.