• Nenhum resultado encontrado

Desenvolvimento de uma aplicação MDI

N/A
N/A
Protected

Academic year: 2021

Share "Desenvolvimento de uma aplicação MDI"

Copied!
29
0
0

Texto

(1)

Tarefa Orientada 2

Desenvolvimento de uma aplicação MDI

Objectivos:

• Definir o formulário pai de uma aplicação MDI – Multiple Document Interface

• Adicionar controlos a um formulário • Criar menus em formulários

• Criar uma barra de ferramentas • Criar uma barra de estados

• Disponibilizar informação de ajuda

• Criar o formulário para calcular o valor acumulado de um investimento • Criar o formulário para calcular a desvalorização de um bem

• Definir o formulário principal do projecto • Abrir um projecto existente.

Definir o formulário pai de uma aplicação MDI – Multiple

Document Interface

Numa aplicação MDI, um formulário, designado pai, contém um ou mais formulários, designados filhos. Os menus e as barras de ferramentas do formulário pai contêm os comandos que permitem abrir e visualizar os formulários filhos. Adicionalmente, pode incluir uma barra de estado que disponibiliza uma variedade de informação, incluindo informação sobre os formulários filhos.

A principal vantagem do desenvolvimento de aplicações MDI reside no facto de que o formulário pai pode tornar mais fácil a organização e a gestão de múltiplas instâncias de formulários filhos.

A aplicação que vamos desenvolver nos passos seguintes é constituída por três formulários. Um formulário permite calcular o valor acumulado de um investimento, baseando-se no investimento mensal, na taxa de juro anual e no número de anos de duração do investimento. Outro formulário permite

(2)

calcular a desvalorização por cada ano de vida de um recurso. O formulário restante providencia um modo de acesso aos outros dois formulários.

1. Seleccione o formulário gerado aquando da criação do novo projecto na tarefa orientada 1.

2. Defina as propriedades Name e Text com os valores frmPrincipal e Cálculos Financeiros, respectivamente.

3. Para identificar o formulário como pai, defina a propriedade IsMdiContainer com o valor True.

4. Defina a propriedade StartPosition com o valor CenterScreen, de modo a especificar que, quando projecto for executado, o formulário principal seja centrado no ecrã.

Adicionar controlos a um formulário

Existem várias maneiras de adicionar controlos a um formulário. Por exemplo, seleccione a caixa de ferramentas (ToolBox). Depois, seleccione o controlo que pretende adicionar e arraste-o para o formulário. Finalmente, se desejar dimensione-o de acordo com as suas pretensões.

Outra forma mais simples passa por dar um duplo clique no controlo da barra de ferramentas.

(3)

Criar menus em formulários

As aplicações desenvolvidas para ambientes Windows disponibilizam, normalmente, menus que providenciam acesso às suas funcionalidades. Em algumas situações, os menus duplicam as funcionalidades disponíveis a partir de botões e de outros controlos de um formulário. Todavia, também podem fornecer um meio de acesso a funcionalidades que não estão disponíveis em mais nenhum ponto da aplicação.

O Visual Studio disponibiliza o controlo MenuStrip para adicionar menus a um formulário. No momento em que se adiciona este controlo, a propriedade MainMenuStrip do formulário é definida automaticamente com o nome do controlo. O menu é colocado na parte superior do formulário e o controlo é mostrado no fundo do ambiente de desenvolvimento.

5. Adicione um controlo MenuStrip ao formulário frmPrincipal e defina a sua propriedade Name com o valor MenufrmPrincipal.

Para adicionar itens ao menu, seleccione o menu no topo do formulário e pressione o botão esquerdo do rato nos locais onde aparece o texto Type Here. Depois, introduza o texto relativo ao item que deseja adicionar. Vão aparecer novas áreas de introdução de itens à direita abaixo do item que está a adicionar. Deste modo, é muito simples criar novos menus e sub menus e novos itens.

(4)

Pode ainda utilizar os caracteres - e &, no local onde aparece o texto Type Here, para criar uma barra de separação e disponibilizar acesso ao item através da tecla alt, respectivamente.

Existem várias propriedades para os itens de um menu que podem ser definidas ainda em tempo de desenho. Por exemplo, a propriedade ShortcutKeys permite especificar uma combinação de teclas de atalho para um item de menu, tal como Ctrl+A.

