Post on 25-Jul-2016
description
C# 5.0 COM VISUAL STUDIO 2012 – CURSO COMPLETO
©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa
4
11..33 AAMMBBIIEENNTTEE DDEE DDEESSEENNVVOOLLVVIIMMEENNTTOO
O sistema operativo Windows apresenta-se provido de um vasto conjunto de funcionalidades, que permite a qualquer programador, através de qualquer linguagem visual, criar a interface necessária entre as aplicações que desenvolve e os seus utilizadores finais. Essa característica própria do sistema operativo é designada por GDI10, sendo responsável por tarefas básicas como desenhar linhas, curvas e tipos de letra, providenciando todo um API11 específico para a execução dessas operações.
A parte visível de qualquer aplicação (formulários, caixas de diálogo, botões, menus, barras de ferramentas, imagens, etc.) é implementada pela interface da própria linguagem visual a que o programador recorre através do seu IDE12. A linguagem é responsável por aceder ao GDI e criar os objetos que o programador solicita, mostrando-os no editor de código do Visual Studio. Em resumo, a programação em ambientes gráficos processa-se segundo o diagrama de blocos apresentado na Figura 1.5.
FFIIGGUURRAA 11..55 – Grafismo numa linguagem visual
10 Do inglês Graphics Device Interface (Interface de Dispositivos Gráficos); é o padrão do sistema
operativo Windows utilizado para representar objetos gráficos e transmiti-los para dispositivos de saída, tais como monitores e impressoras.
11 Do inglês Application Programming Interface (Interface de Programação de Aplicativos); consiste num conjunto de funções específicas do sistema operativo acessíveis através de qualquer linguagem de programação.
12 Do inglês Integrated Development Environment (Ambiente de Desenvolvimento Integrado); é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente, os IDE unem a técnica de RAD (Rapid Application Development), que consiste em permitir que os programadores obtenham um aproveitamento maior, desenvolvendo o código de programação com maior rapidez.
PROGRAMADOR
GDI WINDOWS
C# IDE
EDITOR DO VISUAL STUDIO
MMOODDEELLAAÇÇÃÃOO DDEE DDAADDOOSS
© FCA – Editora de Informática
221
Em diagramas ER, os atributos são representados por círculos e os identificadores com um preenchimento a cinza (Figura 7.4).
FFIIGGUURRAA 77..44 – Representação de atributos num diagrama ER
77..44..55 FFAASSEE VV –– TTRRAATTAARR RREELLAAÇÇÕÕEESS
A fase final do processo de modelação permitirá mapear as relações obtidas para que o modelo possa ser implementado em qualquer SGBD e consiste, basicamente, em determinar quais os atributos comuns às entidades relacionadas.
77..44..55..11 TTRRAATTAAMMEENNTTOO DDEE RREELLAAÇÇÕÕEESS DDOO TTIIPPOO NN--NN
As relações do tipo N-N entre duas entidades A e B são desdobradas em duas relações do tipo 1-N para que haja um elo de ligação. Para tal, acrescenta-se uma nova entidade, que é chamada E N T ID A D E D E J U N Ç Ã O, e que é composta pelos atributos que a própria relação, eventualmente, possua e pelos dois atributos determinantes das entidades A e B.
A relação N-N ‘Produtos’ – ‘Encomendas’ vai originar duas relações 1-N entre a entidade de junção e ‘Produtos’ e ‘Encomendas’. À nova entidade foi atribuído o nome ‘Detalhes_Enc’ e esta possui uma chave composta (dois atributos determinantes ‘E’ e ‘P’). A Figura 7.5 apresenta o esquema de desdobramento de uma relação do tipo N-N em duas do tipo 1-N.
ENCOMENDAS FORNECEDORES
PRODUTOS DISTRITOS
1-N
N-N 1-N
E F
P D
PRODUTO
FORNECEDOR DATA
DISTRITO
C# 5.0 COM VISUAL STUDIO 2012 – CURSO COMPLETO
©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa
250
FFIIGGUURRAA 88..2211 – Modelo de dados completo
6) Guarde o modelo e feche-o.
88..44..33 OOBBTTEENNÇÇÃÃOO DDEE LLIISSTTAAGGEENNSS
Nesta secção, serão abordadas as técnicas de programação envolvidas no tratamento, pesquisa e análise da informação, tais como a seleção de campos, aplicação de filtros (critérios) e ordenação do resultado final. Assim, torna-se possível isolar, de uma forma seletiva, a informação existente em uma ou mais tabelas de dados.
Nos exemplos apresentados ao longo desta secção, inclua os diferentes fragmentos de código no método Main e teste-os individualmente.
CCÓÓDDIIGGOO ((OOBBTTEENNÇÇÃÃOO DDEE TTOODDAA AA IINNFFOORRMMAAÇÇÃÃOO PPRREESSEENNTTEE NNUUMMAA TTAABBEELLAA))
static void Main(string[] args)
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var lista = from Funcionarios in dc.Funcionarios select Funcionarios;
foreach(Funcionarios func in lista)
{
Console.WriteLine("ID: " + func.ID);
Console.WriteLine("Nome: " + func.Nome);
Console.WriteLine("Departamento: " + func.Departamento);
Console.WriteLine();
}
Console.ReadLine();
}
IIMMPPRREESSSSÃÃOO
© FCA – Editora de Informática
313
A caixa de diálogo apresentada na Figura 11.2 é conseguida através do controlo PrintPreviewDialog. Este controlo permite a pré-visualização do relatório de impressão por parte dos utilizadores.
FFIIGGUURRAA 1111..22 – Caixa de diálogo para pré-visualização de impressão
Na próxima secção, iremos demonstrar como criar um relatório completo para impressão através da classe PrintDocument e das caixas de diálogo padrão auxiliares implementadas pelos controlos PrintDialog e PrintPreviewDialog.
1111..33 EEXXEERRCCÍÍCCIIOO RREESSOOLLVVIIDDOO
Um estudante de trigonometria ficou encarregue de programar uma pequena aplicação capaz de mostrar num formulário (Figura 11.3) uma tabela de senos, cossenos e tangentes de diversos ângulos compreendidos entre 0 e 1, com intervalos de 1 milésimo de radiano.
FFIIGGUURRAA 1111..33 – Interface gráfica
IINNTTEEGGRRAAÇÇÃÃOO CCOOMM AA XXMMLL
© FCA – Editora de Informática
327
EEXXEEMMPPLLOO
O formulário apresentado na Figura 12.1 descreve a interface gráfica que deverá ser implementada para manipular o ficheiro XML.
FFIIGGUURRAA 1122..11 – Formulário utilizado para a manipulação do ficheiro XML
Assim, deverão ser embutidos os controlos que indicamos no formulário apresentado na Figura 12.2.
FFIIGGUURRAA 1122..22 – Desenho do formulário
CCÓÓDDIIGGOO ((FFIICCHHEEIIRROO ’’FFOORRMM11..CCSS’’ –– IINNIICCIIAALLIIZZAAÇÇÕÕEESS))
//Importação de namespaces
using System.Xml;
using System.IO;
comboBox1 treeView1
textBox1
C# 5.0 COM VISUAL STUDIO 2012 – CURSO COMPLETO
©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa
376
AANNÁÁLLIISSEE
Para definir os limites neste tipo de objetos recorremos às tags Stroke (define a cor) e StrokeThickness (define a espessura). As linhas e os polígonos são desenhados tendo em conta as diferentes coordenadas (propriedades X1, Y1, X2 e Y2 para as linhas e propriedade Points para os polígonos); por seu turno, os retângulos e as elipses são construídos através das respetivas propriedades Height (representa a altura) e Width (representa a largura).
AAPPRREESSEENNTTAAÇÇÃÃOO DDOO SSEEPPAARRAADDOORR ””GGEEOOMMEETTRRIIAA””
Na XAML, há duas formas de desenhar formas geométricas: através da classe Shape (aplicadas no separador anterior) e através da classe Geometry (aplicadas no separador mostrado na Figura 13.7). Embora sejam duas classes aparentemente muito semelhantes, diferem em termos de composição e de versatilidade. As classes Geometry apresentam mais funcionalidades, como por exemplo, a combinação de duas ou mais formas geométricas e a utilização de imagens.
FFIIGGUURRAA 1133..77 – Separador ”Geometria”
CCÓÓDDIIGGOO ((FFIICCHHEEIIRROO XXAAMMLL –– SSEEPPAARRAADDOORR ””GGEEOOMMEETTRRIIAA””))
<!-- Inclua o código no interior da tag TabItem do separador ”Geometria” -->
<Grid>
<Grid.ColumnDefinitions>
C# 5.0 COM VISUAL STUDIO 2012 – CURSO COMPLETO
©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa
472
1155..55 IINNTTEEGGRRAAÇÇÃÃOO CCOOMM OO MMIICCRROOSSOOFFTT AACCCCEESSSS
É possível, via Interop, criarmos e manipularmos bases de dados Access, como iremos ver ao longo desta secção.
EEXXEEMMPPLLOO
O objetivo deste exemplo consiste em exportar toda a informação contida na folha de cálculo para uma nova base de dados Access. Após o processo de exportação, deveremos obter uma tabela semelhante à disposta na Figura 15.6.
FIGURA 15.6 – Resultado da exportação de dados para o Access
AALLTTEERRAAÇÇÃÃOO DDAA IINNTTEERRFFAACCEE
Adicione um botão de comando standard ao formulário apresentado na Figura 15.2.
RREEFFEERRÊÊNNCCIIAA AAOO AACCCCEESSSS
Adicione a referência à biblioteca de objetos Access, como tem vindo a ser feito.
CCÓÓDDIIGGOO ((IINNIICCIIAALLIIZZAAÇÇÕÕEESS))
Acrescente as instruções assinaladas na listagem: public partial class Form1 : Form
{
//Apontador para a aplicação PowerPoint
Microsoft.Office.Interop.PowerPoint.Application pptApp;
//Apontador para a aplicação Access
Microsoft.Office.Interop.Access.Application accessApp;
string apresent; //Caminho completo até ao ficheiro PowerPoint
PPRROOJJEETTOO II
© FCA – Editora de Informática
515
1122..ºº PPAASSSSOO –– PPRROOCCEESSSSAAMMEENNTTOO DDEE EENNCCOOMMEENNDDAASS
Obtenha a interface que apresentamos na Figura 16.31, incorporando uma ComboBox (para a seleção do fornecedor), um MonthCalendar (para a seleção da data), duas ListBox e dois botões de comando (para a escolha dos produtos), e um controlo NumericUpDown (para as quantidades de cada produto), para além dos botões de comando e dos respetivos controlos informativos.
FIGURA 16.31 – Interface do formulário FormEncomendas2 (separador “Encomendar”)
Para melhor identificação dos controlos, altere as suas propriedades Name para comboBoxFornecedor, monthCalendarData, listBoxEscolha, listBoxEscolhidos, buttonEscolher, buttonNaoEscolher, numericUpDownQuantidade, buttonOK e buttonCancelar. Uma vez que o controlo monthCalendar é só para mera informação da data atual, desative-o (propriedade Enabled igual a False).
CCÓÓDDIIGGOO
//Evento Load do formulário
private void FormEncomendas2_Load(object sender, EventArgs e)
{
comboBoxFornecedor.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoxFornecedor.Items.Clear();
listBoxEscolha.Items.Clear();
listBoxEscolhidos.Items.Clear();
C# 5.0 COM VISUAL STUDIO 2012 – CURSO COMPLETO
©© FFCCAA –– EEddiittoorraa ddee IInnffoorrmmááttiiccaa
558
FFIIGGUURRAA 1188..66 – Resultado da execução do Projeto III (ratings)
1188..66 EEXXEERRCCÍÍCCIIOOSS PPRROOPPOOSSTTOOSS
1) Implemente um temporizador capaz de verificar atualizações de 5 em 5 minutos;
2) Ao fazer clique sobre cada uma das bandeiras, o utilizador deverá visualizar uma nova página com um gráfico de evolução de ratings dos últimos sete dias para a moeda escolhida;
3) Permita a visualização do gráfico anterior entre duas datas escolhidas pelo utilizador.