示例#1
0
        /// <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;
		}