A propriedade ShowShortcutKeys determina se a combinação de teclas de atalho aparece, ou não, no lado direito do item de menu correspondente. A propriedade Checked determina se aparece, ou não, uma marca no lado esquerdo do item de menu correspondente.

A propriedade CheckOnClick determina se um item de menu é, ou não, automaticamente marcado quando é seleccionado pelo utilizador.

A propriedade Enabled determina se o item de menu está, ou não, disponível para selecção. Se o item estiver desactivado, então também todos os seus sub itens estarão desactivados.

A propriedade Visible determina se o item de menu está, ou não, visível para selecção. Se o item estiver invisível, então, naturalmente, também todos os seus sub itens estarão invisíveis.

Note que também pode utilizar estas propriedades em tempo de execução. Por exemplo, pode usar a propriedade Checked para verificar se um item de menu está, ou não, seleccionado.

(5)

6. Crie os menus para o formulário frmPrincipal, de acordo com a figura seguinte.

Depois de criar os menus e respectivos itens acima ilustrados, utiliza-se a propriedade Name de cada item para definir o seu nome, de modo a poder referir cada um dos itens a partir do código Visual Basic a desenvolver.

É uma convenção comum utilizar os caracteres mnu como prefixo para o nome de um item de menu. Por exemplo, pode utilizar a designação mnuFicheiroSair para o nome do item Sair do menu Ficheiro.

7. Defina a propriedade Name de cada um dos menus e respectivos itens criados no passo anterior, de acordo com as seguintes sugestões:

Menu Ficheiro

mnuFicheiro (Menu Ficheiro)

mnuFicheiroInvestimento (item Investimento do Menu Ficheiro) mnuFicheiroDesvalorização (item Desvalorização do Menu Ficheiro) mnuFicheiroFechar (item Fechar do Menu Ficheiro)

(6)

Menu Ver

mnuVer (Menu Ver)

mnuVerBarraFerramentas (item BarraFerramentas do Menu Ver)

Menu Janela

mnuJanela (Menu Janela)

mnuJanelaCascada (item Cascada do Menu Janela) mnuJanelaHorizontal (item Horizontal do Menu Janela) mnuJanelaVertical (item Vertical do Menu Janela)

Defina ainda as propriedades Checked e CheckOnClick do item mnuVerBarraFerramentas do menu mnuVer com os valores True.

Depois de adicionar os menus a um formulário, é necessário inserir código, de modo a que se efectuem as acções pretendidas. Voltaremos a este assunto lá mais para a frente.

Também pode utilizar o editor de colecções de itens (Items Collection Editor) para trabalhar com os itens de um menu. Para aceder ao editor, seleccione o menu. Pressione o botão direito do rato para aparecer o menu de contexto e escolha a opção EditDropDownItems.

(7)

Aparece o editor de colecções de itens.

O editor permite adicionar, eliminar, reordenar os itens do menu e definir as suas propriedades.

Também pode utilizar o editor de colecções de itens (Items Collection Editor) para trabalhar com os menus de um formulário. Para aceder ao editor, seleccione a barra de menus do formulário. Pressione o botão direito do rato para aparecer o menu de contexto e escolha a opção EditItems.

(8)

Criar uma barra de ferramentas

Na maioria dos casos, os botões de uma barra de ferramentas duplicam as funcionalidades providenciadas pelos comandos dos menus de uma aplicação. Contudo, os botões da barra de ferramentas tornam o acesso mais rápido a essas funcionalidades.

Para criar uma barra de ferramentas, adicione um controlo ToolStrip ao formulário. Por defeito, a barra de ferramentas é colocada no topo do formulário por baixo dos menus.

(9)

Para adicionar botões à barra de ferramentas, pode utilizar o editor de colecções de itens (Items Collection Editor).

9. Seleccione a barra de ferramentas adicionada no passo anterior e, com o botão direito do rato, abra o respectivo menu de contexto. Depois, seleccione a opção Edit Items.

Aparece o editor de colecções de itens.

Como pode verificar, o editor pode ser utilizado para adicionar vários tipos de controlos à barra de ferramentas e para definir as respectivas propriedades.

(10)

10. Na caixa de combinação (ComboBox) da parte superior esquerda do editor, seleccione a opção Button e depois pressione, com o botão esquerdo do rato, o botão Add. Neste momento está adicionado o primeiro botão à barra de ferramentas.

