quarta-feira, 13 de novembro de 2019

Windows Forms - Hierarquia de Formulários


Caro amigo leitor,
É considerada uma boa prática utilizarmos hierarquia de formulários quando o assunto é cadastro. Uma das primeiras tarefas quando desenvolvemos sistemas é de implementar formas para facilitar e agilizar o desenvolvimento de tarefas corriqueiras, economizando tempo, como por exemplo a base de um formulário de cadastro. Implementaremos neste artigo automaticamente todos os principais botões (Ajuda, Novo,Alterar, Excluir, Cancelar, Gravar, Pesquisar, Imprimir e Sair) junto com suas devidas chamadas. Todo este trabalho será desenvolvido através de uma “Class Library”, que na tradução significa “Biblioteca de Classe”, facilitando o uso em futuros projetos. Faremos todo este trabalho com o auxílio da ferramenta Microsoft Visual Studio 2017 Community.

Criando um Novo Projeto

Inicie um novo projeto no MVS2017 clicando em “Arquivo/Novo/Projeto...”. Clique na opção “Aplicativo do Windows Forms (.NET Framework)”, defina um Nome, como por exemplo “WindowsFormsApp” e por final clique no botão “Ok”. Ver Imagem 01.


Figura 01: Novo Projeto.

Dentro deste projeto que herdaremos os formulários desejados.

Criando a Biblioteca de Classes

Para adicionar a “Class Library” clique com o botão direito sobre a solução escolhendo “Adicionar Novo Projeto” 
escolhendo a opção “Biblioteca de Classes (.NET Framework)”. Defina um nome para a mesma, no nosso caso deixaremos como “Padrao”.Dentro desta biblioteca armazenaremos o formulário Padrão Base. Ver Figura 02.


Figura 02: Biblioteca de Classes.

A nossa Solução será composta da seguinte estrutura:
1 – Fpadrao (Biblioteca de Classe)
2 – WindowsFormsApp (Aplicativo do Windows Forms)
A Figura 03 nos dá uma noção da estrutura do projeto.


Figura 03: Gerenciador de Soluções.

Criando um novo projeto

O primeiro passo será o de criar o formulário base, para isto clique com o botão direito sobre o “WindowsFormsApp” escolhendo um novo Formulário. Defina um nome para o mesmo, exemplo: “FormularioPadrao”. Adicione no formulário um componente do tipo “ToolStrip” com as propriedades:

Autosize: False
GripStyle: Hidden


Para adicionar os itens de menu deveremos clicar na Propriedade “Items”. Dentro do Editor de Coleção de Itens adicione os botões necessários alterando as seguintes propriedades:

Image: System.Drawing.Bitmap (escolha a imagem do botão)
DisplayStyle: Image
ImageScaling: None
Text: Nome do Botão, por exemplo “Novo”
Autosize: False

Na Imagem 04 teremos a estrutura completa.


Figura 04: Editor de Coleção de Itens.

Note que utilizei alguns “ToolStripSeparator” para separar os botões, proporcionando uma melhor distribuição entre os mesmos.
Teremos um resultado idêntico ao da Figura 05.


Figura 05: Formulário Padrão.

Codificando o Exemplo

O método “public partial class” será do tipo “Form“ e no método Construtor não teremos nada de novidade. Implementaremos neste cadastro base o método “public virtual” do componente “Toolstrip”, permitindo utilizá-lo nos cadastros.
using System.Windows.Forms;
namespace FPadrao
{
    public partial class FormularioPadrao : Form
    {

        public FormularioPadrao()
        {
            InitializeComponent();
        }

Método padrão do Construtor.

public virtual void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
   switch (toolStrip1.Items.IndexOf(e.ClickedItem))
   {
case 0: //Botão Ajuda
MessageBox.Show("Rotinas referentes ao Arquivo de Ajuda ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;

     case 2: //Botão Inclusão
MessageBox.Show("Rotinas referentes à Inclusão ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 3: //Botão Alteração                
MessageBox.Show("Rotinas referentes à Alteração ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 4: //Botão Exclusão
MessageBox.Show("Rotinas referentes à Exclusão ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 6: //Botão Cancelar
MessageBox.Show("Rotinas referentes ao Cancelamento ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 7: //Botão Salvar
MessageBox.Show("Rotinas referentes à Gravação ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 9: //Botão Pesquisar
MessageBox.Show("Rotinas referentes à Pesquisa ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 10: //Botão Impressão
MessageBox.Show("Rotinas referentes à Impressão ! ", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
     break;
     case 12: //Botão Sair
     Close();
     break;
     }
   }
  }
}

No evento clique do “Toolstrip” iremos realizar um “Switch/Case” para verificar o componente clicado, permitindo ter um controle através do índice do mesmo. Importante salientar que estou apenas apresentando um “MessageBox” para identificar cada botão clicado.

É nesta parte do código que devemos implementar todo o código base de cadastro, inclusão, edição, pesquisa, etc... Fica aí a dica caro leitor!

Herdando o Formulário Base
Para herdar o formulário criado acima é muito fácil, no “WindowsFormsApp” clique com o botão direito sobre o mesmo escolhendo a opção “Adicionar/Novo Item/Windows Forms”. Escolha “Formulário Herdado” inserindo um Nome e por final clique no botão Adicionar. Ver Figura 06


Figura 06: Adicionar Formulário Herdado.

Veremos que o formulário não irá herdar mais da classe “Form” e sim da classe “FormularioPadrao”. Ver código abaixo.
public partial class FrmExemplo : FPadrao.FormularioPadrao
{
    public FrmExemplo()
    {
       InitializeComponent();
    }
}
Neste formulário poderemos adicionar quaisquer componentes, como por exemplo TextBox, Label, entre outros. Veremos na Figura 07 o projeto em Run-Time.


Figura 07: Projeto em run-time.

Conclusões

A herança de formulários é uma das características de boa prática de programação. No Microsoft Visual Studio esta tarefa se torna fácil e simples, nos auxiliando e agilizando muito na implementação de cadastros nos sistemas. Também foi apresentado neste mês a possibilidade tanto na parte gráfica (referentes a componentes) do formulário quanto na implementação de códigos padrões.
Fica a dica, um forte abraço e até o mês que vem!

Referências


Sobre o autor

Thiago Cavalheiro Montebugnoli adora aprender novas tecnologias. Formado pela Faculdade de Tecnologia de Botucatu – SP (FATEC), já desenvolveu softwares utilizando a plataforma .NET, Delphi junto com Banco de Dados SQL Server e Firebird. Como experiências profissionais mais recentes, possui em seu currículo sua atuação no Centro de Processamento de Dados da Prefeitura Municipal de Itaí-SP e atualmente compõe a equipe da Coordenadoria Tecnologia da Informação no IFSP – Instituto Federal do Estado de São Paulo em Avaré. Além disso, é colunista mensal da Revista The Club Megazine e é consultor Técnico do The Club. Possui as seguintes certificações: MCP - Microsoft Certified Professional, MCTS - Microsoft Certified Technology Specialist, MCAD - Microsoft Certified Application Developer e  MCSD - Microsoft Certified Solution Developer.

Nenhum comentário:

Postar um comentário