Delphi - Ambiente (IDE) e Criação de Programas I - PDF
Download "Delphi - Ambiente (IDE) e Criação de Programas I"
Aurélia Godoi Madureira
1 Delphi 7 << Iniciante >> Módulo 5 Delphi - Ambiente (IDE) e Criação de Programas I 35 INTRODUÇÃO Esta lição visa familiarizá-lo com o Delphi 7.0 Enterprise. Durante a lição abordaremos os principais componentes do Delphi e suas principais propriedades. CARACTERÍSTICAS DO DELPHI * Gera um executável verdadeiro, independente de run-time. * Utiliza a linguagem Object Pascal para escrever os procedimentos do programa. * Utiliza o processo de desenvolvimento Two-Way, que permite tanto escrever o código em Object Pascal gerando os objetos visuais, como utilizar os métodos visuais gerando código em Object Pascal. * Os componentes são definidos como objetos, o que permite a herança. * Permite a criação de novos componentes na própria linguagem. * Possui acesso facilitado a banco de dados. * Possui ambiente de depuração integrado. * Possui componentes para a internet. CARACTERÍSTICAS DA PROGRAMAÇÃO DELPHI * Um programa Delphi é uma estrutura de aplicativo orientada ao desenho de formulários ou janelas. * Interface com usuário feita através de componentes. * Contém um conjunto de controles pré-desenvolvidos que dão acesso às características do sistema. * Os componentes são objetos. * Cada controle ou componente possui propriedades, métodos e pode responder a eventos. * As propriedades podem ter seus valores definidos em tempo de desenvolvimento e alterados em tempo de execução. * Os eventos são as mensagens que cada componente pode responder, tendo associado a eles um procedimento de evento. ELEMENTOS DA PROGRAMAÇÃO DELPHI Elemento Formulário (Form) Unidade (Unit) Componente Método Evento Processador de Evento Projeto (Project) É uma janela, elemento básico onde agrupamos os componentes para formar a interface com o usuário. Arquivo que contém código em object pascal. Para cada formulário existe uma unidade associada. Objetos utilizados para a construção das nossas aplicações (projeto). Representam os atributos dos componentes. Procedimento ou função própria do objeto. Representam a capacidade de resposta dos componentes aos estímulos. Procedimento responsável por responder a determinado evento. Conjunto de formulários, componentes e unidades que compõem uma aplicação.
2 36 Delphi 7 << Iniciante >> ARQUIVOS PRODUZIDOS PELO SISTEMA Ext. Tipo BMP ICO Arquivos gráficos Arquivos de imagens nos formatos BitMaP e ICOne. ~DF Backup de DFM Backup de um arquivo DFM. ~DP Backup de Projeto Backup de um arquivo DPR. DSK Configurações de Desktop Arquivo texto contendo as informações sobre a posição das janelas, os arquivos abertos no editor e outras configurações de Desktop. DSM Dados do Object Browser Armazena as informações do Object Browser. EXE Arquivo executável linkeditado Arquivo executável contendo as unidades, recursos e formulários compilados de um projeto. OPT Opções do Projeto Arquivo de teste com as configurações PAS Código-fonte de uma unidade atuais para as opções do projeto. Arquivo contendo o código fonte de uma unit em object pascal, o qual pode ser de um formulário ou arquivo fonte independente. Sendo de um formulário contém a sua definição de classe e código dos seus manipuladores de eventos. ~PA Backup de um PAS Backup de um arquivo PAS. RES Arquivo de recursos Arquivo binário associado ao projeto compilado contendo recursos compilados, por padrão contem o ícone do projeto. DCU Unit Compilada Arquivo PAS compilado. DFM Arquivo de formulário gráfico Arquivo binário contendo as propriedades e componentes de um formulário. DPR Arquivo de Projeto Escrito em Object Pascal contendo os componentes de um projeto e permite uso de código de inicialização do projeto. Estrutura de um Projeto: Projeto (*.DPR), Units (*.PAS) e Forms (*.DFM) Segue uma descrição das mais importantes opções de menu para o gerenciamento de projetos, algumas dessas opções têm um botão correspondente na barra de ferramentas.
3 Delphi 7 << Iniciante >> 37 File New Abre um submenu com novos itens que podem ser adicionados ao projeto. Open Abrir projetos, pode abrir também Units, Forms e texto no editor de código. Reopen Abre um submenu com os 5 últimos projetos usados e as 10 últimas units utilizadas. Save (Ctrl+S) Salva o arquivo aberto no editor de código. Save Project As Salva o projeto com outro nome ou em outro local. Save All (Shift+Ctrl+S) Salva as alterações realizadas em todas as units do projeto. (Uso recomendado). Use Unit (Alt+F11) Faz com que a Unit atual possa usar outra Unit do projeto. View Project Manager Mostra o gerenciador de projeto. (Ctrl+Alt+F11) Object Inspector (F11) Mostra o Object Inspector. Toggle Form/Unit Alterna entre o Form e a Unit. (F12) Units (Ctrl+F12) Mostra o código fonte de uma Unit ou do Projeto a partir de uma lista. Forms (Shift+F12) Seleciona um Form a partir de uma lista. Project Add to Project Adiciona uma Unit em disco ao projeto. (Shift+F12) Remove from Project Remove uma Unit do projeto. View Source Mostra o código do projeto. Compile (Ctrl+F9) Options (Shift+Ctrl+F11) Run Run (F9) Program Reset (Ctrl+F2) PROGRAMAÇÃO EM WINDOWS: JANELAS E EVENTOS Compila o projeto. Opções do projeto, como ícone do executável, nome da aplicação e opções de compilação. Compila e executa o projeto. Pára a execução do programa. Existem muitas diferenças entre a programação em DOS e a programação em Windows. Vejamos a principal: Quando programamos em DOS, nosso programa é responsável pelo fluxo de processamento. Temos que definir claramente não só que instruções, mas também em que ordem devem ser executadas. Em Windows não é bem assim. Nosso programa não controla o fluxo de processamento, ele responde e trata eventos que ocorrem no sistema. Existem muitos eventos que podem ocorrer, sendo que os principais são aqueles gerados pelo usuário através do mouse e do teclado. A coisa acontece mais ou menos assim: O usuário clica o mouse e o Windows verifica que aplicação estava debaixo do mouse no momento em que foi clicado. Em seguida ele manda uma mensagem para a aplicação informando que ocorreu um clique e as coordenadas do cursor do mouse na tela no momento do clique. A aplicação então responde à mensagem executando uma função de acordo com a posição do mouse na tela. É claro que o Delphi toma conta do serviço mais pesado e facilita muito as coisas para o programador. Detalhes como as coordenadas da tela em que ocorreu o clique, embora estejam disponíveis, dificilmente são necessários nos programas. PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Embora não seja objetivo desta lição ensinar POO, uma breve introdução é necessária, já que o Delphi é essencialmente orientado a objeto. De maneira prática, podemos pensar no objeto sendo uma estrutura que agrupa dados e funções para manipular estes dados. Como as funções são sempre íntimas dos dados, o sistema todo funciona de maneira mais segura e confiável. Além disso, a POO utiliza conceitos como encapsulamento e herança que facilitam muito a programação e a manutenção dos programas. Neste ponto é oportuno citar que os dados de um objeto costumam ser chamados de variáveis de instância e as funções de métodos. As variáveis de instância definem as propriedades (às vezes chamadas de atributos) do objeto e os métodos definem seu comportamento. Encapsulamento Como as variáveis e métodos estão na mesma estrutura, pode-se pensar em variáveis e métodos privados, ou seja, dados e funções que só podem ser manipulados pelas funções que estão dentro da estrutura. Desta maneira é possível formar uma camada protetora nos dados e evitar atribuições desastradas que comprometeriam o
4 38 Delphi 7 << Iniciante >> funcionamento do programa. Os defensores mais ortodoxos da POO dizem que todos os dados de um objeto deveriam ser privados e o número de funções públicas deve ser o menor possível, mas isso nem sempre é viável ou prático. O Delphi implementa este conceito e oferece dados/funções publicas (public) e privadas (private). Outra conseqüência do encapsulamento é que os objetos podem ser caixas pretas. Não é necessário (teoricamente) conhecer detalhes de funcionamento de um objeto para usá-lo, basta enviar as mensagens apropriadas que ele responde com a ação desejada. Classes A classe representa um tipo ou categoria de objetos, o modelo a partir do qual um objeto pode ser construído. É a estrutura propriamente dita, que define os dados e métodos daquela classe de objetos. O objeto em si é uma instância da classe. Na programação estruturada podemos fazer uma analogia com os tipos e variáveis, onde a classe eqüivale ao tipo e o objeto à variável desse tipo. Herança É a capacidade que uma classe de objetos tem de herdar variáveis e métodos de outra classe. Esta capacidade permite que o código já escrito seja reutilizado de maneira muito mais eficiente e simples do que na programação estruturada. Um programa orientado a objeto costuma implementar verdadeiras árvores genealógicas de classes, com vários níveis de herança. Para programar no nível do designer (veja adiante o que significa) não é necessário um conhecimento profundo de POO. Mas é preciso conhecer pelo menos a sintaxe. Todas as aplicações para Windows precisam de pelo menos uma janela, que no Delphi é chamada de Form. Cada form (assim como todos os objetos visuais) tem um objeto associado a ele e sua representação visual, que vemos na tela. Todos os componentes que incluímos no form passam a fazer parte do objeto que define o form. Exemplo: Se colocarmos um botão no form, a classe deste form será modificada para incluir este botão. Os eventos e métodos deste form, também estão na classe. Assim, supondo que o form se chame Form1 (nome default), para, por exemplo, desativar o botão que incluímos (de nome Buttom1) faríamos: Form1.Buttom1.Enabled := false; Note como o Buttom1 faz parte da estrutura que define o form. Mas se quisermos ativar o método RePaint (Repintar) do form faríamos: Form1.Repaint; Veja que Repaint, não é uma variável, tecnicamente é uma procedure, mas fazemos referência a ela como parte da estrutura Form1. Pode parecer confuso no início, mas facilita muito a programação. O Delphi oferece dois níveis de programação distintos. Existe o nível que é chamado de designer, que se utiliza dos recursos de programação visual e aproveita componentes prontos, e o nível do component writer, que escreve os componentes para o designer utilizar nas aplicações. Podemos dizer que o component writer programa em um nível mais baixo (mais difícil) e o designer em um nível mais alto (mais fácil e compreensível). Neste curso, estamos estudando a programação no nível do designer. Quando ativamos o Delphi, a tela inicial é parecida com a figura 5.1. Na janela superior, temos a Barra de Menu Principal do Delphi, à esquerda a SpeedBar (Barra de Ferramentas Rápida), com as opções mais comuns e à direita a Paleta de Componentes. Estes componentes são a base da programação visual e é onde o designer vai buscar recursos para sua aplicação. Veja com mais detalhes na figura 5.2. Figura 5.2 Barra de Menu, SpeedBar e Paleta de Componentes.
5 Delphi 7 << Iniciante >> 39 O AMBIENTE DO DELPHI Figura Quando iniciar o Delphi pela primeira vez você verá a tela acima, que representa a IDE do Delphi. Abaixo da SpeedBar, está a janela do Object TreeView, que permite visualizar e acessar todos os componentes dentro do formulário que você está utilizando no momento. Observe na figura 5.3. Abaixo do Object Treview encontra-se o Object Inspector, que permite visualizar e modificar as propriedades e eventos de todos os componentes. É também largamente utilizado pelo designer. Veja na figura 5.4. Figura 5.3 Object TreeView Figura 5.4 Object Inspector
6 40 Delphi 7 << Iniciante >> Abaixo da Paleta de Componentes ficam a janela de código-fonte e as janelas que estão sendo construídas. As janelas que estão sendo construídas são chamadas de Forms (formulários) e cada form tem uma janela de código-fonte pertencente a ela, que são chamadas de Units. Veja as figuras 5.5 e 5.6. Figura 5.5 Form (Formulário) Figura 5.6 Unit (Código-Fonte) PALETAS DE COMPONENTES A seguir visualizaremos as paletas de componentes que estudaremos durante este curso. O Delphi 7 possui outras paletas padrões de componentes, mas não é nosso objetivo estudá-las agora. Além disso você pode encontrar milhares de componentes na Internet. Figura 5.7 Paleta Standard - Uma das paletas mais utilizadas pelo programador Figura 5.8 Paleta Additional - Componentes adicionais, também muito utilizados Figura 5.9 Paleta Win32 - Componentes que utilizam recursos visuais do Windows Figura 5.10 Paleta System - Componentes que utilizam outros recursos do Windows
7 Delphi 7 << Iniciante >> 41 Figura 5.11 Paleta Data Access - Componentes para acessar dados Figura 5.12 Paleta Data Controls - Componentes para controlar visualmente os dados dentro do formulário. Figura 5.13 Paleta BDE - Componentes para acessar dados via BDE. Figura 5.14 Paleta Dialogs - Componentes que acessam as janelas de diálogo do Windows. Figura 5.15 Paleta Win Componentes que deixam o aplicativo com o visual do Windows 3.1. Figura 5.16 Paleta Samples - Calendário, Paleta de Cores e outros. Figura 5.17 Paleta QReport - Componentes para criar relatórios visuais.
8 42 Delphi 7 << Iniciante >> PRIMEIRO CONTATO Para iniciarmos poderíamos criar a versão Delphi do famoso Alô Mundo, mas vamos partir para alguma coisa um pouco mais interessante e aproveitar para apresentar uma propriedade que pode ser útil no futuro. Como os programas em Windows são orientados a eventos é comum desativar opções de menus e botões, até que o usuário ative as opções que o sistema precisa para inicializar. Neste primeiro programa, vamos criar uma espécie de gangorra eletrônica. Mas antes de começar, vejamos o que está acontecendo no Delphi. Se a tela está parecida com a figura 5.1, então não há nenhum projeto selecionado e o Delphi tomou a liberdade de criar um novo projeto para você, chamando-o de Project1. Um projeto é a coleção de arquivos necessários para compilar o sistema. Como toda aplicação precisa de pelo menos um form (Form1), ele também foi criado. Finalmente, todo form tem uma Unit correspondente que é mostrada no Editor de Código (Unit1). Dica: Para intercalar entre o Form e a Unit use a tecla F12. Não há problema em utilizar esse projeto inicial que é oferecido pelo Delphi, mas é uma boa idéia renomear e salvar o projeto o quanto antes. Se você não escolher outro diretório, o projeto será salvo no diretório do Delphi e não é aconselhável salvar todos os seus projetos no mesmo diretório. Portanto vamos começar este programa criando um novo diretório para ele. Após isso, vamos seguir os seguintes passos: 1. Selecione a página Standard na paleta de componentes e clique no componente Button. A seguir clique no form. Um botão deve aparecer no form. Coloque mais dois botões. 2. Alinhe na horizontal os dois primeiros e coloque o terceiro logo abaixo dos dois. Se quiser um alinhamento exato, use a opção Edit/Align... do menu. Para marcar mais de um componente, deixe o Shift pressionado enquanto clica os componentes. Brinque um pouco com o tamanho dos botões e do form. 3. Clique no primeiro botão para selecioná-lo, a seguir procure no Object Inspector a propriedade Caption. Mude a string para ON. Para o segundo botão a string é OFF e para o terceiro Close. Para o segundo botão, mude a propriedade Enabled para False. 4. Neste ponto é uma boa idéia renomear e salvar o projeto. Escolha a opção File/Save Project As...Selecione o diretório criado para o projeto e use o nome Main.pas para a unit1 e Gangorra para o projeto. 5. Clique na área pontilhada do form e em seguida ache a propriedade Caption no Object Inspector. Mude a string para Gangorra. Aproveite e mude a propriedade Name para FMain. 6. Dê um clique duplo sobre o primeiro botão. A janela de código será ativada já com a função correspondente ao evento OnClick criada e posicionada sob o cursor. Digite o seguinte código: Button1.Caption := OFF ; Button1.Enabled := False; Button2.Caption := ON ; Button2.Enabled := True; 7. Selecione a janela do form e faça o mesmo com o segundo botão, mas o código fica invertido: Button2.Caption := OFF ; Button2.Enabled := False; Button1.Caption := ON ; Button1.Enabled := True; 8. Finalmente para o terceiro botão o código é simplesmente: Close; 9. Já podemos executar o programa pressionando F9. O que está acontecendo: O evento OnClick ocorre sempre que clicamos o mouse sobre um componente. O Delphi se encarrega de determinar qual é o componente que deve responder ao evento e direciona o evento para ele. Neste caso, usamos este evento para ativar/desativar botões manipulando a propriedade Enabled, que determina se o componente está ativo ou não. Quando o componente está inativo, ele não responde aos eventos. Também usamos a propriedade Caption para mudar a mensagem que aparece nos botões. Finalmente usamos o método Close do form para fechar a aplicação.
9 Delphi 7 << Iniciante >> 43 PROPRIEDADES COMUNS EVENTOS Align Determina o alinhamento do componente. Canvas Superfície de desenho, do tipo TCanvas, onde pode se desenhar a imagem do componente. Caption Legenda do componente (& indica tecla de atalho para alguns componentes). Color Cor do componente. ComponentCount O número de componentes possuídos. Components Matriz de componentes possuídos. Ctl3D Define a aparência 3D do componente. Enabled Define se o componente está ativo, se pode ser usado. Font Fonte utilizada no componente. Height Altura. HelpContext Número utilizado para chamar o Help on-line. Hint String utilizada em dicas instantâneas. Left Posição esquerda. Name Nome do componente. O Delphi nomeia automaticamente todos os componentes que são incluídos no form (inclusive o próprio form). Usa o nome da classe do componente mais um número seqüencial. O nome atribuído pelo Delphi pode ser mantido, mas é aconselhável renomear os componentes que serão referidos no programa. Por exemplo, no programa da Gangorra, Button1 e Button2 deveriam ser renomeados, já que é feita referência a eles no código fonte, já para o Button3 não há necessidade por que não há referência a ele. Quando você renomeia um componente, o Delphi atualiza automaticamente todo o código gerado pelo Delphi, o que inclui o cabeçalho da Unit, os eventos do componente e as propriedades de outros componentes que fazem referência ao componente renomeado, mas não atualiza o código gerado por você. Exemplo: se renomearmos agora o Button1, o Delphi atualizará o cabeçalho da unit, o nome dos eventos de Button1, mas você terá que atualizar as referências que você fez ao Button1 com o novo nome. Aliás, esta é uma regra geral no Delphi: ele nunca modifica automaticamente o código gerado pelo programador, mesmo que esteja em comentário. PopupMenu Menu de contexto do componente. ShowHint Define se o Hint será mostrado. TabOrder A ordem de tabulação do componente, usada quando o usuário tecla TAB. TabStop Indica se o componente será selecionado quando o usuário teclar TAB. Tag não utilizada pelo Delphi, que pode ser usada como propriedade personalizada. Top Posição superior. Visible Define se o componente está visível. Width Largura. Os Eventos acontecem em resposta a uma ação do usuário ou do próprio sistema, ao programar um método de evento, devemos levar em consideração que este só será executado quando o evento acontecer. Uma das tarefas mais importantes na programação baseada em eventos é determinar quais eventos serão usados e qual a ordem desses eventos, por exemplo, quando o usuário clicar em um botão, qual evento acontecerá primeiro, OnEnter, OnMouseDown ou OnClick? Os eventos podem ser compartilhados entre componentes, dessa Forma, você pode ter um botão na barra de ferramentas que faz a mesma coisa que uma opção de menu. Para isso, basta escolher o evento na lista em vez de clicar duas vezes no Object Inspector. Podemos também mudar os métodos de evento em código, pois os eventos também são propriedades e podem ser usados como tal. Você pode atribuir um evento de outro componente ou diretamente o nome do método,
10 44 Delphi 7 << Iniciante >> como mostrado abaixo. Button1.OnClick := Edit1.OnExit; Button2.OnClick := Edit2Click; EVENTOS COMUNS Evento OnChange OnClick OnDblClick OnEnter OnExit OnKeyDown OnKeyPress OnKeyUp O conteúdo do componente é alterado. O componente é acionado. Duplo-clique no componente. O componente recebe o foco. O componente perde o foco. Tecla pressionada. Uma tecla é pressionada e solta. Tecla é solta. MÉTODOS Os métodos realizam ações definidas pelo componente, veja os exemplos abaixo e atente para os parâmetros passados. Note que podemos chamar os métodos de evento como qualquer outro método e que os métodos de evento pertencem ao Form, não aos componentes. Edit1.Clear; Form2.Show; Close; ScaleBy(110, 100); Button1.OnClick(Sender); Button1Click(Self); Form2.Button1Click(Sender); MÉTODOS COMUNS Método Create Free Show Hide SetFocus Focused BringToFront SendToBack ScrollBy ScaleBy SetBounds Cria um novo Objeto de uma Classe. Destrói um Objeto e libera a memória ocupada por ele. Torna o componente visível. Torna o componente invisível. Coloca o foco no componente. Determina se o componente tem o foco. Coloca o componente na frente dos outros. Coloca o componente atrás dos outros. Move o componente. Gradua o componente em determina escala. Muda a posição e o tamanho do componente. JANELAS Todo aplicativo Windows é composto por janelas, que são o elemento básico no desenvolvimento Delphi, sobre o qual um aplicativo é construído. O tipo TForm é usado no Delphi como classe base para todas as janelas, veja abaixo algumas propriedades, eventos e métodos dessa classe.
11 Delphi 7 << Iniciante >> 45 Active ActiveControl AutoScroll BorderIcons BorderStyle FormStyle Icon Menu Position WindowMenu WindowState Evento OnCreate OnDestroy OnShow OnCloseQuery OnClose OnActivate OnDeactivate OnResize Método Cascade Tile ArrangeIcons ShowModal Show Close Previous Next Indica se o Form está ativo. Determina o controle que receberá o foco por default. Adiciona barras de rolagem automaticamente, quando necessário. Define quais ícones de controle serão visíveis, quais botões vão aparecer na barra de título. Estilo da borda do Form. Tipo de Form, normal, MDI pai, MDI filho ou sempre visível. Ícone do Form. Indica qual o menu do Form. Permite controlar a posição e tamanho do Form na exibição. Automatiza o item de menu Window (MDI). Estado do Form, maximizada, minimizada ou normal. Quando o Form é instanciado. Quando o Form é liberado da memória. Exatamente antes de mostrar o Form. É chamada para validar se o Form pode ser fechado. Quando o Form é fechado. Quando o Form recebe o foco. Quando o Form perde o foco. Quando o Form muda de tamanho. Organiza as Forms filhos em cascata (MDI). Organiza as Forms filhos lado a lado (MDI). Organiza os ícones dos Forms Filhos minimizados (MDI). Ativa o Form modal, que o usuário tem que fechar para poder continuar a usar a aplicação. Mostra o Form. Fecha o Form. Ativa o Form anterior (MDI). Ativa a próximo Form (MDI). COMPONENTES PADRÕES TButton Componente botão padrão do Windows, utilizado para executar ações. Cancel Default ModalResult Método Click TBitBtn Botão especializado, com Bitmap. Dispara o evento OnClick do botão quando a tecla ESC é pressionada em qualquer controle. Dispara o evento OnClick do botão quando a tecla ENTER é pressionada em qualquer controle. Associa o botão a opção de fechamento de um Form modal.. Ativa o evento OnClick do botão. Glyph LayOut Margin Spacing Kind Bitmap exibido pelo botão. Posição do Bitmap no Botão. Indica o espaço entre a borda do botão e o Bitmap. Indica o espaço entre o Bitmap e o texto do botão. Seleciona um tipo padrão para o botão, mudando várias propriedades, como Glyph e ModalResult.
12 46 Delphi 7 << Iniciante >> TSpeedButton Botão com Bitmap, normalmente utilizado em barras de ferramentas. Down GroupIndex AllowAllUp Flat Estado do botão (Pressionado ou não). Indica quais botões pertencerão ao mesmo grupo. Permite que todos os botões de um grupo possam ficar não pressionados. Define se a borda do botão deve aparecer apenas quando ele for apontado. TLabel Utilizado para exibir rótulos Alignment AutoSize WordWrap Transparent FocusControl ShowAccelChar TEdit Utilizado para entrada de texto em uma única linha. Text AutoSelect MaxLength CharCase PasswordChar ReadOnly Método Clear ClearSelection Alinhamento do texto no componente. Define se o tamanho do componente será automaticamente ajustado ao tamanho do Caption. Retorno automático de linha. Define se o componente será transparente. Componente que receberá o foco quando a tecla de atalho do Caption (&) for pressionada. Indica se o caractere & será usado para definir tecla de atalho. Texto do componente. Indica se o texto será ou não selecionado quando o componente receber o foco. Número máximo de caracteres permitidos. Define se as letras aparecerão em maiúsculo, minúsculo ou normal. Caractere utilizado para esconder o texto digitado (Senhas). Define se será permitido alterar o texto. Limpa o conteúdo do componente. Limpa o texto selecionado no componente. TMaskEdit Permite entrada de dados texto em uma linha, utilizando uma máscara de edição. Possui todas as propriedades do componente TEdit. EditMask Máscara de edição. Máscaras Uma máscara é composta por três partes, a primeira parte é a máscara propriamente dita, a segunda parte indica se os caracteres literais serão salvos e a terceira parte indica qual o caractere utilizado para representar os espaços a serem digitados no texto. Estes são os caracteres especiais que podem compor a máscara de edição:
13 Delphi 7 << Iniciante >> 47 Caractere! Espaços em branco não serão considerados no texto > Todos os caracteres seguintes serão maiúsculos até que apareça o caractere < < Todos os caracteres seguintes serão minúsculos até que apareça o caractere > \ Indica um caractere literal l Somente caractere alfabético L Obrigatoriamente um caractere alfabético a Somente caractere alfanumérico A Obrigatoriamente caractere alfanumérico 9 Somente caractere numérico 0 Obrigatoriamente caractere numérico c Permite um caractere C Obrigatoriamente um caractere # Permite um caractere numérico ou sinal de mais ou de menos, mas não os requer. : Separador de horas, minutos e segundos / Separador de dias, meses e anos TMemo Permite entrada de dados texto em múltiplas linhas. Contém propriedades e métodos do TEdit. Lines WantReturns WantTabs ScrollBar do tipo TStrings que armazena as linhas de texto do componente. Define se a tecla ENTER será tratada como quebra de linha. Define se a tecla TAB será tratada como espaço de tabulação. Define as barras de rolagem. TStrings Muitos componentes, como o TMemo, possuem propriedades do Tipo TStrings, essa classe permite armazenar e manipular uma lista de Strings. Toda propriedade do tipo TStrings permite acesso indexado aos itens da lista. Count Text Método Add Insert Move Delete Clear IndexOf LoadFromFile SaveToFile Número de strings. Conteúdo do memo na Forma de uma única string. Adiciona uma nova string no final da lista. Insere uma nova string numa posição especificada. Move uma string de um lugar para outro. Apaga uma string. Apaga toda a lista. Retorna o índice do item e - 1 caso não encontre. Carrega texto de um arquivo. Salva texto para um arquivo. TCheckBox AllowGrayed Determina se o checkbox terá três possibilidades de estado. Checked Determina se o checkbox está marcado. State Estado atual do checkbox. TRadioButton Usado em grupo, pode ser utilizado para obter informações lógicas mutuamente exclusivas, mas é recomendado usar o RadioGroup em vez de RadioButtons.
14 48 Delphi 7 << Iniciante >> TRadioGroup Componente que agrupa e controla RadioButtons automaticamente. Columns Número de colunas de RadioButtons. Items Lista de strings com os itens do RadioGroup, cada item da lista representa um RadioButton. ItemIndex Item selecionado, iniciando em 0. TPanel Componente Container utilizado para agrupar componentes em um panel. BevelInner BevelOuter BevelWidth BorderStyle BorderWidth Estilo da moldura interna do panel. Estilo da moldura externa do panel. Largura das molduras. Estilo da Borda. Largura da borda, distância entre as molduras interna e externa. TScrollBox Container com barras de rolagem automáticas. TGroupBox Componente container com um título e borda 3D. TBevel Moldura ou linha com aparência 3D. Shape Style Tipo de moldura a ser desenhada. Define alto ou baixo relevo para a linha. TListBox Utilizado para exibir opções em uma lista. TComboBox Caixa combinada com lista suspensa. Columns Número de colunas de texto da lista. MultiSelect Define se será permitida a seleção de múltiplos itens. ExtendedSelect Define se a seleção poderá ser estendida pelo uso das teclas Shift e Ctrl. IntegralHeight Define se os itens poderão aparecer parcialmente ou somente por completo. Items Lista de strings com os itens da lista. ItemIndex Índice do item selecionado, começando em 0. Selected De acordo com o índice indica se um item em particular está selecionado. SelCount Indica quantos itens estão selecionado. Sorted Define se os itens aparecerão ordenados. Items DropDownCount Style Lista de strings com os itens da lista. Número de itens visíveis da lista suspensa. Estilo do ComboBox, os principais estilos são csdropdown, csdropdownlist, cssimple.
15 Delphi 7 << Iniciante >> 49 TImage Componente usado para exibir figuras. Center Determina de a figura será centralizada no componente. Picture Figura a exibida, pode ser BMP, ICO, WMF ou EMF. Stretch Define se o tamanho da figura deve ser ajustado ao do componente TPicture Classe usada para guardar ícones, Bitmaps, meta arquivos do Windows ou gráficos definidos pelo usuário. Método LoadFromFile SaveToFile Carrega figura de um arquivo. Salva figura para um arquivo. TPageControl Usado para criar controles com múltiplas páginas, que podem ser manipuladas, em tempo de projeto, através do menu de contexto. Cada página criada é um objeto do tipo TTabSheet. ActivePage MultiLine TabHeigth TabWidth Evento OnChange OnChanging Método FindNextPage SelectNextPage Página ativa. Define múltiplas linhas de guias de páginas. Altura das guias. Largura das guias Após uma mudança de página. Permite a validação de uma mudança de página. Retorna a próxima página. Seleciona a próxima página. TTabSheet Página de um PageControl. PageIndex TabVisible Ordem da página. Define se a aba da página é visível. TShape Gráfico de uma Forma geométrica. Brush Pen Shape Preenchimento da figura, objeto do tipo TBrush. Tipo da linha, objeto do tipo TPen. Forma geométrica. TTimer Permite a execução de um evento a cada intervalo de tempo. Interval Evento OnTimer Tempo em milisegundos quando o componente irá disparar o evento OnTimer. Chamado a cada ciclo de tempo determinado em Interval.
16 50 Delphi 7 << Iniciante >> TStatusBar Utilizado para criar barras de status para exibir informações. SimplePanel SimpleText SizeGrip Panels TStatusPanels Lista de panels de um StatusBar. Count Items Método Add Indica se haverá apenas um panel. Texto exibido caso SimplePanel seja True. Define se a alça de redimensionamento padrão deve ser mostrada. do tipo TStatusPanels, com os painéis do StatusBar. Número de panels. Lista de panels, cada panel é um objeto do tipo TStatusPanel. Adiciona um novo panel à lista. Caixas de Diálogo Grupo de caixas de diálogo comuns do Windows. Método Execute Mostra a caixa de diálogo e retorna True caso o usuário clique em Ok. TOpenDialog / TSaveDialog Caixas de diálogo para abrir e salvar arquivos. FileName DefaultExt Filter FilterIndex InitialDir Title Options Nome do arquivo. Extensão padrão para os arquivos. Filtro, com os tipos de arquivos que serão abertos ou salvos. Índice do filtro default. Pasta inicial. Título da janela. Define características gerais do diálogo. TFontDialog Caixa de diálogo de escolha de fonte. Device MinFontSize MaxFontSize Options Evento OnApply Define se deve utilizar fontes para tela, impressora ou ambos. Tamanho mínimo da fonte. Tamanho máximo da fonte. Define características das fontes Ocorre após o usuário pressionar o botão Aplicar, antes da janela fechar. MENUS No Delphi os menus serão desenhados no Menu Designer, que pode ser acessado no menu de contexto de qualquer componente de menu. TMainMenu Menu principal de um Form. Items Itens de menu, essa propriedade guarda todas as alterações feitas no Menu Designer.
17 Delphi 7 << Iniciante >> 51 TPopUpMenu Menu de contexto de um componente. Cada componente tem uma propriedade PopUpMenu, que indica seu menu de contexto. TMenuItem Item de menu. Checked GroupIndex RadioGroup ShortCut Indica se o item está marcado ou não. Índice do grupo do item, semelhante ao SpeedButton. Indica se o item pode ser mutuamente exclusivo com outros itens do mesmo grupo. Tecla de atalho do item. Para concluir essa lição vamos criar mais um pequeno programa. Vamos criar uma pequena calculadora, como mostra a figura Para isso selecione a opção File/New/ Application. Clique em cima do novo formulário e altere as seguintes propriedades: Valor Caption Calculadora Name FmCalculadora Height 200 Width 150 BorderStyle bsdialog Agora insira 3 Edits. Altere as seguintes propriedades: Componente Valor Edit1 Left 11 Top 8 Edit2 Left 11 Top 40 Edit3 Left 11 Top 104 Agora insira 5 Buttons e altere as seguintes propriedades: Componente Valor Button1 Left 11 Top 72 Width 25 Font Arial 14 Negrito Name btnsoma Caption + Button2 Left 43 Top 72 Width 25 Font Arial 14 Negrito Name btnsubtracao Caption - Button3 Left 75 Top 72 Width 25 Font Arial 14 Negrito Name btnmultiplica Caption x (xis minúsculo) Button4 Left 104 Top 72 Width 25 Font Arial 14 Negrito Name btndivide Caption / Button5 Left 11 Top 136 Width 121 Font Arial 14 Negrito Name btnlimpa Caption Limpar Height 33 Fig Proj. Calculadora
18 52 Delphi 7 << Iniciante >> Além disso, selecione os 3 Edits e apague o conteúdo da propriedade Text. Clique em File/Save All. Salve a Unit como UnCalc.pas e o projeto como Calculadora.dpr. Passemos para a parte mais interessante: O código. Para que essa simples calculadora funcione precisamos utilizar algum código relacionado com o evento OnClick nos botões que inserimos. Vamos pôr em prática o que aprendemos na lição sobre Object Pascal. Dê um duplo clique no btnsoma para ativar o evento OnClick do mesmo. Insira o código conforme mostra a Figura Var Valor1, Valor2:Double; Begin Valor1 := StrToFloat(Edit1.Text); Valor1 := StrToFloat(Edit2.Text); Edit3.Text := FloatToStr(Valor1 + Valor2); End; Fig Código do botão btnsoma Dê um duplo clique no btnsubtracao para ativar o evento OnClick do mesmo. Insira o código conforme mostra a Figura Var Valor1, Valor2:Double; Begin Valor1 := StrToFloat(Edit1.Text); Valor1 := StrToFloat(Edit2.Text); Edit3.Text := FloatToStr(Valor1 - Valor2); End; Fig Código do botão btnsubtração Dê um duplo clique no btnmultiplica para ativar o evento OnClick do mesmo. Insira o código conforme mostra a Figura Var Valor1, Valor2:Double; Begin Valor1 := StrToFloat(Edit1.Text); Valor1 := StrToFloat(Edit2.Text); Edit3.Text := FloatToStr(Valor1 * Valor2); End; Fig Código do botão btnmultiplica
19 Delphi 7 << Iniciante >> 53 Dê um duplo clique no btndivide para ativar o evento OnClick do mesmo. Insira o código conforme mostra a Figura Var Valor1, Valor2:Double; Begin Valor1 := StrToFloat(Edit1.Text); Valor1 := StrToFloat(Edit2.Text); Edit3.Text := FloatToStr(Valor1 / Valor2); End; Fig Código do botão btndivide Dê um duplo clique no btnlimpa para ativar o evento OnClick do mesmo. Insira o código conforme mostra a Figura Edit1.Clear; Edit2.Clear; Edit3.Clear; Fig Código do botão btnlimpa É evidente que esse programa é bem simples e contém diversos furos. Por exemplo, insira uma letra no Edit1 e um número no Edit2, após isso clique no botão de soma. Aparecerá um erro, afinal você não pode transformar uma letra em um número. Tente também inserir 10 no Edit1 e 0 no Edit2. Clique no botão de divisão. Outro erro, pois não se pode dividir por zero. Você teria que prever todas essas possibilidades e criar um código compatível para a solução de cada problema. No entanto, o exemplo proposto alcançou o objetivo. EXERCÍCIOS 01) Crie um Form que mostre a hora atualizada a cada segundo. 02) Crie um programa igual à calculadora padrão do Windows.
20 86 Delphi 7 << Iniciante >> Veja o Conteúdo Exclusivo do Curso Delphi Avançado 1 CD Minutos * Compreender o modelo Entidade-Relacionamento e Lógico-Relacional; * Saber definir e identificar: Entidades, Relacionamentos, Atributos e tudo mais que tenha a ver com o Modelo Entidade-Relacionamento; * Conhecer os tipos de relacionamentos: Condicionais e Incondicionais; * Saber os graus de relacionamento: Um-Para-Um, Um-Para-Muitos, Muitos-Para-Muitos; * Compreender uma realidade e a partir dessa compreensão criar um modelo de dados e logo depois o banco de dados em si; * Dominar o conceito de chaves, índices e integridade referencial; * Saber normalizar um modelo através das Formas Normais (1FN a 5FN); * Usar programas para a criação do modelo de dados; * Utilização do DBDesigner. 1 CD Minutos * Definição e História da Linguagem SQL; * Entendendo as partes da Linguagem: DDL, DML, DCL e Transactions Control; * Instrução Select (alias, order by, like, asc, desc, group by, having, where, not, in, exists, sum, max, min, avg, count, between, distinct, etc); * Instrução Insert Into; * Instrução Update; * Instrução Delete; * Consultas Encadeadas (SubQuerys); * Junções (inner join, left join, right join e full outer join); * Criação, alteração e deleção de tabelas e índices; * Controle de Transações; * Diversos exemplos feitos no programa SQL Explorer; * Criação de um sistema no Delphi implementando os comandos SQL juntamente com o componente Query. Cadastro de Clientes, Cadastro de Usuarios e Formulário Mestre Detalhe com duas tabelas (CVenda e DVenda). 2 CDs Minutos * Introdução: Definição, História, Características, Licenças e Versões; * Instalação da versão 3.23 no Windows 98, tipos de arquivos, estrutura de diretórios do MySQL, uso do Console (prompt), etc; * Utilização da ferramenta gráfica MySQLFront 2.3, criação de bancos de dados, tabelas, explicação dos tipos de campos, importação de dados do paradox, atributos especiais de campos do MySQL, uso do Manual de Referência, uso das funções do MySQL; * Instalação da Versão 4 do MySQL no Windows XP, uso do MySQLFront 3.2, importação de arquivos do Excel, Exportação de dados para o formato HTML, etc; * Instalação do MySQL no Linux Slacware, uso do console no Linux, uso da ferramenta gráfica PHPMyAdmin; * Instalação e configuração da versão 5 no Windows XP; * Uso da ferramenta gráfica DBManager, tipos de tabelas, foreign keys, constraints, views, backup e restauração de dados, controle de transações; * Uso da ferramenta gráfica MySQL Administrator, controle de usuários, backup e restauração de dados, replicação; * Uso da ferramenta gráfica MySQL Query Browser; * Uso da ferramenta gráfica MySQL Migration Toollkit, migração de um banco de dados do MS-Access; * DBDesigner - Sincronização de dados e engenharia reversa; * Apresentação dos sites oficias do MySQL - Internacional e Nacional; * Stored Procedures e Triggers.