Por defeito, cada botão adicionado à barra de ferramentas apresenta uma imagem. Para mostrar uma imagem específica, utilize a propriedade Image do botão.

11. Na Secção Members, seleccione o botão que acabou de adicionar. Seleccione a propriedade Image e depois pressione o botão . Aparece a caixa de diálogo Select Resource que permite escolher a imagem pretendida.

(11)

12. Deixe seleccionada a opção Local resource e pressione o botão Import. Aparece uma caixa de diálogo para especificar o caminho para o ficheiro que contém a imagem que se pretende incluir no botão da barra de ferramentas.

13. Copie os ficheiros BotãoInvestimento.jpg e BotãoDesvalorização.jpg da página da unidade curricular para a pasta em que estão armazenados os ficheiros da aplicação.

14. Indique o caminho para o ficheiro BotãoInvestimento.jpg, seleccione o ficheiro e pressione o botão Open/Abrir. Pressione o botão OK da caixa de diálogo Select Resource. Pressione o botão OK do editor de colecções de itens.

15. Repita os passos 9 a 14 para adicionar mais um botão à barra de ferramentas e para seleccionar o ficheiro BotãoDesvalorização.jpg que contém a imagem a apresentar no botão.

(12)

Para mostrar texto, em vez de uma imagem, num botão de uma barra de ferramentas, defina a propriedade DisplayStile do botão com o valor Text. Depois, na propriedade Text, coloque o texto que pretende fazer aparecer. Também pode definir a propriedade DisplayStile do botão com o valor ImagemAndText, de modo mostrar texto e uma imagem no botão.

16. Utilize a propriedade ToolTipText de cada um dos botões da barra de ferramentas, de modo a que apareça uma mensagem quando o utilizador passar com o rato por cima deles. Por exemplo, para o botão , escreva a mensagem Formulário Calcular Investimento e para o botão , escreva a mensagem Formulário Calcular Desvalorização.

17. Defina a propriedade Name do controlo ToolStrip adicionado no passo 8 e dos botões adicionados nos passos 10 e 15, de acordo com as seguintes sugestões:

Barra de Ferramentas (Tool Bar – tb)

tbfrmPrincipal (barra de ferramentas dos formulário Principal)

tbfrmPrincipalbtnInvestimento (botão Investimento da barra de ferramentas dos formulário Principal)

tbfrmPrincipalbtnDesvalorização (botão Desvalorização da barra de ferramentas dos formulário Principal)

(13)

Para incluir, numa barra de ferramentas, os itens relativos às funcionalidades mais comuns (guardar, imprimir, copiar, colar, …) das aplicações baseadas em formulários/janelas, seleccione a barra de ferramentas e, com o botão direito do rato, abra o respectivo menu de contexto. Depois, seleccione a opção Insert Standard Items.

Depois de adicionar os botões à barra de ferramentas de um formulário, é necessário inserir código, de modo a que se efectuem as acções pretendidas. Voltaremos a este assunto lá mais para a frente.

(14)

Criar uma barra de estados

Adicionalmente aos menus e às barras de ferramentas, podem incluir-se, nos formulários, barras de estados.

As barras de estados são normalmente utilizadas para disponibilizar informação acerca do sistema e informações genéricas sobre a aplicação. Nas aplicações MDI, a barra de estados aparece normalmente no formulário principal.

Para adicionar uma barra de estados a um formulário, utilize o controlo StatusStrip. A barra de estados é colocada na parte inferior do formulário e o controlo é mostrado no fundo do ambiente de desenvolvimento.

18. Adicione um controlo StatusStrip ao formulário frmPrincipal e defina a sua propriedade Name com o valor sbPrincipal.

(15)

Para mostrar informação numa barra de estados, adicione um controlo ToolStripStatusLabel. Para tal, utilize a lista que aparece na barra de estados. Depois, introduza a informação que deseja mostrar na propriedade Text deste controlo. Note que pode utilizar também esta propriedade em tempo de execução.

19. Adicione um controlo ToolStripStatusLabel à barra de estados e defina a sua propriedade Name com o valor sblblData. Defina ainda as propriedades BorderStyle, BorderSides, AutoSize, Width e Heigth com os valores SunkenInner, All, False, 75 e 17, respectivamente.

