unit ufrmVerIE; 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, Data.DB, ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset; type TConsisteInscricaoEstadual = function(const Insc, UF: AnsiString) : Integer; stdcall; type TfrmVerIE = class(TmstMaster) edt_IE: TEdit; lbl_IE: TLabel; lbl_UF: TLabel; cb_UF: TComboBox; btn_verificar: TButton; procedure FormCreate(Sender: TObject); procedure btn_verificarClick(Sender: TObject); private procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; { Private declarations } public { Public declarations } end; var frmVerIE: TfrmVerIE; implementation {$R *.dfm} uses udtmSystem, System.UITypes; procedure TfrmVerIE.btn_verificarClick(Sender: TObject); // código que pega na dll como verificar o IE var IRet: Integer; LibHandle: THandle; ConsisteInscricaoEstadual: TConsisteInscricaoEstadual; begin try begin LibHandle := LoadLibrary('DllInscE32.Dll'); if LibHandle <= HINSTANCE_ERROR then raise Exception.Create('Dll não carregada'); @ConsisteInscricaoEstadual := GetProcAddress(LibHandle, 'ConsisteInscricaoEstadual'); if @ConsisteInscricaoEstadual = nil then raise Exception.Create('Entrypoint Download não encontrado na Dll'); IRet := ConsisteInscricaoEstadual(edt_IE.Text, cb_UF.Text); dtmSystem.tblEstados.Locate('TX_SIGLA', cb_UF.Text, []); if IRet = 0 then MessageDlg('Inscrição válida para ' + dtmSystem.tblEstadosTX_NOME.AsString, mtInformation, [mbOk], 0) else if IRet = 1 then MessageDlg('Inscrição inválida para ' + dtmSystem.tblEstadosTX_NOME.AsString, mtError, [mbOk], 0) else MessageDlg('Parâmetros inválidos', mtError, [mbOk], 0); edt_IE.SetFocus; end; finally FreeLibrary(LibHandle); end; end; procedure TfrmVerIE.FormCreate(Sender: TObject); begin inherited; with dtmSystem do begin qryConsulta.SQL.Text := 'SELECT * FROM SYS_ESTADOS'; // faz uma pesquisa na tabela estados pra montar o combo box qryConsulta.Open; qryConsulta.First; while not qryConsulta.Eof do begin cb_UF.Items.Add(qryConsulta.FieldByName('TX_SIGLA').AsString); qryConsulta.Next; end; if not tblCHGEmpresa.IsEmpty then begin edt_IE.Text := tblCHGEmpresaTX_IE.AsString; cb_UF.Text := tblEstadosTX_SIGLA.AsString; end; end; end; procedure TfrmVerIE.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.