Delphi 7 Aula 04 Bloco de Notas MDI



Documentos relacionados
O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Delphi 7 Aula 03 Progressão Geométrica

MICROSOFT OFFICE EXCEL 2007

O AMBIENTE DELPHI. Programação de Computadores.

Microsoft Powerpoint 2003

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Delphi. Conexão com Banco de Dados Paradox. Jocélio Passos

Microsoft Excel Ficha prática n. 8

PROVA DE NOÇÕES DE INFORMÁTICA

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior

PROCEDIMENTO DO CLIENTE

APOSTILA DE INFORMÁTICA - PAINT

Orientação a Objetos

Microsoft Excel INTRODUÇÃO PARTE 1 SUMÁRIO

CARTILHA UTILIZAÇÃO DE PEN DRIVES NAS ESTAÇÕES DE TRABALHO DO TJPE NOVAS REGRAS DE UTILIZAÇÃO

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Algoritmos APRENDENDO A PROGRAMAR COM C#

WINDOWS XP. Autor: Amarildo Correia de Melo

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Com uma melhoria no visual o sistema conta com novidades e alguns aprimoramentos nos recursos já existentes.

Remoto Serial v. 1.0 Beta 10/8/ :41:04

Apresentação do Microsoft Excel

Introdução à Ciência da Informação

Calculadora Virtual HP Prime

Guia para instalação da Loja demonstração

6 CONCEPÇÃO BÁSICA DO SISTEMA DE APOIO À DECISÃO

AULA 3 Alocação dinâmica de memória: Ponteiros

Portal de Carapicuíba Painel Administrativo

KODAK PROFISSIONAL Câmera Digital DCS Pro SLR/c Guia do usuário - Seção de Otimização da Lente

TUTORIAL MATLAB Victor Breder 2016

Objectos Gráficos 1. APROG (Civil) Aula 4. Friday, November 2, 12

TUTORIAL PRECIFICAÇÃO MYMIX

Bem-vindo ao tópico sobre Cadastro e documentos.

Universidade Federal da Fronteira Sul Moodle Versão 3.0 MANUAL DO ALUNO

Gerenciamento de dispositivos móveis

Excel. Profª Leticia Lopes Leite

Conhecendo o Delphi 2010

Software Configurador

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Referência da Tarefa de Comunicação do Sametime

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu.

Introdução a Banco de Dados. INTRODUÇÃO

MANUAL SERVIÇOS E AGENDAMENTO

sumário CAPÍTULO 01 CAPÍTULO 02 CAPÍTULO 03 CAPÍTULO 04 CAPÍTULO 05 CAPÍTULO 06 CONHECENDO CORELDRAW X régua, linhas-guia e grade...

MANUAL DO SISTEMA. Versão 6.05

Associação de dados cartográficos e alfanuméricos no TerraView

Guia de impressão. Carregamento de bandejas. Guia de impressão. 1 Remova totalmente a bandeja.

Inclusão de Novo Processo Administrativo

MREditor Editor de Impressos

AULA 3 Trabalhando com apresentações do Microsoft PowerPoint

Aplicativo da Cultura

Backup e Recuperação Guia do Usuário

Manual Básico. Para utilização do Gerenciador de Imóveis

O QUE É O CALC PLANILHAS ELETRÔNICAS O Calc é um programa que trabalha com planilhas.

MANUAL DO SISTEMA TRT-5 PRESTADOR MÉDICO

FUNDAMENTOS DE WINDOWS INFORMÁTICA / IFRN/PRONATEC 1. O Windows

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário

MANUAL DO SISTEMA. Versão 6.00

PROGRAMA TERRITÓRIOS DA CIDADANIA. # Manual Operacional # Matriz de Ações 2013

Bem-vindo ao tópico sobre movimentos de mercadorias em estoque.

MAPA Manual do Usuário PGA SIGSIF Registro de Produto

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

Instalando o SCI Manager

Programação de Computadores I. Linguagem C Função

Usando o painel do operador

Atividades de Treinamento. Carregando programas na família GTI100. HI Tecnologia Indústria e Comércio Ltda. Documento de acesso Público

Fundamentos de Informática. Tiago Alves de Oliveira

Manual Notícias. Note que abriu uma nova tela que permite procurar a imagem desejada em seu computador.

Manual SAGe Versa o 1.1

O que há de novo. Audaces Vestuário Versão Clube Audaces

