segunda-feira, 12 de dezembro de 2011

Propriedades Principais

Name

Comum a todos os elementos da paleta, essa propriedade é a responsável por nomear o componente facilitando  a sua localização na lista de componentes do formulário. Ao modificar o nome de um componente, automaticamente o Delphi atualiza o código-fonte, trocando o nome antigo pelo novo. Ele só não atualiza o código gerado pelo usuário, ou seja, aquele código digitado manualmente por você, apenas o que o próprio Delphi gera. Sendo assim, antes de escrever qualquer código para o componente, dê a ele um nome para que você não perca tempo no desenvolvimento.
Caption

Propriedade responsável por rotular um componente. O conteúdo de Caption será mostrado quando o componente for desenhado no formulário. Um exemplo é o texto que aparece em um botão ou em um componente label.
Left e Top (Esquerda e Topo)

Responsáveis por armazenarem a posição do componente em relação ao formulário que ele está contido. Ao mover o componente, automaticamente essas propriedades são alteradas pelo Delphi.
Height e Width (Largura e Altura)

Cada vez que o tamanho do componente é codificado essas propriedades também são alteradas, conforme acontece com Left e Top.
Font

Propriedade que permite fazer a formatação da fonte do texto, conforme é feito em editores de texto.
Color

Responsável por dar cor ao componente. Existem cores padrões que devem ser utilizadas, mas é possível definir qualquer outra cor através de seus componentes RGB.
Tab Order

Ordem dos componentes no formulário. Usado para estabelecer a seqüência em que os componentes receberão o foco quando o usuário utilizar a tecla TAB para alternar entre os campos ou botões do formulário.
Hint

Propriedade responsável por mostrar ao usuário um texto alternativo quando o mouse é colocado sobre o componente.
ShowHint

Propriedade que ativa a propriedade Hint. Se ShowHint estiver desligado, não mostra o texto de Hint.

Conceitos da Programação Orientada a Objetos (POO)

As linguagens orientadas a objetos são baseadas em 3 conceitos fundamentais: encapsulamento, herança e polimorfismo. Embora se possa escrever código em Delphi sem entender as características principais da POO, para dominar perfeitamente este ambiente eles são imprescindíveis. 

Classes e Objetos

Classe: é um tipo de dado definido pelo usuário que possui um estado e algumas operações. Sendo assim é possível descrever as características genéricas e também o comportamento de objetos que sejam semelhantes.

Objeto: é uma instância de uma classe ou uma variável do tipo de dado definido pela classe.
No Delphi, parte da POO é implementada pelo ambiente de desenvolvimento visual, pois para cada formulário criado, é definida automaticamente uma nova classe. Além disso, todo componente incluído visualmente no formulário é um objeto de um tipo de classe.
Por exemplo, considere a tela do Windows como um conjunto de objetos. O formulário do ambiente Delphi é um conjunto de objetos (componentes). Dessa forma, a barra de status, a barra de ferramentas, os botões e as janelas são objetos.

Propriedades, Eventos e Métodos

Em nível de programação, os objetos existentes no ambiente Delphi:

Propriedades: Conjuntos de características do objeto tanto em nível de aparência quanto em estado. Por exemplo, a janela tem como propriedade estar maximizada ou minimizada.

Eventos: São os comportamentos ou ações que o objeto pode vir a sofrer. Por exemplo, um formulário pode ser criado, mostrado, clicado, fechado, arrastado e etc.

Métodos: Definem as habilidades dos objetos. A ação só ocorre quando o método é invocado através do objeto, podendo ser um procedimento ou uma função. Os métodos em uma classe são apenas definições. 

Herança, Polimorfismo e Encapsulamento

Herança: é a característica de herdar ou aproveitar, por exemplo, os métodos de uma classe em outra classe. A utilização de herança faz com que se evite a repetição de código de programa, ou seja, pode-se definir um novo tipo de classe a partir de uma classe já existente.

Polimorfismo: é a capacidade que um objeto tem de assumir outras formas. Desta maneira, é possível fazer que uma mesma variável faça referência a vários objetos de classes diferentes.

