Escolar Documentos
Profissional Documentos
Cultura Documentos
I. Objetivos
Desenvolver uma aplicao MDI,
Utilizar mtodos para recortar, copiar e colar textos de/para a rea de transferncia,
Utilizar os componentes de dilogo: OpenDialog, SaveDialog e FontDialog,
Utilizar mtodos para criar e destruir formulrios em tempo de execuo.
II. Teoria
1. Variveis Estticas
As variveis utilizadas no desenvolvimento de aplicativos podem ser classificadas em variveis estticas e
dinmicas.
As variveis estticas, normalmente de tipos primitivos, como caracteres, inteiros e reais, so declarados
numa clusula Var. Tais variveis permanecem na memria do computador durante toda a execuo do
programa onde so declaradas. Ao executar um programa, o sistema operacional reserva endereos de
memria para suas variveis estticas, protegendo-as de forma que nenhum outro programa tenha acesso
a estas variveis. Ao fechar o aplicativo, os endereos de memria alocados so liberados para serem
utilizados por outros processos.
A declarao abaixo mostra a alocao de trs variveis estticas: A, B e X. Na memria, so reservados 8
bytes para as variveis A e B (do tipo double) e 4 bytes para a varivel X (do tipo integer). A quantidade de
bytes de memria alocados varia de acordo com o tipo da varivel, devido necessidade de maior ou
menor quantidade de bits para representar os valores que cada varivel pode assumir. Os nomes dados as
variveis, como A, B e X, neste exemplo, so identificadores dados aos endereos de memria alocados.
Seria extremamente inconveniente se referir aos valores armazenados na memria atravs de seus
endereos.
Memria
var A, B : double;
X : integer;
A
Voc pode aprender muito mais sobre os diversos tipos de variveis, a quantidade de memria reservada
para cada tipo e a forma como os valores das variveis so representados na memria, utilizando o help do
Delphi. Execute o comando Delphi Help, no menu Help do Delphi. Selecione o tpico Delphi Language e em
seguida o tpico Data types, variables and constants conforme mostrado a seguir. Este tpico apresentar
tudo sobre variveis, detalhadamente. As janelas a seguir mostram como chegar, por exemplo, ao help para
variveis inteiras.
2. Variveis Dinmicas
As variveis so dinmicas quando controlamos a sua existncia na memria, ou seja, quando utilizamos
comandos para coloc-las e remov-las da memria em qualquer instante durante a execuo de um
programa.
O termo criar uma varivel refere-se operao de colocar uma varivel dinmica na memria, isto , de
alocar endereos na memria para a varivel. De forma anloga, o termo destruir uma varivel est
relacionado operao de remover a varivel dinmica da memria. Podemos afirmar que as variveis
estticas so criadas no incio da execuo de um programa e destrudas no seu fechamento, enquanto que
as variveis dinmicas so criadas e destrudas a qualquer momento durante a execuo.
As variveis dinmicas so utilizadas para o gerenciamento da memria do computador, pois permitem ao
programador racionalizar o uso da memria, alocando e liberando endereos quando necessrio. So
tambm utilizadas para a criao de estruturas de dados como pilhas e listas.
No Delphi, os formulrios utilizados para o desenvolvi mento de aplicativos so variveis dinmicas. Isto
significa que as janelas dos programas somente existem na memria, e conseqentemente na tela, aps
serem criadas. Na verdade, todos os objetos do Delphi, a includos os Forms, so variveis dinamicamente
alocadas.
As janelas dos aplicativos so construdas no projeto, programa principal de cada aplicao. O comando
Application.CreateForm, mostrado abaixo, o responsvel pela criao da janela Form1 dos aplicativos
desenvolvidos em Delphi.
A varivel Form1, declarada na Unit1, mostrada a seguir, um tipo especial de varivel (esttica) que tem a
potencialidade de referenciar um objeto (dinmico), quando este objeto criado. As referncias de objetos
so tipos especiais de ponteiros, pois, apontam para endereos de memria onde esto alocados objetos.
Esta operao ilustrada abaixo.
Form1 Form1
Janela
A figura abaixo mostra o projeto de um aplicativo em Delphi com 5 formulrios. Voc pode perceber que
todas as janelas, por default, so criadas no projeto. A primeira janela na lista, o Form1, torna-se a janela
principal do programa. Se esta janela for fechada, o aplicativo encerrado.
Em aplicaes MDI, a janela principal do aplicativo, normalmente chamada de janela me, deve ser do tipo
fsMDIForm e as janelas apresentadas em seu interior, chamadas de janelas filhas, devem ser do tipo
fsMDIChild.
Quando o tipo de uma janela alterado para fsMDIChild, sua propriedade Visible automaticamente
alterada para o valor True. Isto significa dizer que as janelas filhas de uma aplicao MDI so sempre
visveis, ou seja, as janelas filhas no podem ser escondidas atravs do mtodo Hide ou da atribuio do
valor False propriedade Visible.
importante tambm no confundir a visibilidade de uma janela com sua existncia. Criar uma janela
(atravs do comando CreateForm) colocar toda informao a seu respeito na memria do computador:
posio, cor, ttulo, etc. Mostrar uma janela simplesmente fazer com que a janela existente na memria
torne-se visvel na tela, ou seja, fazer a propriedade Visible verdadeira.
Muitas vezes, porm, necessrio controlar o momento de criao das janelas em um aplicativo. Quando a
quantidade de janelas em um programa comea a aumentar, se faz necessrio controlar o momento em que
as janelas vo para a memria. Se voc criar todas as janelas no projeto da aplicao, ou seja, no incio do
programa, voc estar alocando uma quantidade de memria considervel do computador. Esta atitude
possivelmente diminuir a performance do computador devido a grande quantidade de memria requerida
pela aplicao.
O dilogo de Opes de Projeto (Menu Project | Options) permite ao programador selecionar quais janelas
sero criadas no incio do programa no projeto (Auto-Create Forms) e quais sero criadas durante a
execuo do programa (Available Forms). Neste dilogo, possvel tambm definir qual a janela principal
da aplicao (Main Form), necessariamente uma janela da lista Auto-Create.
Os dois comandos abaixo podem ser utilizados para criar uma janela:
Application.CreateForm(TForm1, Form1);
Form1 := TForm1.Create(Application);
O primeiro comando um mtodo do objeto Application. Este objeto representa o seu aplicativo e realiza
todas as tarefas necessrias de conversao entre o seu programa e o Windows.
O segundo comando a forma comumente utilizada para a criao de qualquer objeto no Delphi, possuindo
a seguinte sintaxe:
Referncia_de_Objeto := Classe_do_Objeto.Create(Proprietrio_do_Objeto);
A referncia do objeto a varivel esttica que controlar todo o seu funcionamento. Se um objeto for
criado sem referncia, teremos na memria uma varivel dinmica inacessvel, ou seja, sem nenhuma
funcionalidade prtica. A classe do objeto indica qual o seu tipo, por exemplo, janela, boto, caixa de texto,
etc. O proprietrio de um objeto o indivduo responsvel pela sua destruio. Muitas vezes, tomamos o
objeto Application como proprietrio dos demais objetos, isto significa que os objetos criados sero
destrudos quando o objeto Application for destrudo, ou seja, quando o programa for encerrado.
Se voc precisa controlar tanto a criao quanto a destruio de um objeto, ter de usar comandos
semelhantes aos mostrados abaixo:
Form1 := TForm1.Create(nil);
Form1.Free;
O primeiro comando cria a janela Form1, indicando que ningum (nil) seu proprietrio. Quando esta janela
no mais for necessria, o mtodo Free pode ser chamado, removendo-a da memria. Desta forma, os
momentos de criao e destruio do objeto so controlados. O comando Create um mtodo de classe.
Todas as classes no Delphi possuem este mtodo que o responsvel por colocar os objetos desta classe
(ou deste tipo) na memria.
tambm importante zerar a referncia (ou ponteiro) de um objeto, aps a sua destruio. Isto impedir a
ocorrncia de um erro bastante comum: Access Violation (violao de acesso), o qual ocorre quando se
utiliza uma referncia que aponta para um endereo de memria no mais reservado. Para zerar um
ponteiro basta atribuir nil a ele. O comando FreeAndNil, includo a partir do Delphi 5, pode ser utilizado para
destruir um objeto e zerar a sua referncia, simultaneamente. Veja abaixo:
Apreenda muito mais sobre classes e objetos no help do Delphi. O tpico Classes and objects do Delphi
Language Guide apresenta tudo a respeito de classes e objetos da linguagem Delphi.
III. Exemplo
1. Objetivo
O exemplo desta aula mostra como criar uma aplicao MDI e como utilizar alguns componentes da paleta
Dialogs: OpenDialog, SaveDialog e FontDialog.
O objetivo desenvolver uma aplicao semelhante ao bloco de notas do Windows, onde seja possvel
editar de vrios textos simultaneamente. Cada texto deve ser apresentado em uma janela filha de uma
aplicao MDI.
A figura a seguir mostra o cdigo dos comandos: Salvar, Salvar Como e Sair.
O comando Salvar (SalvarClick) verifica se existe alguma janela filha ativa. Se existir e a propriedade
Caption da janela for a string Sem Nome, o comando SalvarComoClick chamado. Isto acontece quando
um arquivo novo salvo pela primeira vez, sendo necessrio fornecer um nome ao arquivo. Neste caso, o
nome do arquivo fornecido no comando SalvarComo. Se a propriedade Caption for diferente de Sem
Nome, o arquivo salvo atravs do mtodo SaveToFile da propriedade Lines do Memo1. Neste caso, o
nome do arquivo dado pela propriedade Caption da janela.
O comando SalvarComo (SalvarComoClick) verifica tambm se alguma janela filha est ativa. Caso
afirmativo, o dilogo SaveDialog executado. Neste dilogo, um novo nome para o arquivo deve ser
informado. Se a operao de salvamento for confirmada, o contedo do Memo salvo para o arquivo
atravs do mtodo SaveToFile da propriedade Lines do Memo1. Em seguida, o nome do arquivo atribudo
propriedade Caption da janela.
O comando Sair (SairClick) executa o mtodo Close da janela Form1, fechando a janela principal da
aplicao e, conseqentemente, o programa.