COMO PREENCHER A DECLARAÇÃO DE BENS E VALORES

INSTALAÇÃO DE CERTIFICADO SERVIDOR WEB MICROSOFT IIS 5.x

PHP-GTK. Criando Aplicações Gráficas com PHP. Pablo Dall'Oglio. Segunda Edição Inclui PHP 5 e GTK 2. Novatec

Transferindo licenças

GUIA DE UTILIZAÇÃO DO SF-FACIL SAT FISCAL CF-e. Click 2 x sobre o icone SfFacilSatFiscal no desktop de seu equipamento;

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Manual Loja Virtual 2.0

Introdução à Programação. Microsoft WINDOWS XP Eng. Ambiente CA

BIZAGI PROCESS MODELER - TUTORIAL INSTALAÇÃO E PRIMEIRO ACESSO

M A N U A L D O ADMINISTRADOR DO PORTAL

MANUAL DE UTILIZAÇÃO DO AUTO ATENDIMENTO SETOR PÚBLICO DO BANCO DO BRASIL

Conhecimentos Básicos de Computação e Microinformática

FOLHA DE CÁLCULO ELABORAÇÃO DE GRÁFICOS

LIBREOFFICE: APRESENTAÇÃO COM O IMPRESS. Professor: Francisco Dantas Nobre Neto

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Autor: Tiago Lone Nível: Básico Criação: 15/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Microsoft Excel Ficha prática n. 1

Procedimentos para realização de backup

FUNÇÕES MATEMÁTICAS NÚMERO : PI() SENO E COSSENO: SEN() E COS()

MANUAL DE INSTALAÇÃO DO SES CLIENT WIN 7 64 BITS

CÁLCULO DO MODELO NUMÉRICO (MDT)

Núcleo de Tecnologias Interativas de Aprendizagem.

Manual Escrituração Fiscal Digital

Processo: Logística. Motivação. Nome do Processo: Inventário Cíclico

Sistemas Distribuídos Capítulo 4 - Aula 5

RioCard Saúde Presente

Transcrição:

Delphi 7 Aula 04 Bloco de Notas MDI Prof. Gilbert Azevedo da Silva I. Objetivos Desenvolver uma aplicação MDI, Utilizar métodos para recortar, copiar e colar textos de/para a área de transferência, Utilizar os componentes de diálogo: OpenDialog, SaveDialog e FontDialog, Utilizar métodos para criar e destruir formulários em tempo de execução. II. Teoria 1. Variáveis Estáticas As variáveis utilizadas no desenvolvimento de aplicativos podem ser classificadas em variáveis estáticas e dinâmicas. As variáveis estáticas, normalmente de tipos primitivos, como caracteres, inteiros e reais, são declarados numa cláusula Var. Tais variáveis permanecem na memória do computador durante toda a execução do programa onde são declaradas. Ao executar um programa, o sistema operacional reserva endereços de memória para suas variáveis estáticas, protegendo-as de forma que nenhum outro programa tenha acesso a estas variáveis. Ao fechar o aplicativo, os endereços de memória alocados são liberados para serem utilizados por outros processos. A declaração abaixo mostra a alocação de três variáveis estáticas: A, B e X. Na memória, são reservados 8 bytes para as variáveis A e B (do tipo double) e 4 bytes para a variável X (do tipo integer). A quantidade de bytes de memória alocados varia de acordo com o tipo da variável, devido à necessidade de maior ou menor quantidade de bits para representar os valores que cada variável pode assumir. Os nomes dados as variáveis, como A, B e X, neste exemplo, são identificadores dados aos endereços de memória alocados. Seria extremamente inconveniente se referir aos valores armazenados na memória através de seus endereços. var A, B : double; X : integer; A Memória B X Você pode aprender muito mais sobre os diversos tipos de variáveis, a quantidade de memória reservada para cada tipo e a forma como os valores das variáveis são representados na memória, utilizando o help do Delphi. Execute o comando Delphi Help, no menu Help do Delphi. Selecione o tópico Delphi Language e em seguida o tópico Data types, variables and constants conforme mostrado a seguir. Este tópico apresentará tudo sobre variáveis, detalhadamente. As janelas a seguir mostram como chegar, por exemplo, ao help para variáveis inteiras.

