Distribuição
Lidel – edições técnicas, lda
Sede R. D. Estefânia, 183, R/C Dto. – 1049-057 LISBOA Tel: +351 213 511 448 * Fax: +351 213 522 684 Revenda: revenda@lidel.pt Exportação: depinternacional@lidel.pt Venda online: livraria@lidel.pt Marketing: marketing@lidel.pt
Livraria Av. Praia da Vitória, 14 – 1000-247 LISBOA Tel: +351 213 511 448 * Fax: +351 213 173 259 livraria@lidel.pt Edição
FCA – Editora de Informática
Av. Praia da Vitória, 14 – 1000-247 LISBOA Tel: +351 213 511 448 Email: fca@fca.pt
Copyright © maio 2015 FCA – Editora de Informática, Lda. ISBN: 978-972-722-805-8 Capa: José Manuel Ferrão – Look-Ahead Impressão e acabamento: Cafilesa – Soluções Gráficas, Lda. – Venda do Pinheiro Depósito Legal N.º 392126/15 Livro segundo o Novo Acordo Ortográfico Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto, aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Os nomes comerciais referenciados neste livro têm patente registada. Marcas Registadas de FCA – Editora de Informática, Lda. – ®
®
®
Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.
ÍNDICE GERAL PRÓLOGO ....................................................................................................... XIX COMO UTILIZAR ESTE LIVRO............................................................................... XXI 1. INTRODUÇÃO ................................................................................................... 1
1.1 Ambiente de desenvolvimento .............................................................................................. 1 1.1.1 Iniciar o Visual Studio pela primeira vez ................................................................. 2 1.1.2 Soluções e projetos....................................................................................................... 3 1.2 Sensibilização ao sistema de ajuda ........................................................................................ 9 1.2.1 Utilização dos recursos online .................................................................................... 9 1.2.2 Download e instalação da biblioteca para uso local ............................................... 10 1.3 Aplicações-consola ................................................................................................................ 10 1.4 Convenções de código .......................................................................................................... 12 1.4.1 Indentação .................................................................................................................. 12 1.4.2 Apresentação sintática .............................................................................................. 13 1.5 Módulos de classe ................................................................................................................. 13 1.5.1 Acesso a módulos ...................................................................................................... 13 1.5.2 Criação de módulos ................................................................................................... 13 1.5.3 Gravação de módulos ............................................................................................... 14 1.5.4 Remoção de módulos ................................................................................................ 14 1.6 Declaração de variáveis ........................................................................................................ 14 1.6.1 Atribuição de valores a variáveis ............................................................................ 15 1.6.2 Obtenção de valores contidos em variáveis ........................................................... 16 1.7 Declaração de constantes ...................................................................................................... 16 1.8 Leitura de dados provenientes do utilizador .................................................................... 17 1.9 Apresentação de dados ao utilizador ................................................................................. 18 1.10 Comentários ........................................................................................................................... 19 1.11 Regras e convenções de nomenclatura ............................................................................... 19 1.12 Fases de desenvolvimento de um programa ..................................................................... 20 1.12.1 Fase I – compreender o problema ........................................................................... 20 1.12.2 Fase II – declarar variáveis e constantes ................................................................. 21 1.12.3 Fase III – obter dados ................................................................................................ 21 1.12.4 Fase IV – obter resultado .......................................................................................... 22 1.12.5 Fase V – apresentar resultado .................................................................................. 22 1.13 Exercícios propostos.............................................................................................................. 23 2. ELEMENTOS DE PROGRAMAÇÃO ...................................................................... 25
2.1 Tipos de dados ....................................................................................................................... 25 2.1.1 Literais ......................................................................................................................... 25 2.1.2 byte ............................................................................................................................... 26 2.1.3 ushort ........................................................................................................................... 27 © FCA – Editora de Informática
VIII
2.2
2.3
2.4
2.5
2.6
2.7
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 2.1.4 uint ............................................................................................................................... 27 2.1.5 ulong............................................................................................................................. 27 2.1.6 sbyte.............................................................................................................................. 28 2.1.7 short .............................................................................................................................. 28 2.1.8 int ................................................................................................................................. 28 2.1.9 long ............................................................................................................................... 29 2.1.10 float ............................................................................................................................... 29 2.1.11 double ........................................................................................................................... 29 2.1.12 decimal .......................................................................................................................... 30 2.1.13 char ............................................................................................................................... 30 2.1.14 string ............................................................................................................................ 30 2.1.15 bool ............................................................................................................................... 31 Declaração de variáveis ........................................................................................................ 31 2.2.1 Declaração sem atribuição ........................................................................................ 32 2.2.2 Declaração com atribuição........................................................................................ 32 2.2.3 Declaração múltipla................................................................................................... 32 2.2.4 Ciclo de vida das variáveis ....................................................................................... 33 Tabelas .................................................................................................................................... 34 2.3.1 Tabelas unidimensionais .......................................................................................... 34 2.3.2 Tabelas multidimensionais ....................................................................................... 35 Operadores ............................................................................................................................. 36 2.4.1 Operadores aritméticos ............................................................................................. 36 2.4.2 Operadores relacionais ............................................................................................. 37 2.4.3 Operadores lógicos .................................................................................................... 38 Estruturas de controlo........................................................................................................... 38 2.5.1 Estruturas de decisão ................................................................................................ 39 2.5.2 Estruturas de repetição ............................................................................................. 43 Exercícios resolvidos ............................................................................................................. 47 2.6.1 Área ............................................................................................................................. 47 2.6.2 Salários ........................................................................................................................ 48 2.6.3 Fatorial ........................................................................................................................ 50 Exercícios propostos.............................................................................................................. 51
3. PROGRAMAÇÃO ORIENTADA A OBJETOS................................................................ 53
3.1 Conceitos gerais ..................................................................................................................... 53 3.2 Classes ..................................................................................................................................... 54 3.2.1 Atributos ..................................................................................................................... 55 3.2.2 Métodos ...................................................................................................................... 55 3.2.3 Instâncias .................................................................................................................... 57 3.2.4 Construtores ............................................................................................................... 58 3.2.5 Destrutores ................................................................................................................. 59 3.2.6 Estados ........................................................................................................................ 61 3.2.7 Mensagens .................................................................................................................. 63 3.3 Herança ................................................................................................................................... 64 © FCA – Editora de Informática
ÍNDICE GERAL
IX
3.4 Polimorfismo .......................................................................................................................... 67 3.4.1 Classes abstratas ........................................................................................................ 67 3.4.2 Métodos abstratos ...................................................................................................... 68 3.4.3 Herança de classes abstratas .................................................................................... 68 3.4.4 Implementação de métodos abstratos..................................................................... 69 3.5 Interfaces................................................................................................................................. 69 3.6 Exercícios resolvidos ............................................................................................................. 70 3.6.1 Área (via classes) ....................................................................................................... 71 3.6.2 Salários (via classes) .................................................................................................. 72 3.6.3 Fatorial (via classes)................................................................................................... 73 3.7 Exercícios propostos.............................................................................................................. 75 4. FUNÇÕES INTRÍNSECAS .................................................................................... 77
4.1 Funções matemáticas ............................................................................................................ 77 4.1.1 Função Sign................................................................................................................. 77 4.1.2 Função Abs .................................................................................................................. 77 4.1.3 Função Round ............................................................................................................. 78 4.1.4 Funções Floor e Ceiling............................................................................................... 79 4.1.5 Função Sqrt ................................................................................................................. 79 4.1.6 Função Pow ................................................................................................................. 80 4.1.7 Funções Log e Log10 ................................................................................................... 80 4.1.8 Funções Sin, Asin, Cos, Acos, Tan e Atan ................................................................. 81 4.2 Funções de texto .................................................................................................................... 81 4.2.1 Funções ToLower e ToUpper ...................................................................................... 81 4.2.2 Funções TrimStart, TrimEnd e Trim ......................................................................... 82 4.2.3 Função SubString ....................................................................................................... 82 4.2.4 Função Replace ............................................................................................................ 83 4.2.5 Funções StartsWith, EndsWith e Contains ................................................................ 83 4.2.6 Função IndexOf e LastIndexOf ................................................................................... 84 4.3 Funções de data e hora ......................................................................................................... 85 4.4 Funções de array .................................................................................................................... 86 4.5 Funções de formatação ......................................................................................................... 87 4.6 Exercícios resolvidos ............................................................................................................. 87 4.6.1 Pitágoras ..................................................................................................................... 88 4.6.2 Contador de palavras ................................................................................................ 89 4.6.3 Numeração romana ................................................................................................... 90 4.7 Exercícios propostos.............................................................................................................. 94 5. USABILIDADE ................................................................................................ 95
5.1 Interfaces................................................................................................................................. 95 5.1.1 Interface eletromecânica ........................................................................................... 95 5.1.2 Interface de linha de comandos ............................................................................... 96 5.1.3 Interface gráfica.......................................................................................................... 96 5.1.4 Interface web ............................................................................................................... 97 5.1.5 Interface tátil............................................................................................................... 98 © FCA – Editora de Informática
X
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO
5.1.6 Interface sonora .......................................................................................................... 98 5.2 As 10 heurísticas de Nielsen ................................................................................................ 99 5.2.1 Feedback...................................................................................................................... 100 5.2.2 Linguística ................................................................................................................ 100 5.2.3 Interrupção ............................................................................................................... 100 5.2.4 Consistência .............................................................................................................. 100 5.2.5 Prevenção .................................................................................................................. 100 5.2.6 Memorização ............................................................................................................ 101 5.2.7 Shortcuts .................................................................................................................... 101 5.2.8 Clareza ...................................................................................................................... 101 5.2.9 Descomplicar ............................................................................................................ 101 5.2.10 Documentação.......................................................................................................... 101 5.3 Design de aplicações Windows .......................................................................................... 101 5.3.1 Modos de ecrã .......................................................................................................... 102 5.3.2 Tipos de janelas ........................................................................................................ 102 5.3.3 Caixas de controlo ................................................................................................... 103 5.3.4 Redimensionamento e mobilidade ........................................................................ 103 5.3.5 Barras de estado ....................................................................................................... 103 5.3.6 Zoom........................................................................................................................... 104 5.3.7 Barras de deslocamento .......................................................................................... 104 5.3.8 Barras de notificação ............................................................................................... 104 5.3.9 Menus e barras de ferramentas .............................................................................. 105 5.3.10 Barras de progresso ................................................................................................. 105 5.3.11 Psicologia das cores ................................................................................................. 105 5.3.12 Apresentação de texto ............................................................................................. 107 5.3.13 Seleção de opções..................................................................................................... 107 5.3.14 Caixas de diálogo ..................................................................................................... 108 6. WINDOWS FORMS ........................................................................................ 109
6.1 Apresentação ........................................................................................................................ 109 6.2 Criação de projetos .............................................................................................................. 109 6.3 Caixas de diálogo ................................................................................................................ 112 6.3.1 Argumento Text ....................................................................................................... 112 6.3.2 Argumento Caption .................................................................................................. 113 6.3.3 Argumento Buttons .................................................................................................. 113 6.3.4 Argumento Icon........................................................................................................ 114 6.3.5 Retorno da MessageBox ............................................................................................ 115 6.4 Controlos .............................................................................................................................. 115 6.4.1 Toolbox (Caixa de Ferramentas) ............................................................................ 116 6.4.2 Button (botão de comando) ..................................................................................... 118 6.4.3 CheckBox (caixa de verificação) .............................................................................. 118 6.4.4 CheckedListBox (caixa de listagem com caixas de verificação)............................ 118 6.4.5 ComboBox (caixa de combinação) ........................................................................... 119 6.4.6 DateTimePicker (seletor de data e hora) ................................................................. 119 © FCA – Editora de Informática
ÍNDICE GERAL
XI
6.4.7 Label (rótulo) ............................................................................................................. 120 6.4.8 LinkLabel (hiperligação) ........................................................................................... 120 6.4.9 ListBox (caixa de listagem simples) ....................................................................... 120 6.4.10 ListView (caixa de listagem multifuncional) ......................................................... 121 6.4.11 MaskedTextBox (caixa de texto com validação) .................................................... 121 6.4.12 MonthCalendar (controlo-calendário) .................................................................... 122 6.4.13 NotifyIcon (ícone de notificação) ............................................................................ 122 6.4.14 NumericUpDown (seletor numérico) ...................................................................... 123 6.4.15 PictureBox (imagem) ................................................................................................ 123 6.4.16 ProgressBar (barra de progressão) .......................................................................... 123 6.4.17 RadioButton (botão de opção) ................................................................................. 124 6.4.18 RichTextBox (caixa de texto com formatação avançada) ..................................... 124 6.4.19 TextBox (caixa de texto simples) ............................................................................ 124 6.4.20 ToolTip (dica) ............................................................................................................ 125 6.4.21 TreeView (lista em árvore) ....................................................................................... 125 6.4.22 WebBrowser (navegador de páginas da Web) ....................................................... 126 6.5 Convenções de nomenclatura ............................................................................................ 126 6.6 Objeto Form .......................................................................................................................... 127 6.6.1 Janela de propriedades ........................................................................................... 127 6.6.2 Propriedade Text ...................................................................................................... 130 6.6.3 Propriedad BackgroundImage .................................................................................. 130 6.6.4 Propriedade BackgroundImageLayout ..................................................................... 133 6.6.5 Propriedade BackColor ............................................................................................. 133 6.6.6 Propriedade Opacity ................................................................................................ 134 6.6.7 Propriedade Icon ...................................................................................................... 135 6.6.8 Propriedade Cursor .................................................................................................. 135 6.6.9 Propriedades Height e Width .................................................................................. 136 6.6.10 Propriedades Left e Top ........................................................................................... 136 6.6.11 Propriedade StartPosition ........................................................................................ 137 6.6.12 Propriedade WindowState ....................................................................................... 137 6.6.13 Propriedade ControlBox........................................................................................... 137 6.6.14 Propriedades MaximizeBox e MinimizeBox............................................................ 138 6.6.15 Propriedade ShowIcon ............................................................................................. 138 6.6.16 Propriedade ShowInTaskbar .................................................................................... 138 6.6.17 Propriedade FormBorderStyle.................................................................................. 139 6.6.18 Propriedade Enabled ................................................................................................ 139 6.6.19 Método Close............................................................................................................. 140 6.6.20 Método CenterToScreen............................................................................................ 140 6.6.21 Eventos Load e FormClosed ...................................................................................... 140 6.6.22 Eventos MouseClick e MouseDoubleClick ............................................................... 141 6.6.23 Eventos MouseMove e MouseHover......................................................................... 142 6.6.24 Eventos MouseEnter e MouseLeave ......................................................................... 143 6.6.25 Eventos KeyDown e KeyUp ...................................................................................... 143 © FCA – Editora de Informática
XII
6.7
6.8
6.9
6.10
6.11
6.12
6.13
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 6.6.26 Evento KeyPress ........................................................................................................ 144 6.6.27 Eventos Move e Resize .............................................................................................. 144 Controlo Label....................................................................................................................... 145 6.7.1 Propriedade BorderStyle .......................................................................................... 145 6.7.2 Propriedade AutoSize .............................................................................................. 146 6.7.3 Propriedade Image ................................................................................................... 147 6.7.4 Propriedade ImageAlign .......................................................................................... 147 6.7.5 Propriedade TextAlign............................................................................................. 148 6.7.6 Propriedade ForeColor ............................................................................................. 148 6.7.7 Propriedade Font...................................................................................................... 148 6.7.8 Propriedade Visible .................................................................................................. 150 6.7.9 Método Hide ............................................................................................................. 151 Controlo Button .................................................................................................................... 151 6.8.1 Propriedades TabIndex e TabStop ........................................................................... 151 6.8.2 Método Focus ............................................................................................................ 153 6.8.3 Eventos Enter e Leave ............................................................................................... 153 Controlo TextBox.................................................................................................................. 154 6.9.1 Propriedade ReadOnly ............................................................................................. 154 6.9.2 Propriedade PasswordChar ...................................................................................... 154 6.9.3 Propriedades MultiLine, WordWrap e ScrollBars .................................................. 155 6.9.4 Propriedade MaxLength .......................................................................................... 156 6.9.5 Método AppendText ................................................................................................. 157 6.9.6 Método Clear............................................................................................................. 157 6.9.7 Métodos Select, SelectAll e DeselectAll .................................................................... 157 6.9.8 Evento TextChanged ................................................................................................. 158 Controlos ComboBox e ListBox ............................................................................................ 158 6.10.1 Propriedade Items ................................................................................................... 159 6.10.2 Propriedade Sorted .................................................................................................. 165 6.10.3 Propriedade DropDownStyle (apenas em ComboBox) ......................................... 166 6.10.4 Propriedade MaxDropDownItems (apenas em ComboBox) ................................. 166 6.10.5 Evento SelectedIndexChanged .................................................................................. 166 Controlos CheckBox e RadioButton ..................................................................................... 167 6.11.1 Propriedade Checked ............................................................................................... 167 6.11.2 Propriedade CheckState (apenas em CheckBox) .................................................... 167 6.11.3 Eventos CheckedChanged e CheckStateChanged ..................................................... 169 Exercícios resolvidos ........................................................................................................... 169 6.12.1 Sites ........................................................................................................................... 169 6.12.2 Ficheiros ................................................................................................................... 173 6.12.3 Datas ......................................................................................................................... 176 6.12.4 Formatos .................................................................................................................. 179 Exercícios propostos............................................................................................................ 183
7. MODELAÇÃO DE DADOS .................................................................................. 185
7.1 Sistemas de gestão de bases de dados .............................................................................. 185 © FCA – Editora de Informática
ÍNDICE GERAL
XIII
7.2 Estruturação de uma base de dados ................................................................................. 186 7.3 Normalização ....................................................................................................................... 187 7.3.1 Primeira forma normal ........................................................................................... 188 7.3.2 Segunda forma normal ........................................................................................... 189 7.3.3 Terceira forma normal ............................................................................................ 193 7.4 Modelo entidade-relação .................................................................................................... 194 7.4.1 Fase I – definir entidades ........................................................................................ 195 7.4.2 Fase II – definir relações.......................................................................................... 195 7.4.3 Fase III – determinar tipo de relações ................................................................... 196 7.4.4 Fase IV – definir atributos ...................................................................................... 198 7.4.5 Fase V – tratar relações............................................................................................ 199 7.5 Exercícios resolvidos ........................................................................................................... 200 7.5.1 Escola de música ...................................................................................................... 201 7.5.2 Software house ......................................................................................................... 205 7.5.3 Seguradora................................................................................................................ 207 7.6 Exercícios propostos............................................................................................................ 211 8. LINQ ........................................................................................................ 213
8.1 O que é a LINQ? .................................................................................................................. 213 8.2 Apresentação de um caso real ........................................................................................... 213 8.2.1 Desenho da base de dados ..................................................................................... 214 8.2.2 Integração com o Visual Studio ............................................................................. 218 8.2.3 Obtenção de listagens.............................................................................................. 221 8.2.4 Manipulação de dados ............................................................................................ 230 8.3 Exercícios resolvidos ........................................................................................................... 233 8.3.1 ListView .................................................................................................................... 233 8.3.2 TreeView ................................................................................................................... 235 8.3.3 DataGridView .......................................................................................................... 237 8.4 Exercícios propostos............................................................................................................ 239 9. TAREFAS DE SISTEMA OPERATIVO..................................................................... 241
9.1 Gestão do sistema de ficheiros........................................................................................... 241 9.1.1 Verificação de diretórios ......................................................................................... 241 9.1.2 Criação de diretórios ............................................................................................... 242 9.1.3 Eliminação de diretórios ......................................................................................... 243 9.1.4 Deslocação de diretórios ......................................................................................... 243 9.1.5 Verificação de ficheiros ........................................................................................... 244 9.1.6 Criação de ficheiros ................................................................................................. 245 9.1.7 Eliminação de ficheiros ........................................................................................... 246 9.1.8 Deslocação de ficheiros ........................................................................................... 246 9.1.9 Cópia de ficheiros .................................................................................................... 247 9.1.10 Cópia de diretórios .................................................................................................. 248 9.1.11 Renomeação de ficheiros ........................................................................................ 249 9.1.12 Renomeação de diretórios ...................................................................................... 249 © FCA – Editora de Informática
XIV
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO
9.2 Deteção de software .............................................................................................................. 250 9.2.1 Sistema operativo .................................................................................................... 250 9.2.2 Software instalado ..................................................................................................... 252 9.3 Deteção de hardware ............................................................................................................ 253 9.3.1 Drives ......................................................................................................................... 253 9.3.2 Processador e memória ........................................................................................... 254 9.4 Gestão de processos ............................................................................................................ 255 9.4.1 Lista de processos .................................................................................................... 255 9.4.2 Iniciar processos....................................................................................................... 256 9.4.3 Terminar processos ................................................................................................. 256 9.5 Definições regionais e globalização .................................................................................. 257 9.6 Exercícios resolvidos ........................................................................................................... 258 9.6.1 Explorer ..................................................................................................................... 258 9.6.2 Espaço em disco ....................................................................................................... 262 9.7 Exercícios propostos............................................................................................................ 264 10. ACESSO A FICHEIROS DE TEXTO ..................................................................... 265
10.1 Introdução ............................................................................................................................ 265 10.2 Acesso e manipulação de ficheiros ................................................................................... 265 10.3 Exercícios resolvidos ........................................................................................................... 270 10.3.1 Encriptação ............................................................................................................... 270 10.3.2 Descodificador ......................................................................................................... 273 10.4 Exercícios propostos............................................................................................................ 276 11. IMPRESSÃO ............................................................................................... 277
11.1 11.2 11.3 11.4
Sensibilização ambiental..................................................................................................... 277 Classe PrintDocument .......................................................................................................... 278 Exercício resolvido .............................................................................................................. 278 Exercícios propostos............................................................................................................ 285
12. INTEGRAÇÃO COM A XML ............................................................................. 287
12.1 Apresentação ........................................................................................................................ 287 12.2 Sintaxe XML ......................................................................................................................... 287 12.2.1 Declaração XML ....................................................................................................... 287 12.2.2 Elementos e atributos .............................................................................................. 288 12.2.3 Comentários ............................................................................................................. 289 12.3 Criação de um ficheiro XML .............................................................................................. 289 12.4 Manipulação de ficheiros XML.......................................................................................... 290 12.5 Formatação ........................................................................................................................... 303 12.6 Validação .............................................................................................................................. 306 12.7 Exercícios resolvidos ........................................................................................................... 310 12.7.1 Biblioteca ................................................................................................................... 310 12.7.2 Boa formação ............................................................................................................ 312 12.7.3 Tabela ........................................................................................................................ 314 12.8 Exercícios propostos............................................................................................................ 315 © FCA – Editora de Informática
ÍNDICE GERAL
XV
13. WINDOWS PRESENTATION FOUNDATION .......................................................... 319
13.1 Noções gerais ....................................................................................................................... 319 13.2 Criação de projetos .............................................................................................................. 319 13.3 Classe Window ...................................................................................................................... 320 13.3.1 WPF Designer........................................................................................................... 320 13.3.2 Implementação de classes em XAML ................................................................... 320 13.3.3 Alteração de atributos em design-time ................................................................... 321 13.3.4 Alteração de atributos em run-time ....................................................................... 322 13.3.5 Eventos ...................................................................................................................... 323 13.3.6 Métodos .................................................................................................................... 324 13.4 Classe Grid ............................................................................................................................ 324 13.5 Multimédia ........................................................................................................................... 328 13.6 Exercícios resolvidos ........................................................................................................... 356 13.6.1 Audio......................................................................................................................... 356 13.6.2 Vídeo ......................................................................................................................... 359 13.6.3 Banco ......................................................................................................................... 362 13.7 Exercícios propostos............................................................................................................ 365 14. DESENVOLVIMENTO PARA A WINDOWS STORE ................................................... 367
14.1 Interface de utilizador ......................................................................................................... 367 14.2 Layouts ................................................................................................................................... 368 14.3 Primeira aplicação ............................................................................................................... 368 14.3.1 Criação do projeto ................................................................................................... 368 14.3.2 Inclusão de controlos............................................................................................... 373 14.3.3 Adição de páginas ao projeto ................................................................................. 373 14.3.4 Eventos ...................................................................................................................... 374 14.3.5 Navegação básica entre páginas ............................................................................ 375 14.4 Framing .................................................................................................................................. 376 14.5 Exercícios resolvidos ........................................................................................................... 383 14.5.1 Calculadora .............................................................................................................. 383 14.5.2 Relógio ...................................................................................................................... 393 14.5.3 Tempo ....................................................................................................................... 396 14.6 Exercícios propostos............................................................................................................ 399 15. DESENVOLVIMENTO PARA ANDROID ................................................................ 401
15.1 15.2 15.3 15.4
Xamarin................................................................................................................................. 401 Emuladores .......................................................................................................................... 401 “Hello World” ...................................................................................................................... 402 Exercícios propostos............................................................................................................ 404
16. INTEGRAÇÃO COM O OFFICE .......................................................................... 405
16.1 16.2 16.3 16.4
Introdução ............................................................................................................................ 405 Integração com o Excel ....................................................................................................... 405 Integração com o Word....................................................................................................... 418 Integração com o Powerpoint ............................................................................................ 421 © FCA – Editora de Informática
XVI
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO
16.5 Integração com o Access ..................................................................................................... 427 16.6 Integração com o Outlook .................................................................................................. 431 16.7 Exercícios propostos............................................................................................................ 433 17. PROJETO I ................................................................................................ 435
17.1 Desenho da base de dados ................................................................................................. 435 17.2 Preparação das ferramentas ............................................................................................... 438 17.2.1 Criação do projeto ................................................................................................... 438 17.2.2 Acesso à origem de dados ...................................................................................... 438 17.2.3 Criação das classes DataContext ............................................................................. 439 17.2.4 Inserção de registos de teste ................................................................................... 439 17.3 Desenvolvimento da interface ........................................................................................... 440 17.3.1 Preparação do formulário principal ...................................................................... 440 17.3.2 Criação de uma barra de ferramentas ................................................................... 441 17.3.3 Criação de uma barra de estado ............................................................................ 442 17.3.4 Consulta de dados ................................................................................................... 443 17.3.5 Gestão de dados ....................................................................................................... 449 17.4 Exercícios propostos............................................................................................................ 475 18. PROJETO II .............................................................................................. 477
18.1 Objetivo ................................................................................................................................. 477 18.2 Desenho da base de dados ................................................................................................. 478 18.3 Preparação das ferramentas ............................................................................................... 479 18.3.1 Criação do projeto ................................................................................................... 480 18.3.2 Acesso à origem de dados ...................................................................................... 480 18.3.3 Inserção de registos de teste ................................................................................... 480 18.4 Desenvolvimento da interface ........................................................................................... 481 18.4.1 Preparação da janela principal ............................................................................... 481 18.4.2 Desenho do separador RECOLHA........................................................................ 481 18.4.3 Programação do separador RECOLHA ................................................................ 483 18.4.4 Desenho do separador TAXA ................................................................................ 490 18.4.5 Programação do separador TAXA ........................................................................ 491 18.4.6 Desenho do separador DISTRITOS ....................................................................... 492 18.4.7 Programação do separador DISTRITOS ............................................................... 492 18.5 Exercícios propostos............................................................................................................ 495 19. PROJETO III ............................................................................................. 497
19.1 19.2 19.3 19.4 19.5
Criação do projeto ............................................................................................................... 497 Importação das bandeiras .................................................................................................. 497 Desenho da interface e programação ................................................................................ 498 Resultado .............................................................................................................................. 509 Exercícios propostos............................................................................................................ 510
20. PROJETO IV .............................................................................................. 511
20.1 Objetivo ................................................................................................................................. 511 20.2 Regras .................................................................................................................................... 511 © FCA – Editora de Informática
ÍNDICE GERAL XVII 20.3 Desenho da interface ........................................................................................................... 513 20.3.1 Criação do projeto ................................................................................................... 513 20.3.2 Código XAML .......................................................................................................... 513 20.4 Programação do jogo .......................................................................................................... 516 20.5 Exercícios propostos............................................................................................................ 537 21. CONCLUSÃO .............................................................................................. 539
21.1 21.2 21.3 21.4
Criação de programas de instalação ................................................................................. 539 Distribuição e comercialização de software....................................................................... 541 Computação em nuvem...................................................................................................... 542 Novos desafios ..................................................................................................................... 542
A. ANEXO – TABELAS AUXILIARES E COMPLEMENTOS ................................................ 543
A.1 Ambiente integrado ............................................................................................................ 543 A.1.1 Secção Environment/General (Ambiente/Geral) ................................................. 543 A.1.2 Secção Environment/Fonts and Colors (Ambiente/Fontes e Cores) ................. 544 A.1.3 Secção Environment/Keyboard (Ambiente/Teclado).......................................... 544 A.1.4 Secção Projects and Solutions/General (Projetos e Soluções/Geral) .................. 545 A.2 Sequências de escape ............................................................................................................ 546 A.3 Máscaras de formatação ..................................................................................................... 546 A.4 Máscaras de introdução ...................................................................................................... 547 A.5 Relação de tipos de dados .................................................................................................. 548 A.6 Códigos ASCII ..................................................................................................................... 548 A.6.1 Códigos ASCII (grupo básico) ............................................................................... 549 A.6.2 Códigos ASCII (grupo estendido) ......................................................................... 550 GLOSSÁRIO DE TERMOS – PORTUGUÊS EUROPEU/PORTUGUÊS DO BRASIL ...................... 551 ÍNDICE REMISSIVO........................................................................................... 553
© FCA – Editora de Informática
17
PROJETO I
9
Neste capítulo iremos desenvolver uma aplicação que consistirá na recolha e no tratamento de dados relativos a todas as encomendas provenientes de uma loja de computadores. Iremos criar a interface necessária para o preenchimento dos dados de cada tabela presente numa base de dados SQL, recorrendo às classes DataContext da LINQ. Para além disso, o utilizador final terá à sua disposição um conjunto de ferramentas que lhe irão permitir obter informações da base de dados em tempo real.
17.1 DESENHO DA BASE DE DADOS Esta secção apresenta a base de dados a ser utilizada no projeto. Recorreremos ao SQL Server Management Studio para estruturar e relacionar as tabelas. Após um levantamento das necessidades ao nível da informação a alojar na base de dados, foram considerados os seguintes pontos: A loja encomenda diversos produtos de vários fornecedores; Os produtos são identificados por um código único (referência) e pela designação; Os fornecedores são identificados por um código único (número de identificação fiscal) e pelo nome; Em cada nota de encomenda deverá ser indicado o número de encomenda, a data, o fornecedor e as quantidades de cada produto. Assim, iremos necessitar das tabelas de dados indicadas na Tabela 17.1. TABELA
IRÁ CONTER INFORMAÇÕES RELATIVAS...
Produtos
Aos produtos (referências e designações).
Fornecedores
Aos fornecedores (identificações fiscais e nomes).
Encomendas
Às notas de encomenda efetuadas.
Detalhes
Aos produtos e respetivas quantidades presentes em cada nota de encomenda. TABELA 17.1 – Lista de tabelas de dados envolvidas no projeto © FCA – Editora de Informática
436
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 1.º PASSO – CRIAÇÃO DA TABELA PRODUTOS 1) Inicie o SQL Server Management Studio e crie uma base de dados; 2) Crie a tabela com os campos REF e Produto, como na Figura 17.1;
FIGURA 17.1 – Estrutura da tabela Produtos Aplique a definição de chave primária ao campo REF e defina um comprimento máximo de 30 carateres (propriedade Length) para o campo Produto.
3) Guarde e feche a tabela Produtos. 2.º PASSO – CRIAÇÃO DA TABELA FORNECEDORES 1)
Adicione uma tabela à base de dados, como fez no 1º passo;
2) Estruture a tabela de acordo com o disposto na Figura 17.2;
FIGURA 17.2 – Estrutura da tabela Fornecedores Aplique a definição de chave primária ao campo NIF e defina um comprimento máximo de 30 carateres (propriedade Length) para o campo Fornecedor.
3)
Guarde e feche a tabela Fornecedores.
3.º PASSO – CRIAÇÃO DA TABELA ENCOMENDAS 1)
Adicione a tabela Encomendas, como fez nos passos anteriores;
2)
Estruture a tabela de acordo com o disposto na Figura 17.3;
FIGURA 17.3 – Estrutura da tabela Encomendas
© FCA – Editora de Informática
PROJETO I
437
Aplique a definição de chave primária ao campo ID e defina a sua propriedade IsIdentity com Yes (criação de um campo de numeração automática).
3)
Guarde e feche a tabela Encomendas.
4.º PASSO – CRIAÇÃO DA TABELA DETALHES 1)
Adicione a tabela Detalhes, como fez nos passos anteriores;
2)
Estruture a tabela de acordo com o disposto na Figura 17.4;
FIGURA 17.4 – Estrutura da tabela Detalhes Aplique a definição de chave primária aos campos ID e Produto (chave dupla).
3)
Guarde e feche a tabela Detalhes.
5.º PASSO – RELAÇÕES ENTRE AS TABELAS 1)
Crie um diagrama relacional e adicione as tabelas ao diagrama relacional;
2)
Arraste NIF de Fornecedores para Fornecedor de Encomendas;
3)
Arraste REF de Produtos para Produto de Detalhes;
4)
Arraste ID de Encomendas para ID de Detalhes;
5)
Deverá obter o diagrama relacional apresentado na Figura 17.5;
FIGURA 17.5 – Diagrama relacional © FCA – Editora de Informática
438
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 6)
Guarde o esquema relacional e feche-o;
7)
Encerre o SQL Server Management Studio.
17.2 PREPARAÇÃO DAS FERRAMENTAS Iremos, agora, criar o projeto baseado em Windows Forms e estabelecer a ligação à base de dados a partir do Visual Studio.
17.2.1 CRIAÇÃO DO PROJETO Crie o projeto, como descrito a seguir: 1)
Escolha a opção File (Arquivo) New Project (Novo Projeto);
2)
Na caixa de diálogo New Project (Novo Projeto), escolha Windows Forms Application (Aplicativo de Windows Forms) e atribua ‘ProjetoI’ ao nome do projeto;
3)
Confirme em OK.
17.2.2 ACESSO À ORIGEM DE DADOS Para estabelecer a ligação à origem de dados a partir do Visual Studio, considere o seguinte procedimento: 1)
Execute o comando View (Exibir) Server Explorer (Navegador de Servidor);
2)
Para estabelecer a ligação faça clique com o botão direito do rato sobre Data Connections (Conexões de Dados) e escolha a opção Add Connection (Adicionar Conexão);
3)
Na caixa de diálogo Add Connection (Adicionar Conexão), deverá indicar o nome do servidor de SQL, escolher o seu método de autenticação e selecionar a base de dados;
4)
Confirme em OK;
5)
Concluído o processo de criação da base de dados, esta deverá ficar disponível no Server Explorer (Navegador de Servidor).
© FCA – Editora de Informática
PROJETO I
439
17.2.3 CRIAÇÃO DAS CLASSES DATACONTEXT Tendo em mente o mesmo processo utilizado no Capítulo 8, crie as classes DataContext da seguinte maneira: 1)
No Solution Explorer (Gerenciador de Soluções) faça clique com o botão direito do rato sobre o projeto e escolha a opção Add New Item (Adicionar Novo Item) do menu de contexto;
2)
Na caixa de diálogo Add New Item (Adicionar Novo Item) aceda à categoria Data (Dados) e selecione o item LINQ to SQL Classes (Classes LINQ to SQL);
3)
Faça clique em Add (Adicionar) para confirmar a operação;
4)
Arraste todas as tabelas que fazem parte da base de dados desde o Server Explorer (Gerenciador de Servidores) até à superfície de desenho do modelo de dados, de maneira a obter o modelo relacional completo;
5)
Guarde o modelo e feche-o.
17.2.4 INSERÇÃO DE REGISTOS DE TESTE Insira alguns registos de teste, considerando o seguinte procedimento: 1)
No Server Explorer (Navegador de Servidor) estenda a pasta Tables (Tabelas) e faça clique com o botão direito do rato sobre a tabela Produtos;
2)
Depois, escolha a opção Show Table Data (Exibir Dados de Tabela);
3)
No separador de dados preencha a tabela como na Figura 17.6;
FIGURA 17.6 – Dados constantes na tabela Produtos
4) Feche a tabela Produtos; 5) Abra a tabela Fornecedores e adicione os registos indicados na Figura 17.7;
FIGURA 17.7 – Dados constantes na tabela Fornecedores © FCA – Editora de Informática
440
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 6) Feche a tabela Fornecedores; 7) Abra a tabela Encomendas e adicione os registos indicados na Figura 17.8;
FIGURA 17.8 – Dados constantes na tabela Encomendas
8) Feche a tabela Encomendas; 9) Por fim, adicione alguns registos à tabela Detalhes, conforme a Figura 17.9;
FIGURA 17.9 – Dados constantes na tabela Detalhes
10) Feche a tabela Detalhes.
17.3 DESENVOLVIMENTO DA INTERFACE Esta secção descreve os procedimentos necessários para o desenho e a automatização dos diversos formulários que irão compor a aplicação.
17.3.1 PREPARAÇÃO DO FORMULÁRIO PRINCIPAL Comecemos por definir algumas propriedades iniciais para o formulário base: 1)
Abra o formulário predefinido (Form1) em vista de estrutura;
2) Aceda às propriedades do formulário; 3) Altere o texto constante na barra de título para ’Projeto I’, por redefinição da propriedade Text; 4) Faça com que o formulário surja maximizado no arranque, definindo o valor Maximized para a propriedade WindowState; 5) De forma a fazer corresponder a informação contida na base de dados com as funcionalidades a implementar no formulário, a cada tabela irá corresponder um subformulário distinto (para que isso seja possível, altere a propriedade IsMdiContainer do formulário para True); © FCA – Editora de Informática
PROJETO I
441
6) O fundo do formulário surge numa cor cinza mais escura, característica das aplicações MDI (Figura 17.10).
FIGURA 17.10 – Aspeto de um formulário MDI
17.3.2 CRIAÇÃO DE UMA BARRA DE FERRAMENTAS Como exemplo, iremos embutir no formulário principal uma barra de ferramentas standard com apenas um botão, que irá permitir o fecho da janela. O desenho da barra de ferramentas é feito da seguinte forma: 1) Da Toolbox (Caixa de Ferramentas), estenda a categoria Menus & Toolbars (Menus & Barras de Ferramentas) e arraste um controlo ToolStrip para o interior do formulário; 2) Adicione um controlo Button ao controlo ToolStrip, como exemplificado na Figura 17.11;
FIGURA 17.11 – Inserção de um botão na barra de ferramentas As barras de ferramentas suportam uma grande variedade de elementos, tais como caixas de texto, caixas de combinação e barras de progresso.
3) Faça clique com o botão direito do rato sobre o novo botão e escolha a opção Set Image (Definir Imagem), como na Figura 17.12;
FIGURA 17.12 – Alteração da imagem associada ao botão © FCA – Editora de Informática
442
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO 4) Na caixa de diálogo Select Resource (Selecionar Recurso) localize e escolha uma imagem ao seu gosto;
Para associar uma imagem a um botão também pode, simplesmente, redefinir a sua propriedade Image.
5) Para que o botão funcione, programe o seu evento Click: private void toolStripButton1_Click(object sender, EventArgs e) { this.Close(); }
17.3.3 CRIAÇÃO DE UMA BARRA DE ESTADO Nesta secção será criada uma barra de estado com a informação acerca da data e da hora atualmente definidas no sistema operativo. O “relógio” deverá ser atualizado de segundo em segundo, através de um controlo temporizador. Tenha em consideração os procedimentos que se seguem: 1)
Da Toolbox (Caixa de Ferramentas), estenda a categoria Menus & Toolbars (Menus & Barras de Ferramentas) e arraste um controlo StatusStrip para o interior do formulário;
2) Adicione um controlo StatusLabel, como na Figura 17.13;
FIGURA 17.13 – Inserção de um controlo de texto na barra de estado À semelhança das barras de ferramentas, as barras de estado suportam diversos tipos de controlos.
3) Para que o rótulo presente na barra de estado seja dinâmico é necessário incluir-se um controlo temporizador. Para o efeito, arraste o controlo Timer, localizado na secção Components (Componentes) da Toolbox (Caixa de Ferramentas), para o interior do formulário; O temporizador fica disponível na parte inferior da vista de estrutura do formulário, juntamente com as barras de estado e de ferramentas.
© FCA – Editora de Informática
PROJETO I
443
4) Quando a aplicação é iniciada, o temporizador deve estar ativado. Assim, altere o valor da sua propriedade Enabled para True; 5) O intervalo de tempo é medido em milissegundos. Como o cronómetro deve funcionar ao segundo, defina a propriedade Interval com o valor 1000; 6) Programe o evento Tick do controlo temporizador da seguinte forma: private void timer1_Tick(object sender, EventArgs e) { toolStripStatusLabel1.Text = System.DateTime.Now.ToString(); }
17.3.4 CONSULTA DE DADOS Cada formulário irá conter uma lista do conteúdo atual de cada tabela presente no DataContext. Para tal, utilizaremos controlos DataGridView, que deverão permitir a consulta de toda a informação presente na base de dados. 1.º PASSO – CRIAÇÃO DO FORMULÁRIO FORMFORNECEDORES 1)
Execute o comando de menu Project (Projeto) Add Windows Form (Adicionar Formulário do Windows);
2) Da caixa de diálogo Add New Item (Adicionar Novo Item), selecione o template Windows Form e guarde-o como FormFornecedores; 3) Da secção Data (Dados) da Toolbox (Caixa de Ferramentas), arraste um controlo do tipo DataGridView para o formulário FormFornecedores; 4) Ajuste as dimensões do formulário e do DataGridView para que o último ocupe praticamente toda a área do formulário. 2.º PASSO – PROGRAMAÇÃO DO FORMULÁRIO FORMFORNECEDORES Os dados contidos na tabela Fornecedores deverão ser passados para o controlo DataGridView. Para tal, programe o evento Load com as instruções que se seguem: private void FormFornecedores_Load(object sender, EventArgs e) { //Configuração do controlo DataGridView
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; © FCA – Editora de Informática
444
C# 6.0 COM VISUAL STUDIO – CURSO COMPLETO dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; dataGridView1.Columns.Add("colNIF", "NIF"); dataGridView1.Columns.Add("colFornecedor", "Fornecedor"); //Leitura dos dados
DataClasses1DataContext dc = new DataClasses1DataContext(); var lista = from Fornecedores in dc.Fornecedores select Fornecedores; int idxLinha = 0; foreach(Fornecedore fornecedor in lista) { dataGridView1.Rows.Add(); dataGridView1.Rows[idxLinha].Cells[0].Value = fornecedor.NIF; dataGridView1.Rows[idxLinha].Cells[1].Value = fornecedor.Fornecedor; idxLinha = idxLinha + 1; } }
ANÁLISE Numa primeira fase foram especificadas algumas propriedades do controlo dataGridView1. A propriedade AutoSizeColumnsMode permite definir o modo como as colunas são redimensionadas em função do conteúdo de todas as células (valor AllCells). Como o objetivo é apenas o de mostrar os dados, as propriedades AllowUserToAddRows e AllowUserToDeleteRows foram definidas com o valor false (desta forma, o utilizador é impedido de adicionar e remover registos). Para além disto, e para que o conteúdo das células não possa ser editado diretamente, definiu-se a propriedade DataGridViewEditMode com EditProgrammatically. Por fim, o carregamento do controlo DataGridView foi conseguido através de um ciclo For, com avanço de linha (incremento em uma unidade da variável idxLinha). 3.º PASSO – CHAMADA AO FORMULÁRIO FORMFORNECEDORES ATRAVÉS DE MENU Para invocar subformulários por intermédio de uma opção de menu contido no formulário principal: 1)
Posicione-se no separador correspondente à estrutura do formulário MDI (Form1);
2)
Da secção Menus & Toolbars (Menus & Barras de Ferramentas) da Toolbox (Caixa de Ferramentas), arraste um controlo MenuStrip para o formulário MDI;
© FCA – Editora de Informática
PROJETO I 3)
445
Crie o menu Fornecedores no primeiro nível e a opção Consultar no segundo nível hierárquico do sistema de menus (Figura 17.14);
FIGURA 17.14 – Criação do menu Fornecedores
4) Gere o evento Click da opção Consultar fazendo duplo clique sobre a mesma; 5) No módulo de programação, digite as instruções que se seguem: private void consultarToolStripMenuItem_Click(object sender, EventArgs e) { FormFornecedores form = new FormFornecedores(); form.MdiParent = this; form.Show(); }
6) Execute o projeto; 7) Selecione a opção Consultar do menu Fornecedores; 8) Verifique se os dados são apresentados conforme os da Figura 17.15;
FIGURA 17.15 – Apresentação dos dados contidos na tabela Fornecedores
9) Feche o formulário MDI. ANÁLISE Para mostrar um formulário no ecrã (que não o que arranca com a aplicação) instancia-se uma classe com o nome do objeto pretendido (daí a construção de uma variável-objeto à qual se designou, simplesmente, form). Para que o formulário se torne “filho” do MDI definiu-se a propriedade Parent do mesmo com o apontador this (refere a janela principal). Por fim, recorreu-se ao método Show para executar e mostrar o formulário com a listagem. © FCA – Editora de Informática
C#-6-0-Com-Visual-Basic.pdf
C
M
Y
CM
MY
CY
CMY
K
1
14/05/15
18:11