Encapsulamento: é o recurso que separa a forma de fazer da interface. Por exemplo, em um carro, certo fabricante decide alterar como os faróis são ligados, alterando algumas características internas a fim de obter um menor consumo de energia. Entretanto é conveniente ainda manter o botão no painel do veículo para ligar estes faróis. Desta forma as modificações feitas pelo fabricante não irão prejudicar a interface entre o motorista (usuário) e os faróis. Este exemplo ilustra a idéia de encapsulamento, você deixa visível apenas os aspectos externos do objeto, possibilitando alterar os detalhes da implementação do objeto, a fim de uma melhor performance, a qualquer momento do projeto não interferindo em nada nos programas que utilizam este mesmo objeto.

terça-feira, 6 de dezembro de 2011

Iniciando a programar em Delphi

Um programa escrito no ambiente Delphi, além de possuir instruções ou comandos, possui também um conjunto de componentes inserido em um formulário, que são representados dentro da janela de código pelo conjunto de palavras-chave (vocabulário) que tem por finalidade comandar, em um computador, o seu funcionamento e a forma como os dados armazenados devem ser tratados.
Os processos de entrada e saída podem ocorrer, dentro de um computador, de diversas formas. Por exemplo, uma entrada pode ser feita por teclado, modem, leitores óticos, disco, portas USB, entre outros. Uma saída pode ser feita em vídeo, impressora, disco, portas USB, entre outras formas.
No ambiente de programação Delphi, utiliza-se para efetuar entradas e saídas alguns de seus componentes. Estes componentes podem ser encontrados na Paleta de Componentes em alguma das guias Standard, Additional, Win32, etc...
Para ser criado um programa no Delphi parte-se do princípio que todo programa será um projetoCada projeto (.DPR) poderá ter uma ou mais unidades de código(.PAS).  O arquivo executável (.EXE) terá o mesmo nome dado ao projeto, ou seja, se o nome do projeto for “prog1.dpr” o executável gerado será “prog1.exe”.

O que fazer para começar?

1º)  Criar uma pasta para armazenar os arquivos referentes ao projeto e às unidades de código (formulários), pois no mínimo teremos 8 arquivos para cada projeto.

2º) Após entrar no Delphi será gerado uma aplicação nova com o nome default  “project1.dpr”  para o projeto e “unit1. pas” para a unidade de código do formulário aberto (form1).

3º) Assim que for definido o tipo de programa a ser criado, deve-se usar o menu File -> Save All,  e salvar o Projeto e a Unit com os nomes adequados na pasta escolhida.

4º) Se for necessário começar um novo projeto, a melhor opção a ser usada é o menu File -> New Application,   que fechará todos os arquivos de algum projeto anterior e começará um novo.

Arquivos gerados no desenvolvimento

Extensão do Arquivo
Definição
Função
.DPR
Arquivo do Projeto
Código fonte em Pascal do arquivo principal do projeto. Lista todos os formulários e units no projeto, e contém código de inicialização da aplicação. Criado quando o projeto é salvo.
.PAS
Código fonte da Unit (Object Pascal)
Um arquivo .PAS é gerado por cada formulário que o projeto contém. Seu projeto pode conter um ou mais arquivos .PAS associados com algum formulário. Contem todas as declarações e procedimentos incluindo eventos de um formulário.
.DFM
Arquivo gráfico do formulário
Arquivo binário que contém as propriedades do  desenho de um formulário contido em um projeto. Um .DFM é gerado em companhia de um  arquivo .PAS para cada formulário do projeto.
.OPT
Arquivo de opções do projeto
Arquivo texto que contém a situação corrente das opções do projeto. Gerado com o primeiro salvamento e atualizado em subseqüentes alterações feitas para as opções do projeto.
.RES
Arquivo de Recursos do Compilador
Arquivo binário que contém o ícone, mensagens da aplicação e outros recursos usados pelo projeto.
.~DP
Arquivo de Backup do Projeto
Gerado quando o projeto é salvo pela segunda vez.
.~PA
Arquivo de Backup da Unit
Se um .PAS é alterado, este arquivo é gerado.
.~DF
Backup do Arquivo gráfico do formulário
Se você abrir um .DFM  no editor de código e fizer alguma alteração, este arquivo é gerando quando você salva o arquivo.
.DSK
Situação da Área de Trabalho
Este arquivo armazena informações sobre a situação da área de trabalho especifica para o projeto em opções de ambiente (Options Environment).
.EXE
Arquivo compilado executável
Este é o arquivo executável distribuivel de sua aplicação.
.DCU
Código objeto da Unit
Contém o código compilado de cada Unit, permitindo que a cada nova compilação do projeto, as Units que não sofreram alteração não precisem ser recompiladas.