2. Variáveis Dinâmicas As variáveis são dinâmicas quando controlamos a sua existência na memória, ou seja, quando utilizamos comandos para colocá-las e removê-las da memória em qualquer instante durante a execução de um programa. O termo criar uma variável refere-se à operação de colocar uma variável dinâmica na memória, isto é, de alocar endereços na memória para a variável. De forma análoga, o termo destruir uma variável está relacionado à operação de remover a variável dinâmica da memória. Podemos afirmar que as variáveis estáticas são criadas no início da execução de um programa e destruídas no seu fechamento, enquanto que as variáveis dinâmicas são criadas e destruídas a qualquer momento durante a execução. As variáveis dinâmicas são utilizadas para o gerenciamento da memória do computador, pois permitem ao programador racionalizar o uso da memória, alocando e liberando endereços quando necessário. São também utilizadas para a criação de estruturas de dados como pilhas e listas. No Delphi, os formulários utilizados para o desenvolvi mento de aplicativos são variáveis dinâmicas. Isto significa que as janelas dos programas somente existem na memória, e conseqüentemente na tela, após serem criadas. Na verdade, todos os objetos do Delphi, aí incluídos os Forms, são variáveis dinamicamente alocadas. As janelas dos aplicativos são construídas no projeto, programa principal de cada aplicação. O comando Application.CreateForm, mostrado abaixo, é o responsável pela criação da janela Form1 dos aplicativos desenvolvidos em Delphi. A variável Form1, declarada na Unit1, mostrada a seguir, é um tipo especial de variável (estática) que tem a potencialidade de referenciar um objeto (dinâmico), quando este objeto é criado. As referências de objetos são tipos especiais de ponteiros, pois, apontam para endereços de memória onde estão alocados objetos. Esta operação é ilustrada abaixo. Memória (Início do Programa) Memória (Após o comando CreateForm) Form1 Form1 Janela

A figura abaixo mostra o projeto de um aplicativo em Delphi com 5 formulários. Você pode perceber que todas as janelas, por default, são 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. 3. Aplicações SDI e MDI Em todos os exemplos vistos até o momento, os formulários das aplicações são do tipo fsnormal. Aplicações que utilizam este tipo de formulário são conhecidas por aplicações SDI (Simple Document Interface). A janela principal destas aplicações apresenta uma única interface de interação com o usuário. Um outro tipo de aplicação Windows, conhecido por MDI (Multiple Document Interface), utiliza janelas do tipo fsmdiform e fsmdichild. Nestas aplicações, a janela principal do aplicativo (do tipo fsmdiform) permite que outras janelas (do tipo fsmdichild) sejam inseridas em seu interior. O Microsoft Excel, visto abaixo, é um exemplo de aplicação MDI. A janela principal do Excel que apresenta o menu e a barra de ferramentas

permite que várias janelas de planilhas sejam abertas em seu interior. A janela principal é do tipo fsmdiform e cada uma das planilhas abertas é do tipo fsmdichild. As aplicações MDI apresentam portanto várias interfaces de interação com o usuário. O tipo de uma janela pode ser alterado através da propriedade FormStyle do Formulário. 4. Visibilidade dos Formulários Os formulários comuns (fsnormal) tornam-se visíveis quando o método Show é chamado. Ao executar o Show, a propriedade Visible do Form, que por padrão inicia com o valor False, recebe o valor True e a janela torna-se visível. Por outro lado, o método Hide pode ser usado para esconder uma janela fsnormal, tornado a propriedade Visible igual a False. Veja abaixo: Este dois comandos são equivalentes: mostram a janela Form2 Form2.Show; Form2.Visible := True; Este dois comandos são equivalentes: escondem a janela Form2 Form2.Hide; Form2.Visible := False; Em aplicações MDI, a janela principal do aplicativo, normalmente chamada de janela mãe, 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 aplicação MDI são sempre

