Desenvolvimento - C#

Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 3

Nesta 3ª parte de nosso artigo, iremos nos aprofundar no conceito de Herança da Programação Orientada à Objetos criando um Formulário Base e aplicando as configurações necessárias para nele.

por Wellington Balbo de Camargo



Olá pessoal, continuamos nossa série de artigos criando aplicações simples em Windows Forms usando a linguagem C# e o banco de dados SQL Server.

 Nesta parte iremos finalizar nossa padronização no sistema aplicando algumas configurações personalizadas ao formulário principal. Falaremos também sobre os conceitos de Programação Orientada à Objetos. Acompanhem:

 De início, vamos alterar as imagens dos menus do form principal. Para isso, abra o form, clique nos botões do menu, se não tiver dado nome a eles, aproveite e já dê o nome de Médicos, Pacientes e Consultas. Agora pesquise no Google Imagens as respectivas imagens para cada botão, salve em seu pc, clique em cada botão e, no menu Propriedades, clique no botão ao lado do atributo Image e clique em Import, como mostra a imagem abaixo:

ImportImage.JPG

 Use de preferência imagens com tamanho máximo de 48x48. Após inserir as imagens clique no atributo ImageScaling e o deixe como None para a imagem ficar com o tamanho real. Se a imagem não ficar transparente, é só alterar a propriedade ImageTransparentColor para a cor da sua imagem.

 Podemos alterar nosso menu de navegação para que fique, por exemplo, à esquerda de nossa janela e não em cima. Por meio da propriedade Dock podemos fazer isso, como mostra a imagem abaixo:

DockProperty.JPG

 Ok, no meu exemplo vou deixá-lo no topo mesmo, mais se preferir pode alterar a propriedade Dock como mostrou a imagem.

  A princípio, nosso formulário está pronto. Com cadastros e funcionalidades simples, nos deu uma boa visão de como é fácil trabalhar com os controles do Visual Studio.

Form1.JPG

  Agora imagine o seguinte cenário: uma aplicação dessa feita para a vida real onde, no cadastro pacientes, não são 5 nem 10 nem 100 e sim 1000 registros.

Como ficaria se precisarmos navegar no registro 999, por exemplo? Iriamos de um em um? Ficaria complicado, concordam? Por isso digo que até o momento montamos um sistema o mais simples possível.

A partir de agora iremos mudar nosso foco e simular uma aplicação de verdade, para um potencial cliente, utilizando alguns conceitos da Programação Orientada à Objetos, como a Herança.

 De forma simplista o conceito de Herança significa que uma ou mais classes filhas herdam atributos e métodos da classe pai (conhecida também como classe base). A herança é usada com a intenção de reaproveitar o código e assim garantir uma alta produtividade em nosso sistema.

 Vamos trabalhar também em nosso sistema com o conceito de Parametrização, que é o conceito de implementar detalhes e parâmetros ao sistema de acordo com as necesssidades do cliente. Seguindo este conceito, não teremos mais um formulário como o de Pacientes, com os botões avançar e retroceder os registros, pois quando abrirmos o form de Pacientes, não queremos ver todos os Pacientes e sim ver determinado Paciente.

 Será feito assim em todos os formulários, por meio do conceito de Herança. Teremos também um formulário de pesquisa. Comecemos então nosso formulário base principal que será o “formulário pai”:

 Clique em Add > Windows Form, dê o nome de frmBase e clique em OK.

Será gerado nosso formulário, clique nele, abra a janela Properties (F4) e altere as seguintes propriedades:

- Start Position – coloque CenterScreen para que o form abra no meio da tela

- MaximizeBox – false

- MinimizeBox – false – para que só apareça o botão de fechar no form

- KeyPreview – true, para ativar o uso do teclado nos eventos do form

- FormBorderStyle – altere para FixedDialog para que o form não possa ser redimensionado

 Agora vamos inserir os controles que serão padrões nos demais forms. Arraste uma ToolStrip de nossa Toolbox para o form e insira 4 botões, 1 separador e mais 1 botão, nessa ordem referentes aos botões Novo, Salvar, Excluir, Localizar e Fechar conforme mostra a imagem abaixo:

FormBase.JPG

Altere a propriedade DisplayStyle para Image and Text dos botões, a propriedade ImageScaling para None e insira imagens para os botões referentes como fizemos no form anterior. Altere também a propriedade Design dos botões para podermos identificá-los mais facilmente quando formos usá-los na programação. Na ordem altere para btnNovo, btnSalvar, btnExcluir, btnLocalizar e btnFechar.

 Adicione o controle StatusStrip a seu form, nele adicione um StatusStripLabel, dê o nome de lblMensagem e deixe a propriedade Text em branco para que possamos configurar via código uma mensagem ao usuário quando ele realizar determinada ação.

 Clique com o botão direito no seu form e clique em View Code ou simplesmente aperte F7 para ir a página de códigos. Nela, vamos criar um enumerador, com os itens Inserindo, Navegando e Editando, e criaremos uma variável privada deste enumerador para sabermos qual é o status do sistema, se por exemplo o usuário estiver inserindo, devemos desabilitar o botão de excluir, ou quando estiver localizando, devemos desabilitar o botão de salvar.

 Desta forma estaremos otimizando nosso código e evitando erros do usuário.  A imagem abaixo mostra nosso código:

enumStatusCadastro.JPG

 Vamos voltar ao nosso form, no modo visual e implementar o código para o botão Fechar, como parte de nosso exemplo. Primeiro dê dois cliques em cima do botão de fechar e chame o método Close(). Depois, volte ao form, abra a janela de propriedades do mesmo, clique nos Eventos, selecione o evento KeyDown, dê dois cliques nele e insira o código abaixo para que o form se feche ao apertar ESC.

CloseMethod.JPG

 Usando esse conceito de Herança em nosso sistema, só utilizaremos este código acima apenas uma vez e os demais herdarão as funcionalidades do formulário base, o que melhora nosso desempenho e temos facilidade se precisarmos dar manutenção.

 Na próxima parte de nosso artigo, iremos continuar a codificação de nosso formulário base implementando os métodos que iremos usar na herança do mesmo.

 Confira no próximo artigo!

Créditos à Luciano Pimenta, que fez as vídeo-aulas e ao Portal Linha de Código, por onde pude baixá-las, estudá-las e posteriormente fazer este artigo.

 Quaisquer dúvidas, estou à disposição.

 Até o próximo artigo!

Wellington Balbo de Camargo

Wellington Balbo de Camargo - Desenvolvedor Web/Desktop em .NET, com pouco mais de 1 ano de experiência na área. Cursando o 4º Semestre de Análise de Sistemas, atualmente estuda para melhorar os conhecimentos em SQL Server e ASP.NET, buscando em um futuro próximo as certificações Microsoft nessas áreas. Mantém um blog com dicas e artigos para iniciantes em .NET no endereço http://programandodotnet.wordpress.com e nas horas vagas procura ajudar e aprender com o pessoal do Fórum daMSDN. Atualmente é editor de artigos da Linha de Código.