O Código abaixo é gerado automaticamente a cada nova aplicação e é armazenado, por default, no arquivo unit1.pas:

unit Unit1;   // Abertura de uma nova unidade de código
Interface    //  Parâmetros dos objetos
uses
  Windows , Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type
    TForm1 = class(TForm)    // A declaração do objeto inicia aqui
     private
     { Private declarations }
     public
     { Public declarations }
 end;     // Aqui é o final da declaração
var
  Form1: TForm1;  // Atribui a variável Form1 as características do objeto TForm1
implementation             // Início da parte a ser implementada
{$R *.DFM}        // Diretiva de compilação – agrega a tela com a Unit
end.                      // Final da parte implementada
 
A estrutura do código é composta por diversas seções:

Seção unit
Declara o nome da unit.

Seção  interface
Nesta seção estão as declarações de constantes, tipos de variáveis, funções e procedures gerais da Unit/Form. As declarações desta seção são visíveis por qualquer Unit. Esta seção é formada pelo seguinte código:

    Seção uses
                Contém as units externas acessadas por este arquivo. 

    Seção type
                Declara os tipos definidos  pelo usuário.
Subseções:          Private: declarações privativas da Unit.
Public: declarações acessíveis por outras Units.

    Seção var
                Declara as variáveis privadas utilizadas.

Seção implementation
                Contém os corpos das funções e procedures declaradas nas seções Interface e Type. Nesta seção também estão definidos todos os procedimentos dos componentes que estão incluídos no Form. As declarações desta seção são visíveis apenas por ela mesma. Esta seção é formada pelo seguinte código:
{$R*.DFM} - Diretiva compiladora que inclui toda a interface, propriedades da forma e     componentes do arquivo *.DFM
{$S+} – (opcional) Diretiva compiladora que ativa verificação de pilha.

Seção uses adicional (opcional)
                Serve para declarar Units que ativam esta.

inicialization (opcional)
                Nesta seção, pode ser definido um código para proceder as tarefas de inicialização da Unit quando o programa começa. Ela consiste na palavra reservada inicialization seguida por uma ou mais declarações para serem executadas em ordem.

Outras Considerações sobre o Object Pascal:
  •         Toda instrução termina com “;” (ponto e vírgula).
  •          Os comentários podem ser de feitos usando // (para a linha) ou {} (para marcar um intervalo de texto).
  •          Não há diferença entre letras maiúsculas de minúsculas como na linguagem C, portanto,  end é o mesmo que END, ou End. 

TECLAS IMPORTANTES

Tecla
Função
F12
Alterna entre o editor de código e o form designer.
F11
Alterna entre editor de código, form designerobject inspector.
F10
Torna o foco para a janela principal.
F9
(RUN) Permite compilar e executar o projeto para testes. Este processo gera automaticamente o arquivo .EXE no diretório onde foi gravado o arquivo de projeto (.DPR).
CTRL + F9
Permite compilar o projeto sem executar. Ideal para conferência de código.
SHIFT + F12
Permite alternar entre os formulários do projeto.
Equivalente ao ícone View Form na SpeedBar.
CTRL + F2
Permite ‘destravar’ o Delphi em caso de testes onde ocorram exceções, como veremos mais adiante. (RESET)
 

segunda-feira, 5 de dezembro de 2011

Estruturas de Controle para Repetição: While, Repeat e For.

Estruturas de Repetição:  for...to   e  for...downto

Sintaxe: for...to (contador crescente):

for variavel_contadora := valor_inicial to valor_final do
       begin
              {bloco de comandos}
       end;

Sintaxe: for...downto (contador decrescente):

for variavel_contadora := valor_inicial downto valor_final do
       begin
              {bloco de comandos}
       end;

Nota 1: A variável_contadora deve ser inteira.
Nota 2: A variável_contadora é incrementada de uma unidade no for...to, a cada iteração do laço, e drecrementada de uma unidade no for...downto. 

Estrutura de Repetição: while...do

Sintaxe:

while (condição)  do
     begin
              {bloco de comandos}
     end;

Na estrutura while...do a repetição só ocorre enquanto a condição for verdadeira, e a condição é verificada antes da primeira execução do laço, ou seja, pode acontecer de o bloco de comandos não ser executado uma única vez.

Estrutura de Repetição: repeat...until


Sintaxe:

       repeat
              {bloco de comandos}
       until (condição);

Na estrutura repeat...until o bloco de comandos é executado uma vez, para depois ser verificada a condição que determina se haverá a repetição. Esta repetição ocorre até que a condição seja verdadeira, ou seja, enquanto for falsa.

