Delphi 7 Aula 03 Progressão Geométrica Prof. Gilbert Azevedo da Silva I. Objetivos Desenvolver aplicativos com várias janelas, Manipular lista de strings, Utilizar os componentes: MainMenu, ToolBar, ImageList, Memo, BitBtn e Chart. II. Teoria 1. Acesso a objetos de outros formulários Considere os formulários, Form1 e Form2, e os comandos do método Button1Click mostrados abaixo: Quando você está programando os eventos que ocorrem em uma janela, os objetos incluídos no formulário são acessados através de seu nome, dado pela propriedade Name, conforme visto no comando abaixo: procedure TForm1.Button1Click(Sender : TObject); begin Edit1.Text := Olá, mundo! ; end;
Neste caso, o objeto Edit1 refere-se a caixa de textos do Form1 e o seu conteúdo é alterado para Olá, mundo!. Isto acontece porque o método Button1Click, que manipula o clique no botão da janela, pertence também ao Form1. Em resumo, todos os objetos incluídos em um formulário, quando manipulados em métodos da própria janela, devem ser referenciados unicamente através da propriedade Name. Entretanto, se ao programar os eventos que ocorrem em uma janela for necessário acessar objetos existentes em outro formulário, dois passos são necessários. Primeiro, você deve adicionar uma cláusula uses na unidade em que o evento está sendo programado indicando a unidade da outra janela onde o objeto está incluído. A cláusula uses deve ser inserida imediatamente após o identificador implementation, conforme mostrado abaixo: implementation uses Unit2; A cláusula uses permite que uma unidade utilize definições existentes em outras unidades. Desta forma, ao incluir uses Unit2 na Unit1, todos as declarações realizadas na unidade Unit2 serão acessíveis na Unit1. Com isso, todos os objetos incluídos no Form2 serão acessíveis na Unit1. O segundo passo é referenciar os objetos da outra janela indicando o formulário no qual o componente está inserido. O comando abaixo mostra como alterar o conteúdo da caixa de textos Edit1 do Form2 a partir do Form1. procedure TForm1.Button1Click(Sender : TObject); begin Form2.Edit1.Text := Olá, mundo! ; end; Você pode inserir as cláusulas uses em uma unidade de duas formas: digitando o texto diretamente no editor de códigos ou utilizando o comando Use Unit do menu File do Delphi, como mostrado abaixo: 2. A Estrutura das Unidades As unidades de código são divididas basicamente em duas seções: Interface e Implementation. A seção Interface é a parte pública da unidade e contém definições de tipos e variáveis que são acessíveis por outras unidades. A seção Implementation é a parte privada da unidade, não podendo ser acessada por outras unidades. Nesta seção são implementados os métodos que manipulam os eventos que ocorrem na janela.
Na Unit1 abaixo, a declaração do tipo TForm1 define como é a janela Form1: uma janela que possui os objetos Edit1 e Button1 e responde ao evento OnClick do botão Button1. A variável Form1 representa a própria janela. Como ela está na seção Interface da unidade, outras unidades podem acessar a janela Form1, incluindo seus objetos e seus manipuladores de eventos, desde que uma cláusula uses Unit1 seja incluída na unidade desta outra janela. Na unidade Unit1, por exemplo, a cláusula uses Unit2 permite a unidade Unit1 acessar a janela Form2 e todos os seus objetos. Por isso, é possível acessar a caixa de textos Edit1 do Form2. No projeto da aplicação, visto abaixo, uma cláusula uses lista todas as unidades pertencentes ao projeto. Para o exemplo, as unidades Unit1 e Unit2, referentes aos formulários Form1 e Form2, são incluídas nesta lista. Com isto, tanto os tipos TForm1 e TForm2, quanto as variáveis Form1 e Form2, que são declarados na seção Interface dessas unidades, podem ser manipuladas no projeto. O comando CreateForm, por exemplo, utiliza estas declarações para reservar a memória necessária às janelas da aplicação.
III. Exemplo 1. Objetivo O exemplo desta aula mostra o funcionamento básico dos componentes MainMenu utilizado para criar um menu de comandos; ToolBar e ImageList utilizados para criar uma barra de ferramentas; Memo utilizado para mostrar um texto de várias linhas; BitBtn um botão com imagem e Chart utilizado para apresentar séries de valores na forma gráfica. O exemplo mostra também como desenvolver aplicações com vários formulários. O objetivo da aplicação é calcular os valores de uma progressão geométrica dados os valores do primeiro elemento, razão e o número de termos da série. As janelas do aplicativo são apresentadas em seguida. A janela Form1, vista abaixo, é a janela principal da aplicação. Ela possui um menu e uma barra de ferramentas que controlam o funcionamento do aplicativo. Apresenta ainda um objeto memo onde várias linhas de texto podem ser apresentadas. No exemplo, o memo é utilizado para apresentar os termos da progressão geométrica. A janela Form2, vista abaixo, é utilizada para entrar os dados da progressão que são o primeiro termo, a razão e o número de termos a calcular. A janela Form3, vista abaixo, é utilizada para mostrar os termos da progressão na forma gráfica.
Finalmente, a janela AboutBox, vista abaixo, é utilizada para mostrar os dados da versão do aplicativo. 2. Configurando o Formulário Form1 2.1. Inserindo Objetos no Formulário Form1 Insira no formulário um objeto MainMenu e um objeto Memo, ambos da paleta Standard. Insira também um objeto ToolBar e dois objetos ImageList, ambos da paleta Win32. O Form1 deve ficar conforme visto abaixo. 2.2. Alterando Propriedades dos Objetos do Form1 Altere as propriedades dos objetos de acordo com a tabela abaixo: Objeto Propriedade Valor Form1 Caption Progressão Geométrica Memo1 Align alclient Memo1 Lines vazio ToolBar1 Flat True ToolBar1 HotImage ImageList1 ToolBar1 Image ImageList2
O formulário da aplicação deve ficar conforme mostrado na figura. 2.3. Configurando o MainMenu1 Para configurar o menu da aplicação, dê dois clique no objeto MainMenu. Uma janela chamada de Menu Designer é aberta. O retângulo em destaque na janela representa o item do menu. Clique no item para selecioná-lo. Altere a propriedade Caption do item para Opções. Pressione Enter. O menu Designer fica conforme abaixo: Clique no item ao lado de Opções para selecioná-lo. Altere o Caption do item para Ajuda. Pressione Enter. O menu Designer fica conforme abaixo:
Selecione o item abaixo de Opções. Altere o Caption para Configurar.... Pressione Enter. Repita este processo de forma que o Menu Opções apresente os comandos mostrados abaixo: Selecione o item abaixo de Ajuda. Repita o processo de forma que o Menu Ajuda apresente o comando Sobre..., conforme mostrado abaixo: Feche o Menu Designer. O formulário da aplicação deve ficar conforme mostrado abaixo. O menu funciona em tempo de projeto. Por exemplo, clique no Menu Opções que os comandos Configurar e Calcular serão apresentados. A configuração do menu está concluída. 2.4. Configurando o ToolBar1 Clique no objeto ToolBar com o botão direito e selecione o comando New Button. Repita o processo mais duas vezes de forma que a barra de ferramenta fique com três botões.
O formulário da aplicação deve ficar conforme mostrado na figura. A configuração da barra de ferramentas está concluída. 2.5. Configurando o ImageList1 Dê dois clique no objeto ImageList1. Uma janela chamada ImageList Editor é aberta. O objeto ImageList é usado para colocar as imagens nos botões da barra de ferramentas. Clique no botão Add para incluir a imagem do primeiro botão. Selecione a imagem Tools na pasta abaixo e clique em Abrir. C:\Arquivos de Programas\Arquivos Comuns\Borland Shared\Images\Buttons
A janela de opções mostrada abaixo é aberta. Selecione o botão Yes. Isto vai separar a imagem em duas: uma colorida e outra em preto e branco. O ImageList Editor deve ficar conforme mostrado na figura abaixo. Repita o processo e adicione as imagens Calculat e Help. Com isso, o ImageList ficará com seis figuras. Selecione cada uma das figuras em preto e branco e clique no botão Delete para removê-las. O ImageList Editor deve ficar com as três figuras coloridas, conforme mostrado na figura abaixo. Clique em Ok para finalizar a configuração do ImageList1. 2.6. Configurando o ImageList2 Repita todo o processo anterior para o objeto ImageList2, removendo entretanto as figuras coloridas. Com isso, o ImageList Editor deve ficar conforme mostrado na figura abaixo.
Clique em Ok para finalizar a configuração do ImageList2. O formulário da aplicação deve ficar conforme mostrado na figura. A configuração do Form1 está concluída. 3. Configurando o Formulário Form2 3.1. Inserindo um Novo Formulário na Aplicação Selecione o comando File New Form para incluir um novo formulário na aplicação. Uma nova janela (Form2) é adicionada ao aplicativo. 3.2. Inserindo Objetos no Formulário Form2 Insira no formulário um objeto GroupBox (paleta Standard) e dois botões BitBtn (paleta Additional). Dentro do GroupBox, insira três objetos Label e três objetos Edit, ambos da paleta Standard. O Form2 deve ficar conforme visto abaixo.
3.3. Alterando Propriedades dos Objetos do Form2 Altere as propriedades dos objetos de acordo com a tabela abaixo: Objeto Propriedade Valor Form2 Caption Configurar GroupBox1 Caption Dados da Progressão Label1 Caption Primeiro Termo Label2 Caption Razão Label3 Caption Número de Termos Edit1 Text vazio Edit2 Text vazio Edit3 Text vazio BitBtn1 Kind bkok BitBtn1 Caption Ok BitBtn2 Kind bkcancel BitBtn2 Caption Cancelar O formulário deve ficar conforme mostrado na figura. A configuração do Form2 está concluída. 4. Configurando o Formulário Form3 4.1. Inserindo um Novo Formulário na Aplicação Selecione o comando File New Form para incluir um novo formulário na aplicação. Uma nova janela (Form3) é adicionada ao aplicativo. 4.2. Inserindo Objetos no Formulário Form3 Insira no formulário um objeto Chart (paleta Additional). O Form3 deve ficar conforme visto abaixo.
4.3. Alterando Propriedades dos Objetos do Form3 Altere as propriedades dos objetos de acordo com a tabela abaixo: Objeto Propriedade Valor Form3 Caption Gráfico Chart Align AlClient 4.4. Configurando o Chart1 Dê dois clique no objeto Chart1. A janela Editing Chart1 é aberta. Clique no botão Add para adicionar uma série de dados. As séries são apresentadas no objeto Chart na forma gráfica. Selecione a opção Bar. Com isso, os valores serão visualizados em um gráfico de barras.
O Form3 deve ficar conforme visto abaixo. A configuração do Form3 está concluída. 5. Configurando o Formulário AboutBox 5.1. Inserindo um Formulário AboutBox na Aplicação Selecione o comando File New Other para incluir um novo formulário do tipo AboutBox na aplicação. A janela chamada Object Repository, vista abaixo, é apresentada. Selecione a página Forms e o ícone AboutBox. Clique em OK. Um formulário About Box, apresentado abaixo, é incluído na aplicação.
5.2. Alterando Propriedades dos Objetos do Formulário AboutBox Altere as propriedades dos objetos de acordo com a tabela abaixo: Objeto Propriedade Valor ProductName Caption Progressão Geométrica Version Caption Versão 1.0 O Formulário AboutBox deve ficar conforme visto abaixo. A configuração do AboutBox está concluída. 6. Programando Eventos O passo final para construção do aplicativo consiste na programação dos eventos de clique no menu e na barra de ferramentas. Selecione o Form1. Clique no Menu Opções e em seguida no comando Configurar. O método Configurar1Click é adicionado, conforme visto abaixo. O comando configurar é utilizado para definir os valores do primeiro termo, razão e número de termos da progressão. Para armazenar esses valores, vamos declarar três campos A1, R e N no tipo TForm1. Campos são variáveis atreladas a um objeto, neste caso, ao formulário Form1.
O código do procedimento Configurar1Click é apresentado abaixo. Os valores A1, R e N são passados para as caixas de texto do Form2. O comando ShowModal apresenta o Form2 na forma Modal. Isto significa que o usuário deve obrigatoriamente fechar o Form2 para poder retornar ao Form1. O método ShowModal retorna também uma informação que indica qual o botão clicado pelo usuário. Para o exemplo, se o botão clicado tiver sido Ok, os valores dos campos A1, R e N são atualizados. Selecione agora o comando Calcular do Menu Opções. O método Calcular1Click é adicionado. O código para este método é apresentado a seguir. O comando Memo1.Clear apaga o conteúdo atual do objeto Memo. O comando Form3.Series1.Clear apaga o conteúdo atual do Chart do Form3. Em seguida, são calculados os termos da progressão geométrica os quais são incluídos no Memo, através do método Add da propriedade Lines e no Chart, através do método Add de Series1. Finalmente, a janela Form3 é aberta através do método Show. O Show permitirá que o usuário interaja com as janelas Form1 e Form3, sem a necessidade de fechar o Form3.
Selecione agora o comando Sobre do Menu Ajuda. O método Sobre1Click é adicionado. O código para este método é apresentado a seguir. Finalmente, para concluir a aplicação, deveremos ligar os botões da barra de ferramentas com os comandos do menu. Selecione o primeiro botão da barra de ferramentas (ToolButton1). Na página Events do inspetor de objetos, selecione o método Configurar1Click para o evento OnClick do botão. Com isso, ao clicar o botão, o mesmo método programado para o comando Configurar do menu é chamado. Repita o procedimento para o segundo e o terceiro botão, selecionando os métodos Calcular1Click e Sobre1Click, respectivamente. Com isso, a programação do aplicativo é concluída. 7. Executando a Aplicação Execute e teste a aplicação, selecionado o comando Run do Delphi (F9). 8. Salvando a Aplicação Salve a aplicação, clicando no botão Save All da barra de ferramentas. Quatro unidades, além do projeto, serão salvas.