Também pode utilizar o editor de colecções de itens (Items Collection Editor) para criar múltiplos painéis numa barra de estados. Para tal, seleccione a barra de estados e, com o botão direito do rato, abra o respectivo menu de contexto. Depois, seleccione a opção Edit Items.

(16)

Aparece o editor de colecções de itens.

20. Adicione um novo controlo ToolStripStatusLabel à barra de estados. Para tal, seleccione a opção StatusLabel na caixa de combinação da parte superior esquerda do editor e depois pressione, com o botão esquerdo do rato, o botão Add. Neste momento está adicionado outro painel à barra de ferramentas.

Para cada painel, pode definir uma variedade de propriedades. Por exemplo, pode utilizar as propriedades BorderSides e e BorderStyle para definir o modo de apresentação do painel na barra de estados. Utilize a propriedade Text para definir o texto que pretende apresentar na barra de estados e a propriedade TextAlign para determinar o modo de alinhamento do texto.

Por defeito, a largura inicial de cada painel que se adiciona a uma barra de estados tem o valor 111 e o seu tamanho altera-se de acordo com o seu conteúdo. Para criar um painel com um tamanho fixo, defina a propriedade AutoSize com o valor False e defina o valor da propriedade Width com o valor pretendido. Para dimensionar um painel de modo a que ocupe a largura disponível da barra de estados, defina a propriedade Spring com o valor True.

(17)

21. Para o painel criado no passo anterior, defina as propriedades Name, BorderStyle, BorderSides, AutoSize, Spring e Text com os valores sblblDescrição, SunkenInner, All, True, True e “Utilize o menu Ficheiro ou um botão da barra de ferramentas para mostrar um formulário” respectivamente.

22. Adicione um novo controlo ToolStripStatusLabel à barra de estados, de modo análogo ao utilizado no passo 20, e defina as suas propriedades Name, BorderStyle, BorderSides, AutoSize, Width e Heigth com os valores sblblHoras, SunkenInner, All, False, 75 e 17, respectivamente.

(18)

Neste momento, a barra de estados deverá apresentar três painéis.

23. Adicione ao formulário frmPrincipal um controlo Timer e defina as suas propriedades Name, Enabled e Interval com os valores TimerfrmPrincipal True e 100, respectivamente.

Mais tarde iremos voltar a este assunto, utilizando o controlo Timer para actualizar periodicamente a informação de uma barra de estados.

Pode referir-se a um painel de uma barra de estados pelo seu índice ou através do seu nome.

(19)

Disponibilizar informação de ajuda

Pode utilizar um menu de ajuda para adicionar informação de auxílio a um formulário. Depois, pode adicionar itens a esse menu relativos a vários assuntos de ajuda que pretenda disponibilizar. Quando o utilizador seleccionar um desses itens, a aplicação pode mostrar uma caixa de diálogo com a informação apropriada. Outras formas de disponibilizar ajuda passam por utilizar um controlo Tool Tip, ajuda sensível ao contexto e documentos HTML.

Uma Tool Tip é uma breve descrição de um controlo que é mostrada automaticamente quando o utilizador passa com o ponteiro do rato sobre esse controlo.

24. Para poder utilizar Tool Tips, adicione um controlo Tool Tip ao formulário frmPrincipal. O controlo é mostrado no fundo do ambiente de desenvolvimento.

(20)

Como resultado da adição do controlo Tool Tip, fica disponível a propriedade ToolTip on nomedocontroloToolTip para o formulário e para cada um dos seus controlos. Depois, pode utilizar esta propriedade para especificar a informação que pretende mostrar quando o utilizador passar com o ponteiro do rato sobre o controlo.

25. Seleccione a barra de menus do formulário frmPrincipal recentemente criada. Defina a sua propriedade ToolTip on nomedocontroloToolTip com o texto Os menus permitem realizar as tarefas disponíveis para este formulário.

Se pretender disponibilizar informação de ajuda mais alargada e sensível ao contexto, pode adicionar, ao formulário, um controlo HelpProvider. O controlo é mostrado no fundo do ambiente de desenvolvimento. Como resultado da inclusão deste controlo, ficam disponíveis várias propriedades adicionais para o formulário e para os seus controlos.

(21)

