3. O Ambiente

    O Delphi oferece dois níveis de programação distintos. Existe o nível do que o manual chama 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 e o designer em um nível mais alto.

    Para este curso, consideraremos a programação no nível do designer. Quando ativamos o Delphi, a tela inicial é parecida com a figura 1. Na janela superior, temos a barra do menu principal do Delphi, à esquerda a SpeedBar, 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.

    Abaixo da SpeedBar, está a janela do Object Inspector, que permite visualizar e modificar as propriedades e eventos de todos os componentes. É também largamente utilizado pelo designer. Abaixo da paleta ficam a janela de código-fonte e as janelas que estão sendo construídas.

Figura 1 - Tela inicial do Delphi

    Primeiro contato

    Para iniciarmos poderíamos criar a versão Delphi do famoso “Hello Word”, 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 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).

    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 Buttom. 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 o 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 a área pontilhada do form e em seguida ache a propriedade Caption no OI. Mude a string para “Gangorra”. Aproveite e mude a propriedade Name para “fmMain”.

    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.
Algumas Propriedades mais utilizadas:

    Name: É comum a todos os componentes da paleta. O Delphi nomeia automaticamente todos os componentes que são incluídos no form (inclusive o proprio form). Usa o nome da classe do componente mais um número sequencial. 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 voce renomeia um componente, o Delphi atualiza automaticamente todo o código gerado pelo Delphi, o que inclui o cabeçário 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çário 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.

    Caption: Todos os componentes que podem apresentar um rótulo tem esta propriedade. Armazena a string que será mostrada quando o componente for desenhado.

    Left e Top: Esquerda e Topo. Armazenam a posição do componente em relação ao form ou painel que o contém. Movendo o componente, estas propriedades se atualizam automaticamente, e alterando estas propriedades, o componente é movido.

    Height e Width: Altura e comprimento do componente. Idem acima.

    Font: Permite selecionar tamanho e tipo da fonte que será usada para escrever o texto no componente.

    Color: Cor do componente. Existe uma lista de cores padrão usadas pelo Windows e pelo Delphi, mas é possível definir qualquer cor através de seus componentes RGB.

    TabOrder: Ordem do componente no Form ou painel. Quando há vários componentes selecionáveis no Form  ou painel, a tecla Tab permite navegar entre os componentes. Esta propriedade define a ordem em que os componentes são selecionados quando o usuário tecla Tab.

    Hint: (Dica) Este é um recurso muito útil e fácil de usar. Permite que apareça um texto de ajuda quando o usuário posiciona o cursor do mouse sobre um componente. Todos os componentes podem ter Hint. Na propriedade Hint, voce deve digitar a frase que deve aparecer. Veja a propriedade abaixo.

    ShowHint: Ativa o hint para o componente. Se estiver desligado, o hint não é mostrado.

    Alguns Eventos básicos:

    OnClick: É gerado cada vez que o botão esquerdo do  mouse é pressionado e solto. O evento só ocorre quando o usuário libera o botão. O Delphi já direciona o evento para o componente que está debaixo do cursor do mouse.

    OnDblClick: Gerado quando é feito um duplo clique no botão esquerdo.

    OnKeyPress: Gerado quando o usuário pressiona (e libera) uma tecla no teclado.

    OnEnter: Gerado quando o foco de atenção do Windows “cai” sobre o componente. Exemplo: Suponha uma tela de entrada de dados, onde vários campos devem ser digitados. Quando a tela é apresentada, o foco, ou o cursor de texto, está sobre o primeiro campo. Depois de digitar o campo, o usuário pressiona Tab para passar para o campo seguinte. Veja que o que passa para o campo seguinte é a atenção da aplicação e do Windows. Essa atenção é chamada de foco, ou focus em inglês. Este evento é gerado assim que o componente recebe o foco, antes de executar qualquer código do componente.

    OnExit: Gerado imediatamente antes de o foco deixar o componente.

    OnResize: Gerado quando o tamanho do componente é alterado. É usado principalmente em forms e painéis.

    OnChange: Gerado quando o valor do componente muda. Só é aplicado em componentes que permitem edição de seu conteúdo.

   Alguns métodos úteis

    Show: Desenha o componente. Se for uma janela (form) ela é desenhada e ativada.

    Close: Fechar. Aplicado geralmente em forms e arquivos. Quando utilizado no form principal, encerra a aplicação.

    Repaint: Repintar. Redesenha o componente ou form.

    Refresh: Tem o mesmo efeito que o Repaint, mas antes de desenhar, apaga o componente. Quando aplicado em arquivos, faz com que o buffer do arquivo seja recarregado.

    Create: Aloca memória para criar um componente ou form, dinâmicamente.

    Free: Libera a memória alocada com o Create.

Voltar ao Índice