visíveis, ou seja, as janelas filhas não podem ser escondidas através do método Hide ou da atribuição do valor False à propriedade Visible. É importante também não confundir a visibilidade de uma janela com sua existência. Criar uma janela (através do comando CreateForm) é colocar toda informação a seu respeito na memória do computador: posição, cor, título, etc. Mostrar uma janela é simplesmente fazer com que a janela existente na memória torne-se visível na tela, ou seja, fazer a propriedade Visible verdadeira. Muitas vezes, porém, é necessário controlar o momento de criação das janelas em um aplicativo. Quando a quantidade de janelas em um programa começa a aumentar, se faz necessário controlar o momento em que as janelas vão para a memória. Se você criar todas as janelas no projeto da aplicação, ou seja, no início do programa, você estará alocando uma quantidade de memória considerável do computador. Esta atitude possivelmente diminuirá a performance do computador devido a grande quantidade de memória requerida pela aplicação. O diálogo de Opções de Projeto (Menu Project Options) permite ao programador selecionar quais janelas serão criadas no início do programa no projeto (Auto-Create Forms) e quais serão criadas durante a execução do programa (Available Forms). Neste diálogo, é possível também definir qual a janela principal da aplicação (Main Form), necessariamente uma janela da lista Auto-Create. 5. Criação e Destruição de Formulários em Tempo de Execução Os dois comandos abaixo podem ser utilizados para criar uma janela: Application.CreateForm(TForm1, Form1); Form1 := TForm1.Create(Application); O primeiro comando é um método do objeto Application. Este objeto representa o seu aplicativo e realiza todas as tarefas necessárias de conversação entre o seu programa e o Windows. O segundo comando é a forma comumente utilizada para a criação de qualquer objeto no Delphi, possuindo a seguinte sintaxe: Referência_de_Objeto := Classe_do_Objeto.Create(Proprietário_do_Objeto);

A referência do objeto é a variável estática que controlará todo o seu funcionamento. Se um objeto for criado sem referência, teremos na memória uma variável dinâmica inacessível, ou seja, sem nenhuma funcionalidade prática. A classe do objeto indica qual o seu tipo, por exemplo, janela, botão, caixa de texto, etc. O proprietário de um objeto é o indivíduo responsável pela sua destruição. Muitas vezes, tomamos o objeto Application como proprietário dos demais objetos, isto significa que os objetos criados serão destruídos quando o objeto Application for destruído, ou seja, quando o programa for encerrado. Se você precisa controlar tanto a criação quanto a destruição 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 ninguém (nil) é seu proprietário. Quando esta janela não mais for necessária, o método Free pode ser chamado, removendo-a da memória. Desta forma, os momentos de criação e destruição do objeto são controlados. O comando Create é um método de classe. Todas as classes no Delphi possuem este método que é o responsável por colocar os objetos desta classe (ou deste tipo) na memória. É também importante zerar a referência (ou ponteiro) de um objeto, após a sua destruição. Isto impedirá a ocorrência de um erro bastante comum: Access Violation (violação de acesso), o qual ocorre quando se utiliza uma referência que aponta para um endereço de memória não mais reservado. Para zerar um ponteiro basta atribuir nil a ele. O comando FreeAndNil, incluído a partir do Delphi 5, pode ser utilizado para destruir um objeto e zerar a sua referência, simultaneamente. Veja abaixo: Form1 := nil; FreeAndNil(Form1); // Zera a referência Form1. // Destrói o objeto apontado por Form1, zerando a referência. Apreenda muito mais sobre classes e objetos no help do Delphi. O tópico 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 aplicação MDI e como utilizar alguns componentes da paleta Dialogs: OpenDialog, SaveDialog e FontDialog. O objetivo é desenvolver uma aplicação semelhante ao bloco de notas do Windows, onde seja possível editar de vários textos simultaneamente. Cada texto deve ser apresentado em uma janela filha de uma aplicação MDI. 2. Configurando o Formulário Form1 2.1. Inserindo Objetos no Formulário Form1 Insira no formulário um objeto MainMenu da paleta Standard, um OpenDialog, um SaveDialog e um FontDialog, todos da paleta Dialogs. Configure o MainMenu de acordo com a tabela abaixo. O Form1 deve ficar conforme visto na figura. Menu Arquivo Editar Janela Opções Comandos Novo Recortar Lado a Lado Fonte Abrir Arquivo... Copiar Em Cascata Abrir Diretório... Colar Minimizar Todas Salvar Salvar Como... Sair - 2.2. Alterando Propriedades do Formulário Form1 Altere as propriedades do Form1 de acordo com a tabela abaixo: Objeto Propriedade Valor Comentário Form1 Caption Bloco de Notas MDI Título da janela. Form1 FormStyle fsmdiform Define a janela como Janela-Mãe em uma aplicação MDI. Form1 WindowState wsmaximized Define o estado da janela como maximizado.