Para mostrar informação de ajuda quando o utilizador seleccionar um determinado controlo do formulário e pressionar a tecla F1, utilize a propriedade HelpString on nomedocontroloHelpProvider do controlo. Também pode utilizar a propriedade HelpString on nomedocontroloHelpProvider do formulário para definir informação de ajuda sobre o formulário.

Quando se introduz texto na propriedade HelpString on nomedocontroloHelpProvider, a propriedade ShowHelp on nomedocontroloHelpProvider altera automaticamente o seu valor de False para True.

No caso de não estar definida nenhuma informação de ajuda sensível ao contexto para um determinado controlo do formulário e o utilizador seleccionar esse controlo e pressionar a tecla F1, irá aparecer a informação de ajuda que estiver definida na propriedade HelpString on nomedocontroloHelpProvider do formulário.

27. Defina a propriedade HelpString on nomedocontroloHelpProvider do formulário com o texto Esta aplicação permite calcular o valor acumulado de um investimento e a desvalorização de um determinado bem.

(22)

Criar o formulário para calcular o valor acumulado de

um investimento

Quando se inicia um novo projecto é criado automaticamente um formulário. 28. Para adicionar outro formulário ao projecto, seleccione a opção Add

Windows Form do menu Project.

(23)

29. Na secção Templates da caixa de diálogo Add New Item, seleccione a opção Windows Form. Depois introduza o nome para o formulário e pressione o botão Add. Como pode observar na figura anterior, sugere-se que utilize o prefixo frm para o nome de cada formulário criado, de modo a que fique claro que o ficheiro gerado contém um formulário. Introduza o nome frmCalcularInvestimento.

Pode também adicionar um formulário já existente. Para tal, seleccione a opção Add Existing Item do menu Project. Depois, na caixa de diálogo Add Existing Item, indique o caminho para o ficheiro com a extensão .vb que contém o formulário que pretende adicionar e pressione o botão Add.

Note-se que, quando se adiciona ao projecto um formulário já existente em outro projecto, esse formulário é copiado para o novo projecto. Deste modo, quaisquer alterações que sejam realizadas no formulário não se aplicam ao formulário original.

Se pretender alterar o nome de um formulário, seleccione o formulário no Solution Explorer e escolha a opção Rename.

(24)

Depois, introduza o novo nome. O Visual Studio vai, de forma automática, actualizar o nome do formulário em todos os locais que ele for referido no projecto.

30. Adicione, ao formulário criado nos passos 28 e 29, os controlos necessários, de modo a que tenha a seguinte aparência.

Para calcular o valor acumulado, o utilizador deve seleccionar, na secção Calcular, a opção Valor Acumulado. Depois, deve introduzir a quantia do investimento mensal, a taxa anual de juros e o número de anos de duração do investimento nas caixas de texto (Text Box) correspondentes. Finalmente, deve pressionar o botão Calcular. O resultado é apresentado na caixa de texto correspondente ao Valor Acumulado.

Para calcular o investimento mensal que deve ser feito para obter um determinado valor acumulado, mediante uma determinada taxa anual de juros e um determinado número de anos de investimento, o utilizador deve seleccionar, na secção Calcular, a opção Investimento Mensal. Depois, deve introduzir a taxa anual de juros, o número de anos de duração do investimento e o valor acumulado que pretende obter nas caixas de texto (Text Box) correspondentes. Finalmente, deve pressionar o botão Calcular. O resultado é apresentado na caixa de texto Investimento Mensal.

(25)

31. Defina as propriedades que se sugerem a seguir para alguns dos controlos utilizados para a construção do formulário.

Propriedade Name para alguns objectos:

• rdoInvestimentoMensal • rdoValorAcumulado • txtInvestimentoMensal • txtTaxaAnual • txtNúmeroAnos • txtValorAcumulado • btnFechar • btnCalcular

Propriedades relevantes do formulário frmCalcularInvestimento:

• FormborderStyle: FixedSingle para utilizador não por redimensionar • StartPosition: CenterScreen para centrar no meio do ecrã

• Text: Calcular Investimento

• AcceptButton: btnCalcular (tecla Enter) • CancelButton: btnFechar (tecla Esc)

• ControlBox: False. Determina que este formulário não vai apresentar uma control box no canto superior esquerdo

Propriedades relevantes do objecto GroupBox GroupBox1:

• Text: Calcular

Propriedades relevantes do objecto RadioButton rdoValorAcumulado:

• Checked: True

Propriedades relevantes do objecto TextBox txtValorAcumulado:

• ReadOnly: True

• BackColour: Control (para o controlo parecer desactivado) • TabStop: False (para o utilizador não poder mover o focus

(26)

Criar o formulário para calcular a desvalorização de um

bem

Vamos agora adicionar o formulário que permite calcular a desvalorização, para cada ano, de um bem.

32. Para adicionar outro formulário ao projecto, seleccione a opção Add Windows Form do menu Project. Introduza o nome frmCalcularDesvalorização.

33. Adicione, ao formulário criado no passo anterior, os controlos necessários, de modo a que tenha a seguinte aparência.

Para calcular a desvalorização, para cada ano, de um bem, o utilizador deve introduzir, nas caixas de texto apropriadas, o custo inicial e o valor do bem ao fim de um tempo de vida (em anos), que deve ser seleccionado na caixa de combinação correspondente. Depois, deve pressionar o botão Calcular. O resultado é apresentado na caixa de listagem da secção Desvalorização.

(27)

34. Defina as propriedades que se sugerem a seguir para alguns dos controlos utilizados para a construção do formulário.

Propriedade Name para alguns objectos:

• txtCustoInicial • txtValorFinal • btnCalcular • btnFechar • cboTempoVida • lstDesvalorização

Propriedades relevantes do formulário frmCalcularDesvalorização:

• FormborderStyle: FixedSingle para utilizador não poder redimensionar • StartPosition: CenterScreen para centrar no meio do ecrã

• Text: Calcular Desvalorização

• AcceptButton: btnCalcular (tecla Enter) • CancelButton: btnFechar (tecla Esc)

• ControlBox: False. Determina que este formulário não vai apresentar uma control box no canto superior esquerdo

Propriedades relevantes do objecto ComboBox cboTempoVida:

• DropDownStyle: DropDownList (para o utilizador apenas poder seleccionar valores da combobox ou fazer introdução de dados que já estejam definidos na lista. Se quiser permitir a introdução de valores que ainda não existem na lista, deve especificar apenas DropDown)

Propriedades relevantes do objecto ListBox lstDesvalorização:

• TabStop: False (para o utilizador não poder mover o focus para este controlo)

Propriedades relevantes dos 4 objectos Label:

• TextAlign: MiddleRight

Defina ainda a propriedade TabIndex de cada um dos controlos, de modo a que o focus se mova de cima para baixo e da esquerda para a direita.

(28)

Definir o formulário inicial de um projecto

35. Para aceder às propriedades do projecto, seleccione a opção Nomedoprojecto Properties do menu Project.

Aparece a página Project Designer.

36. Na caixa de combinação de secção Startup form, selecione o formulário frmPrincipal.

(29)

Abertura de um projecto anterior

37. Inicie o programa Microsoft Visual Studio 2005 através do menu INICIAR. 38. Na secção Recent Projects do tabulador Start Page, seleccione o nome

Referências

Documentos relacionados

grid = TRUE, color = TRUE, linlab = NA, axes = TRUE, class = NA, classcolor = NA, posleg = 2, boxleg = TRUE, savptc = FALSE, width = 3236, height = 2000, res = 300, casc =

Altas médias de qualidade de grama (TQ) em todas as alturas de poda e níveis de sombreamento, reforçam a maior tolerância ao sombreamento de Meyer zoysiagrass e

[r]

Em nossa opinião, as demonstrações contábeis acima referidas apresentam adequadamente, em todos os aspectos relevantes, a posição patrimonial e financeira da TRUE

Portanto, uma Tru, ou True Ortofoto não mais se trata de um rearranjo de pixels de uma imagem, mas sim, da mosaicagem, patchwork, ou uma “colcha de retalhos” com a inserção

Assim, durante o mês de outubro optamos por reduzir algumas posições em créditos corporativos onde os spreads de crédito nos pareciam excessivamente comprimidos

A inscrição do imóvel rural após este prazo implica na perda do direito de manter atividades agropecuárias em áreas rurais consolidadas em APP e Reserva Legal, obrigando

VUOLO, J.H. Fundamentos da Teoria de Erros, Edgard Blucher Ltda, São Paulo, 1992 YIN, R.K. Estudo de caso: planejamento e métodos, Bookman, Porto Alegre, 2005.. Quando a