quinta-feira, 1 de dezembro de 2011

Estruturas de Controle Condicionais: if e case.

Estrutura Condicional:   if ...then … else

Sintaxe:

If (condição) then
       begin
                {Bloco de comandos executados se a condição for verdadeira}
       end
else
       begin
               {Bloco de comandos executados se a condição for falsa}
       end;

Nota 1: O end que precede o else não é seguido de (; ).
Nota 2: O begin e o end são opcionais quando houver apenas um comando no bloco.
Nota 3: O else não precisa ser usado quando se quer testar apenas a condição verdadeira.

Estrutura Condicional:   case … of

Sintaxe:

case (expressão) of
    Constante_1:    bloco de comandos 1;
    Constante_2:    bloco de comandos 2;
    ....
    Constante_n:    bloco de comandos n;
else
    Bloco de comandos;
end;

A expressão (ou seletor) deverá ser de um tipo com o tamanho máximo de 2 bytes (Byte, char, Word ou integer).

As constantes podem ser um único valor:

      4:      { opção para o número inteiro 4}
  
ou um intervalo definido :

      3..6:        {opção para os números inteiros 3, 4, 5 e 6}
      ‘A’..’Z’:     { opção para  todos os caracteres entre ‘A’ e ‘Z’}
      1,8,9 :     {opção para os valores inteiros 1,8 ou 9}
      ‘A’..’Z’ , ‘a’..’z’ : { opção para todas as letras maiúsculas e minúsculas}

Operadores ( De atribuição, Aritméticos, Lógicos e Relacionais)

  • Operadores Aritméticos
+
Adição
-
Subtração
*
Multiplicação
/
Divisão de reais
Div
Divisão de inteiros
Mod
Resto da divisão de inteiros

As operações envolvendo apenas números inteiros resultam sempre em um número inteiro. As operações envolvendo número inteiro com número real resulta sempre em um número real.

  • Operador de Atribuição
A atribuição de valores é feita usando os caracteres  dois pontos e igual (:=).

Exemplos:

A:=5;
D:=  (a-b)/3;
Nome:=’Maria’;

A esquerda deve estar apenas o nome da variável, enquanto que na direita podem estar constantes, variáveis ou expressões que correspondam ao tipo de dados armazenáveis na variável.


  • Operadores Lógicos
AND
E Lógico
OR
OU Lógico
NOT
NÃO Lógico

Os operadores lógicos ou operadores booleanos são utilizados quando é necessário trabalhar com o relacionamento de duas ou mais condições ao mesmo tempo, dentro de um if ou dentro de uma estrutura de teste de um loop.

  • Operadores Relacionais
Maior que
Menor que
>=
Maior ou igual a
<=
Menor ou igual a
=
Igual a
<> 
Diferente de

  • Comentários

//  Linha de Comentário
{} Texto de Comentário - várias linhas


O Uso de Variáveis no Delphi

Uma variável se caracteriza por ser uma região de memória previamente identificada, a qual tem por finalidade armazenar informações de um programa temporariamente, sendo que cada variável armazena apenas um valor por vez. 

Nomes de Variáveis

- Podem ter 1 ou mais caracteres;
- O primeiro caractere do nome de uma variável tem que ser uma letra;
- Não podem conter espaços em branco;
- Não podem ser palavras reservadas a instruções (IF, while..etc), identificadores ou nomes de componentes;
- Podem ser usadas letras não acentuadas (excluindo o “ç”), números e  o caractere “_”.

Declaração de Variáveis

Em Delphi é necessário declarar todas as variáveis antes de serem usadas.
A seção var é utilizada para declaração das variáveis do programa. A Declaração é feita como no exemplo abaixo:


Var
          idade: Integer;
          A,B: Real;
 
Veja que primeiro é informado o nome da variável (identificador) e depois o Tipo do Dado que será armazenado nela.

Abrangência das Variáveis

  • Variável Local: Será utilizada somente pelo procedimento onde está declarada, terminando o procedimento ela desaparecerá da memória. É declarada logo após o cabeçalho do procedimento.
  • Variável Global a nível de Unidade: Será utilizada por todos os procedimentos e funções da unidade. É declarada no início da seção implementation.
  • Variável Global a nível de Projeto: Será utilizada em todo o projeto, ou seja, por todas as unidades de código, sendo declarada dentro da seção interface.