3. Configurando o Formulário Form2 3.1. Inserindo Objetos no Formulário Form2 Selecione o comando File New Form para incluir um novo formulário na aplicação. Insira no formulário um objeto Memo da paleta Standard. 3.2. Alterando Propriedades dos Objetos do Form2 Altere as propriedades dos objetos de acordo com a tabela abaixo: Objeto Propriedade Valor Comentário Form2 FormStyle fsmdichild Define a janela como Janela-Filha em uma aplicação MDI. Memo1 Align AlClient Disposição do objeto na janela. Memo1 Lines vazio Texto digitado no memorando. Memo1 ScrollBars ssvertical Barra de rolagem vertical. O formulário deve ficar conforme mostrado na figura. 4. Definindo a Lista de Criação dos Formulários Selecione o comando Options no menu Project do Delphi. Remova o Form2 da lista Auto-Create Forms. As janelas filhas serão criadas ao selecionar os comandos: Novo, Abrir Arquivo e Abrir Diretório da aplicação.

5. Programando os Comandos do Menu Arquivo O código dos comandos: Novo, Abrir Arquivo e Abrir Diretório é mostrado abaixo. O comando Novo (NovoClick) cria uma janela Form2, iniciando seu título (propriedade Caption) com a string Sem Nome : O comando Abrir Arquivo (AbrirArquivoClick) executa o diálogo OpenDialog. Se a operação de abertura for confirmada, uma janela Form2 é criada de forma análoga ao comando anterior. O título da janela recebe o nome do arquivo selecionado no OpenDialog e o conteúdo do arquivo é lido através do método LoadFromFile da propriedade Lines do Memo1. O comando Abrir Diretório (AbrirDiretorioClick) executa uma função de seleção de diretório (SelectDirectory). Se a operação de seleção for confirmada, o aplicativo buscará todos os arquivos com extensão txt no diretório selecionado, criando uma janela para cada arquivo encontrado. Os procedimentos e funções FindFirst, FindNext e FindClose são usados para verificar os arquivos existentes no diretório selecionado. Os dados de cada arquivo são recuperados em um registro do tipo TSearchRec. Consulte o help do Delphi para maiores esclarecimentos a respeito destas informações. A figura a seguir mostra o código 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 necessário 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 através do método SaveToFile da propriedade Lines do Memo1. Neste caso, o nome do arquivo é dado pela propriedade Caption da janela. O comando SalvarComo (SalvarComoClick) verifica também se alguma janela filha está ativa. Caso afirmativo, o diálogo SaveDialog é executado. Neste diálogo, um novo nome para o arquivo deve ser informado. Se a operação de salvamento for confirmada, o conteúdo do Memo é salvo para o arquivo através do método SaveToFile da propriedade Lines do Memo1. Em seguida, o nome do arquivo é atribuído à propriedade Caption da janela. O comando Sair (SairClick) executa o método Close da janela Form1, fechando a janela principal da aplicação e, conseqüentemente, o programa. 6. Programando os Comandos do Menu Editar A janela abaixo mostra os comandos do menu Editar. Aqui, os métodos do Memo1: CutToClipboard, CopyToClipboard e PasteFromClipboard são usados para recortar, copiar e colar o conteúdo do Memo de/para a área de transferência.

7. Programando os Comandos do Menu Janela A janela abaixo mostra os comandos do menu Janela. Aqui, os métodos Tile e Cascade do Form1 são usados para colocar as janelas filhas lado a lado e em cascata, respectivamente. Para minimizar todas as janelas filhas, o comando MinimizarTodas alterar a propriedade WindowState de cada uma das janelas para wsminimized. 8. Programando o Comando do Menu Opções A janela abaixo mostra o comando Fonte do menu Opções. Neste comando, o dialógo FontDialog é executado e abre uma janela de seleção de fontes de texto. A fonte selecionada no diálogo é então atribuída à fonte de cada janela filha.

9. Permitindo o Fechamento de uma Janela Filha. Conforme citado anteriormente, as janelas filhas presentes na memória do computador são sempre visíveis. Deste modo, a única forma de permitir o fechamento de uma janela filha é forçar sua destruição no momento em que o usuário tentar fechá-la. Você pode programar esta funcionalidade no evento OnClose do formulário. A figura abaixo mostra o código para este evento. O parâmetro Action de OnClose pode assumir 4 valores distintos indicando qual a operação realizada quando o usuário tentar fechar a janela: Action := canone; // Não realiza nenhuma ação ao tentar fechar uma janela. Action := cahide; // Torna a janela invisível. Action := cafree; // Destrói a janela. Action := caminimize; // Minimiza a janela. 10. Executando e Salvando o Aplicativo. Execute e salve o aplicativo.