Olá pessoal estou fazendo meu TCC, e agora surgiu um problema, quando eu fecho o programa ele da um som de erro, vou desponibilizar o código fonte, quem poder me ajudar agradeço, no final vou desponibilizar o código todo para a comunidade. Retirei algum trecho de código só para ficar menor.
Grato, Ricardo Rocha. unit uLogin; interface uses type private { Private declarations } Iniconf: TIniFile; public { Public declarations } end; var frmLogin: TfrmLogin; implementation uses uDMPrincipal, uPrincipal; {$R *.dfm} { Está procedure é responsável pela verificação do usúario, quando ele clicar em login, a procedure verifica no banco de dados se existe um usuário com este nome e senha } procedure TfrmLogin.BitBtnLoginClick(Sender: TObject); begin if JvValidatorsUsuario.Validate then begin if DMPrincipal.ValidaUsuario(EditLogin.Text, EditSenha.Text) then begin {Se usuário válido} try ShowMessage('Usuário aceito com sucesso'); Application.CreateForm(TfrmPrincipal, frmPrincipal); frmPrincipal.ShowModal; Application.Terminate; FreeAndNil(frmPrincipal); finally frmPrincipal.Free; end; end else {Usuáiro Inválido} raise Exception.Create('Usuário ou Senha inválidos'); end; end; { Caso o usuário queira cacelar o login no programa está procedure termina a fecha o formulário de login } procedure TfrmLogin.BitBtnCancelarClick(Sender: TObject); begin Application.Terminate; end; { } procedure TfrmLogin.FormCreate(Sender: TObject); begin Iniconf := TIniFile.Create('F:\SIS\config\Config_Banco.ini'); DMPrincipal.MDOConexao.Close; DMPrincipal.MDOConexao.DatabaseName := Iniconf.ReadString('Banco_Dados','Path',''); DMPrincipal.MDOConexao.Open; end; procedure TfrmLogin.BuscarBandodeDados1Click(Sender: TObject); begin if OpenDialogBancoDados.Execute then begin DMPrincipal.MDOConexao.Close; DMPrincipal.MDOConexao.DatabaseName := OpenDialogBancoDados.FileName; Iniconf.WriteString('Banco_Dados', 'Path', DMPrincipal.MDOConexao.DatabaseName); DMPrincipal.MDOQueryValidaUsuario.Open; DMPrincipal.MDOConexao.Open; end; end; end. { Software: Sistema de Automação Comercial Autor: Ricardo Messis da Silva Rocha Orientador: Eduardo Ferroni Prof. Iliana Formulário principal do programa } unit uPrincipal; interface uses type private { Private declarations } public { Public declarations } Iniconfiskin: TIniFile; end; var frmPrincipal: TfrmPrincipal; implementation uses uLogin, uDMPrincipal, uSkin, uCadUser; {$R *.dfm} { Procedure responsável para colocar a hora, data e nome de usuário logado no StatusBarPrincipal } procedure TfrmPrincipal.TimerHaraDataTimer(Sender: TObject); begin StatusBarPrincipal.Panels[3].Text:= 'Hora:'+' '+TimeToStr(Time)+' '+'Data:'+' '+DateToStr(Date); StatusBarPrincipal.Panels[1].Text:= 'Usuário:'+' '+DMPrincipal.MDOQueryValidaUsuario.Params[0].AsString; end; { Está procedure libera o formuário login da memoria assim que o login é feito e o formulário principal é carregado } procedure TfrmPrincipal.FormCreate(Sender: TObject); begin FreeAndNil(frmLogin); Iniconfiskin := TIniFile.Create('F:\SIS\config\Config_Layout.ini'); skinPricipal.SkinFile := Iniconfiskin.ReadString('Layout','Path',''); skinPricipal.Active := True; end; procedure TfrmPrincipal.mSkinClick(Sender: TObject); begin if frmLayout = NIL then begin frmLayout := TfrmLayout.Create(self); frmLayout.ShowModal; FreeAndNil(frmLayout); end; end; procedure TfrmPrincipal.mUsuarioClick(Sender: TObject); begin if frmCadUser = NIL then begin frmCadUser := TfrmCadUser.Create(self); frmCadUser.ShowModal; FreeAndNil(frmCadUser); end; end; procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; unit uSkin; interface uses ShlObj; type private { Private declarations } public { Public declarations } Iniconf: TIniFile; end; var frmLayout: TfrmLayout; implementation uses uPrincipal; {$R *.dfm} procedure TfrmLayout.BitBtnProcurarSkinClick(Sender: TObject); begin if OpenDialogSkin.Execute then frmPrincipal.Iniconfiskin.WriteString('Layout','Path', OpenDialogSkin.FileName); end; procedure TfrmLayout.BitBtnAtivarSkinClick(Sender: TObject); begin frmPrincipal.skinPricipal.SkinFile := frmPrincipal.Iniconfiskin.ReadString('Layout','Path',''); frmPrincipal.skinPricipal.Active := True; frmPrincipal.skinPricipal.SkinAllForms := True; frmLayout.SetFocus; end; end.