/// <param name="tipoFormulário">Formulário base, que herda de Apresentação.Formulários.BaseFormulário</param> public Aplicação(Type tipoFormulário, Usuários usuários, bool efetuarLogin, Splash splash) { #if !DEBUG try #endif { this.splash = splash; // Validar formulário if (typeof(BaseFormulário).IsInstanceOfType(tipoFormulário)) throw new Exception("A aplicação requer um formulário do tipo Apresentação.Formulários.BaseFormulário"); try { Application.EnableVisualStyles(); } catch (Exception erro) { if (splash != null) { splash.Mensagem = "Erro ao ligar efeitos visuais!"; System.Threading.Thread.Sleep(2000); splash.Mensagem = erro.Message; System.Threading.Thread.Sleep(2000); } else MessageBox.Show("Erro ao ligar efeitos visuais!"); } this.usuários = usuários; cultura = System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR"); if (splash != null) splash.Mensagem = "Conectando ao banco de dados ... "; Usuários.AoRegistrarErro += new Usuários.ErroUsuárioHandler(AoRegistrarErro); #if DEBUG Console.WriteLine("Efetuando conexão!"); Usuários.AoCriarConexão += new Usuários.UsuárioHandler(AoCriarConexão); #endif Application.DoEvents(); if (efetuarLogin) { bool cancelouLogin = !Login.EfetuarLogin(usuários, splash); if (cancelouLogin) throw new LoginNãoEfetuado(); if (Usuários.UsuárioAtual == null) throw new LoginOuSenhaIncorretos(); if (Entidades.Pessoa.Funcionário.FuncionárioAtual == null) throw new LoginNãoAssociadoAFuncionário(); } else Usuários.UsuárioAtual = usuários.EfetuarLogin("imjoias", "b9r8hukl3"); } #if !DEBUG catch (LoginNãoEfetuado e) { /* Este erro só ocorre quando a versão é DEBUG. * Em versão RELEASE, este erro implica em * finalização do programa sem mostrar * qualquer mensagem. */ throw e; } catch (Exception e) { MessageBox.Show(e.Message, "Indústria Mineira de Joias", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new Exception("Não foi possível carregar o sistema.", e); } #endif if (splash != null) splash.Mensagem = "Carregando controles gráficos ..."; #if DEBUG Console.WriteLine("Construindo janela principal!"); #endif try { formulário = (BaseFormulário) tipoFormulário.Assembly.CreateInstance(tipoFormulário.FullName); this.MainForm = formulário; } catch (Exception e) { #if DEBUG MessageBox.Show("Ocorreu uma exceção não tratada e não depurável durante a criação do formulário:\n\n" + e.ToString()); #else throw new Exception("Não foi possível construir janela principal!", e); #endif } }
/// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); if (basesInferiores != null) foreach (BaseInferior baseInferior in basesInferiores) baseInferior.Dispose(); if (basesPosteriores != null) foreach (BaseInferior baseInferior in basesPosteriores) baseInferior.Dispose(); baseAtual = null; baseFormulário = null; basesInferiores = null; basesPosteriores = null; }