Você está na página 1de 78

Programao Delphi Passo a passo

Autor: Tecg Miguel Andrade Reviso: Tecg Rafael Andrade Kimidia 2007

www.miguelandrade.co.nr miguelandrade@live.com

ATENO!
Se pagou por este livro foi roubado! Download gratuito em: www.miguelandrade.co.nr

Indce
Histria: ........................................................................................................................... 4 Descrio: ....................................................................................................................... 4 Aplicabilidades: .............................................................................................................. 5 Requerimentos do sistema: ......................................................................................... 5 Instalando o Delphi gratuito(Turbo Delphi Explorer for Win32 development):..... 6 Inicializando o Turbo Delphi pela primeira vez: ........................................................ 9 Conhecendo o Turbo Delphi: ..................................................................................... 10 Primeio programa: ....................................................................................................... 13 Estrutura do Project Source Codigo fonte do projeto que gerencia as units e formulrios. .................................................................................................................. 18 Estrutura da Unit .......................................................................................................... 19 Fundamentos do Object Pascal: ............................................................................... 20 Variveis:....................................................................................................................... 20 Constantes: ................................................................................................................... 22 Arrays: ........................................................................................................................... 22 Records: ........................................................................................................................ 24 Pointers: ........................................................................................................................ 24 Operadores: .................................................................................................................. 25 With-do: ......................................................................................................................... 27 Procedure:..................................................................................................................... 27 Function: ........................................................................................................................ 28 Comentrios ................................................................................................................. 29 Funes de converso(mais utilizadas): .................................................................. 30 Instrues condicionais: ............................................................................................. 32 Instrues de lao:....................................................................................................... 35 Classes e objetos: ....................................................................................................... 39 Criando um programa simples (Bloco de notas): ................................................... 41 Eventos de uma aplicao: ........................................................................................ 57 StringList: ...................................................................................................................... 64 Criando um Media Player Simples:........................................................................... 65 Utilizando Imagens: ..................................................................................................... 67 Utilizando o XP Manifest: ........................................................................................... 68 Exemplo Simples de Cliente/Servidor: ..................................................................... 69

Histria:

Os desenvolvedores do compilador buscavam uma ferramenta que fosse capaz de acessar o banco de dados Oracle, o nome delphi foi inspirado na cidade de Delfos, pois nessa cidade era o nico lugar onde se podia consultar o orculo de Delfos, e ento surgiu o equvoco, "a nica maneira de acessar o orculo usando o Delphi".

Descrio:

Turbo Delphi uma IDE integrada de desenvolvimento desenvolvida pela Borland, esta verso voltada para estudantes, profissionais individuais e para aqueles que programam por hobby, ele utiliza a Linguagem Delphi, que um dialeto do Pascal.

Ele possui duas verses disponveis, uma que gera aplicativos nativos para aplicaes Win32(Turbo Delphi for Windows), e uma que gera cdigos em bytes para o Framework .Net CLR. Cada verso vem em duas edies, a edio Free Explorer e a edio Professional. A Edio Profissional permite extenses e customizaes para a IDE.

Neste livro apenas a verso Free Explorer ser abordada.

Aplicabilidades:

O Delphi muito utilizado no desenvolvimento de aplicaes desktop, aplicaes multicamadas e cliente/servidor, compatvel com os bancos de dados mais conhecidos do mercado. Ele pode ser usado para desenvolver aplicaes de linguagem de alto nvel como de baixo nvel. Um exemplo de software conhecido que foi desenvolvido em Delphi o Skype.

Requerimentos do sistema:

Intel Pentium III/M 1.4 GHz, ou Pentium IV 1.4 GHz mnimo (Intel Pentium III/M 1.4 GHz+, ou Pentium IV 2GHz+ recomendado)

Microsoft Windows Server 2003 (SP1) Microsoft Windows XP Professional (SP2) Microsoft Windows XP Professional (SP1) Windows 2000 Professional (SP4) Windows 2000 Server (SP4)

512 MB RAM (1 GB+ recomendado) 600 MB de espao disponvel no HD para o Delphi

750 MB de espao disponvel no HD para pr-requisitos (incluindo Microsoft. NET Framework e SDK)

SVGA ou monitor de alta resoluo (XGA recomendado) Mouse ou outro dispositivo apontador

Instalando o Delphi gratuito(Turbo Delphi Explorer for Win32 development):

O site http://turboexplorer.com/downloads oferece tudo que necessrio para a instalao correta do Turbo Delphi.

Pr-requisitos (O que voc precisa instalar):

Microsoft.NET 1.1 runtime and SDK, J# run-time InternetExplorer 6.01 MSXML

Depois de instalados os pr-requisitos (~230MB) voc pode fazer download e instalar o Turbo Delphi.

D um clique duplo sobre o arquivo que voc fez download, em seguida escolha a pasta de destino dos arquivos de instalao.

Depois d um clique duplo no arquivo Install.exe e logo em seguida clique em Install Borland Turbo Delphi.

Activation File(Arquivo de ativao do Turbo Delphi):

Para que possamos rodar o Turbo Delphi temos que adquirir um Activation File no site da CodeGear para o produto.

http://www.codegear.com/downloads/free/turbo

OBS: A Borland criou a CodeGear para ser uma subsidiria que ser responvel pelo Delphi e outros produtos.

Depois faa login, caso no possua um nome de usurio registre-se gratuitamente.

Depois disso voc receber o Activation File por e-mail.

Salve o arquivo de texto em anexo regXXX.txt na sua pasta raiz do usurio

Windows 95/98 (single-user): C:\Windows Windows 95/98 (multi-user): C:\Windows\Profiles\<username> Windows NT: C:\WINNT\Profiles\<username> Windows 2000/XP: C:\Documents and Settings\<username>

Inicializando o Turbo Delphi pela primeira vez:

Splash Screen(Tela de apresentao) do Turbo Delphi:

Welcome Page:

Voc pode us-la para criar um novo projeto, abrir um projeto existente, entrar na ajuda, etc.

Conhecendo o Turbo Delphi:

1. 2. 3. 4. 5. 6.

Menus e Barra de ferramentas (Toolbars) Editor de cdigo (Code Editor), Form Designer, Welcome Page Seo de estrutura (Structure View ) Inspetor de objetos (Object Inspector) Organizador de projeto (Project Manager), Model View, Data Explorer Paleta de ferramentas (Tool Palette)

Structure section

Com esta seo de estrutura voc pode selecionar hierarquicamente os componentes e controles.

Object Inspector

O Inspetor de objetos serve para selecionar os componentes e mudar as suas propriedades.

Project Manager

O Gerenciador de projeto voc pode gerenciar os arquivos do projeto, voc pode adicionar arquivos, remover, renomear.

Tool Palete

A Palheta de Ferramentas serve para voc selecionar os componentes que iro ser inseridos no formulrio de sua aplicao.

Primeiro programa:

Objetivo: Criar uma aplicao Win32 que possui um formulrio com um boto, ao clicarmos no boto receberemos uma simples mensagem.

Depois de inicializar o Turbo Delphi clique no menu File/New/VCL Forms Application Delphi for Win32.

O Form1 o formulrio de nossa aplicao, clique no Button que esta localizado na Tool Palete na primeira guia Standard e depois clique no formulrio, assim voc notar que um boto foi criado em nosso formulrio.

OBS: Voc pode redimensionar os componentes visuais que insere no formulrio segurando a tecla Shift do teclado e depois usando as teclas de

posio Esquerda, direita, para cima e para baixo. Para mover os componentes com preciso segure a tecla Ctrl e depois as teclas de posio citadas acima.

Para que possamos ir para a nosso code viewer d um clique duplo sobre o boto, voc poderia fazer o mesmo indo no Object Inspector e clicando em Events e selecionando o evento OnClick.

Depois de estarmos com o code editor ativado vamos inserir nossa primeira linha de cdigo entre os blocos begin e end do evento do boto. Veja:

Com o simples comando ShowMessage(Ol mundo!);

Para ver o programa em funcionamento pressione a tecla F9 do seu teclado e solte, ou ainda se preferir clique no menu principal Run/Run.

Teste clicando no boto e veja o resultado, para retornar ao modo de edio feche o programa clicando no X do nosso formulrio.

Para salvar o cdigo fonte do nosso primeiro programa clique no menu File/Save All.

Selecione a pasta em que deseja armazenar o cdigo fonte e depois clique em Salvar.

Na pasta em que voc selecionou para salvar os arquivos vamos destacar os principais:

.PAS Arquivo Pascal: o cdigo-fonte de uma unidade Pascal, ou uma unidade relacionada a um formulrio ou uma unidade independente.

.DPR Arquivo Delphi Project. (Contm cdigo-fonte em Pascal).

.DFM Delphi Form File: um arquivo binrio (na verso 5 pode ser convertido para texto) com a descrio das propriedades de um formulrio e dos componentes que ele contm.

.DCU Delphi Compiled Unit: o resultado da compilao de um arquivo Pascal.

.CFG Arquivo de configurao com opes de projeto. Semelhante aos arquivos DOF.

.DOF Delphi Option File: um arquivo de texto com as configuraes atuais para as opes de projeto. .DSK Arquivo de Desktop: contm informaes sobre a posio das janelas do Delphi, os arquivos abertos no editor e outros ajustes da rea de trabalho.

Estrutura do Project Source Codigo fonte do projeto que gerencia as units e formulrios:

Quando voc salva o seu projeto em uma pasta gerado o Project Source, ele responsvel pelo gerenciamento do fonte, units, forms, etc.

Vamos ver sua estrutura:

program Project1; -> A primeira declarao do Project Source o nome interno do aplicativo.

Uses -> Na clusula uses fica a lista de units usadas. Forms, Unit1 in 'Unit1.pas' {Form1};

{$R *.res} -> Arquivo que salvo como o nome interno do aplicativo + extenso .res, este arquivo armazena informaes binrias, resources, etc.

begin Application.Initialize; -> Procedure que chama a inicializao da aplicao. Application.CreateForm(TForm1, Form1); -> Procedure que chama a criao do formulrio na memria. Application.Run; -> Procedure que chama execuo da aplicao. end.

Estrutura da Unit:

Unit ela responsvel pelo cdigo fonte de seu formulrio, vamos ver a sua estrutura.

unit Unit1; -> A primeira declarao de uma unit seu identificador, que igual ao nome do arquivo. interface -> Seo interface, onde ficam declaraes que podem ser usadas por outras Units.

Uses -> Na clusula uses fica a Lista de Units usadas. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

Type -> Na clusula type fica a definio de tipos, aqui temos a declarao da classe do Form. TForm1 = class(TForm) private { Private declarations } public { Public declarations } end;

var -> Na clusula var so declaradas as variveis, aqui temos a declarao da instncia do Form.

Form1: TForm1;

Implementation -> Na seo implementation ficam as definies dos mtodos.

{$R *.dfm}

end. -> Toda Unit termina com um end a partir de onde qualquer texto ignorado.

Fundamentos do Object Pascal:

Vamos comentar alguns dos conceitos bsicos de programao orientada a objetos:

Variveis:

O tipo de uma varivel determina que tipo de valor a mesma poder armazenar e receber, as variveis devem ser declaradas antes de usada para realizarmos a declarao utilzamos a palavra var, esta declarao pode ser feita em uma unitunidade, procedure, function ou uma varivel global.

Tipos de variveis(mais usadas):

String: Pode armazenar qualquer palavra ou pargrafo com ou sem espao.

Integer: Valor inteiro que varie entre -2.147.483.647 at 2.147.483.647.

Real: Igual ao tipo Inteiro, mas pode usar separador decimal e notao cientfica. Char: Um nico caractere ASCII.

PChar: String terminada em nulo (#0), usada geralmente nas funes da API do Windows

Boolean: Representa dois valores que podem ser: true (verdadeiro) ou false (falso). OBS: Para inserirmos uma valor em uma varivel utilizamos o := dois pontos igual.

Olhe:

A varivel string recebe o valor palavra.

Constantes:

So declaradas na seo const, podem ser usadas como variveis, mas no podem ser alteradas, na declarao de uma constante o tipo no especificado. Veja:

Arrays:

Array uma forma de se utilizar variveis com mltiplos valores assim como uma tabela. Veja:

Pa inserirmos valores nesta array usamos o seu ndice veja:

teste[0] := palavra1; teste[1] := palavra2;

OBS: Caso necessitarmos utilizar uma array com um ndice variado podemos utilizar uma array dinmica. Como na screenshot acima temos a varivel teste3 que no foi especificado o seu ndice de valores, para setarmos o valor temos que usar o comando SetLength. Veja: Var teste3: array of string; begin SetLength(teste3, contador+1);//lembrando que o valor contador que foi utilizado neste caso apenas para armazenar o novo ndice da array. end;

Records:

O record um recurso em que se pode utilizar vrios valores com diferentes tipos de dados.

Pointers:

Pointer um tipo de dado que aponta um endereo de memria. Veja:

A varivel valor1 recebe o nmero inteiro 2 a varivel ponteiro recebe o endereo de memria da varivel valor1, depois a varivel valor2 recebe o endereo de memria do ponteiro, logo a varivel valor2 possui agora o mesmo valor que a varivel valor1.

Operadores:

Os operadores so usados em expresses, Veja na lista: Operadores Unrios @ not Endereo No booleano ou bit voltado para no

Operadores Multiplicativos e de direo de Bit * / div mod as Multiplicao ou interseo de conjuntos Diviso de Real Diviso de Inteiro Resto de diviso de Inteiros TypeCast seguro quanto ao tipo (RTTI)

and shl shr

E booleano ou bit voltado para e Deslocamento de bits esquerda Deslocamento de bits direita

Operadores Aditivos + or xor Adio ou unio de conjuntos Subtrao ou diferena de conjuntos Ou booleano ou bit voltado para ou Ou exclusivo booleano ou bit voltado para ou exclusivo

Operadores Relacionais = <> < > <= >= in is Igual Diferente Menor Maoir Menor ou igual Maior ou igual Pertinncia a conjuntos Compatibilidade de tipos (RTTI)

With-do:

O comando with serve para que seja simplificado a edio de um componente por exemplo. Veja:

No caso a edio das propriedades fica mais fcil com esse comando, no necessrio reescrever o nome do componente vrias vezes, isto simplifica e agiliza a programao em alguns casos.

Procedure:

Uma procedure nada mais que um procedimento que executado possuindo parmetros ou no. Voc pode declarar uma procedure de vrias formas. Com uma procedure voc agiliza e perde menos tempo, voc pode escreve-la uma vez e us-la vrias vezes. Veja um exemplo muit simples de procedure:

Veja um exemplo ou pouco mais complexo:

Neste caso temos um parmetro na procedure teste, uma varivel inteira que recebe um pequeno clculo no momento de execuo.

Function:

Uma funo ao contrrio da procedure necessita sempre retornar um valor. Esse valor pode ser dos mais diversos tipos, string, integer, boolean, etc. Veja o exemplo:

Neste exemplo a varivel resultado recebe o resultado da funo.

Comentrios
Existem 3 estilos de comentrio no Delphi, como mostrado abaixo.

(* Comentrio do Pascal Padro *) { Comentrio do Turbo Pascal } // Comentrio de linha do C++

Cuidado com as diretivas de compilao, pois elas so delimitadas por chaves e podem ser confundidas com comentrios. A diretiva de compilao mostrada abaixo includa em todas as Units de Forms.

{$R*.DFM}

Funes de converso(mais utilizadas):

As funes de converso so utilizadas quando precisamos converter valores.

StrToInt: Converte um string em um inteiro, levantando uma exceo (erro) caso o string no represente um inteiro vlido.

Ex:

Veja a screenshot:

Neste caso a varivel a recebe o valor string que est contido no Edit1, depois a varivel b recebe o valor que retornado da rotina de converso StrToInt. No caso a varivel b agora armazena um valor inteiro que foi convertido do Edit1.

IntToStr: Converte um nmero em um string.

Trunc: Converte um valor real em um inteiro, truncando a parte decimal.

Round: Converte um real em um inteiro, arredondando a parte decimal.

Chr: Converte um nmero ordinal em um caractere ANSI.

StrToFolat: Converte um string e, um valor de ponto flutuante.

FloatToStr: Converte um valor de ponto flutuante para sua representao string usando formatao padro.

Instrues condicionais:

Instrues If:

Esta instruo condicional bem bsica e muita utilizada

Ex:

If condio then

Bloco de instruo

Como foi mostrado na screenshot acima if se a propriedade Text do Edit1 for igual a string Edit1 thenento

OBS: Se voc no colocar o begin e o end quando for usar a instruo if e then ela s ter validade para as trs primeiras linhas, mas se utilizar o begin e o end poder usar uma grande quantidade de linhas de comando.

Uma outra forma de utilizar a instruo condicional if e then usando o else como o prprio nome j diz se condio for igual ento faa isso seno faa aquilo.

Observe a screenshot:

OBS: Lembrando que devemos no adicionar o; ponto e vrgula no ultimo end antes do else.

Instruo Case:

Se necessitarmos de uma grande quantidade de verificaes mais prtico usar a instruo case.

Observe a screenshot:

A Instruo case nesse caso muito mais prtica, caso necessitarmos adcionar mais de uma linha de comando em uma das instrues basta iniciarmos um bloco de comando com o begin e end

Veja:

Insto muito importante, pois em alguns casos necessitamos de mais de uma linha de comando.

Instrues de lao:

Lao for

A instruo for do pascal semelhante as das outras linguagens, mas no muito flexvel, no possvel estabelecer incrementos diferentes de um, embora seja possvel contar para cima e para baixo.

Veja a screenshot:

Quando clicamos no Button1 o programa vai mostrar a caixa de mensagem exibindo a mensagem de 0 a 5. Se quisermos fazer de forma decrescente devemos utilizar no lugar do to o comando downto.

Veja como seria:

Neste caso vamos receber a caixa de mensagem exibindo a mensagem com os nmeros de forma decrescente de 5 at 0.

Instrues while e until

A diferena entre os laos while-do e repeat-until que o cdigo da instruo repeat sempre executado ao menos uma vez.

Veja:

Agora com o repeat:

OBS: Em qualquer um dos laos mostrados podemos usar o procedimento Break para cancelar a repetio e sair do lao, podemos tambm forar a prxima iterao com o procedimento Continue.

I := 1; while true do begin Inc(I); if I < 10000000 then Continue; ShowMessage('Chegamos a dez milhes'); Break; end;

Classes e objetos:

Uma classe uma definio, com a qual se descreve os membros e caractersticas que tero os objetos. Um objeto uma cpia, tambm chamada instncia, de uma classe. Quando uma classe derivada de outra (chamada classe base, classe pai ou classe me), ela herda os campos, propriedades e mtodos da classe base.

O Delphi possui uma classe chamada TObject

da qual todas as demais

classes se derivam, ou seja, todas as classes so derivadas de TObject ou de classes derivadas de TObject. Quando voc deriva uma classe de TObject , no preciso declarar explicitamente a classe base pois o Delphi assume TObject como default. Um objeto uma instncia de uma classe, isto , depois de definirmos uma classe podemos declarar e utilizar objetos desta classe, da mesma forma que podemos declarar e usar uma varivel composta (um registro, por exemplo) depois que o tivermos definido.

Veja o exemplo:

As classes sempre so inseridas depois da seo type.Geralmente as classes recebem um valor T antes do nome da classe, porm nada impede de no colocar. No caso a classe foi declarada com uma varivel pblica chamada Valor com o tipo string.

Quando desejamos utilizar a classe devemos cria-la na memria. Note que na screenshot acima declaramos uma instncia chamada Teste para a classe TTest. Veja: procedure TForm1.FormCreate(Sender: TObject); begin Teste := TTest.Create; //instncia da classe TTest criada na memria Teste.Valor := 'teste'; //varivel da instncia da classe recebe valor string teste ShowMessage(Teste.Valor); //caixa de dilogo mostra valor armazenado Teste.Free; //libera instncia da memria end;

Criando um programa simples (Bloco de notas):

Inicie um novo projeto: File/New/VCL Forms Application Delphi for Win32 Agora comearemos a inserir os componentes necessrios para a criao do nosso bloco de notas. Vamos inserir um componente MainMenu localizado na guia Standard, seguidos dos componentes Memo. Veja:

Agora mude a propriedade do componente Memo1 para alClient

Com esta propriedade o Memo1 vai se esticar para todo o formulrio Olhe:

Agora vamos criar o Menu do nosso bloco de notas: D um clique duplo sobre o componente MainMenu1 e note que o editor de menus apareceu:

Note que por padro o primeiro espao do menu j est selecionando se voc digitar um texto esse texto entrar na propriedade Caption do Object Inspector que est associado ao MainMenu1.

Na figura acima o texto inserido foi Arquivo que corresponde ao primeiro item do menu, logo em seguida pressione a tecla enter e solte assim voc notar que mais um item foi criado e ele est aguardando que voc escreva o nome.

Olhe como o menu ficou depois da insero de 4 itens.

OBS: A linha correspondende ao caracter - hfen. Agora vamos inserir o primeiro evento ao nosso bloco de notas, d um clique duplo ainda com o editor de menus aberto sobre o subitem Sair.

Aps isso o nosso editor de cdigos aparece com o primeiro evento de nossa aplicao. Olhe:

No caso o comando correspondente ao de fechar o nosso formulrio o comando close. Rode o programa e teste o resultado, se o resultado do evento for igual ao retorno do Delphi no modo de edio tudo est correto. Vamos adicionar agora um componente que ser responsvel por uma caixa de dialogo para abrir o arquivo.

V at a guia Dialogs e depois clique sobre o OpenDialog e depois clique no formulrio. Note que o componente OpenDialog1 est em seleo, se no estiver clique sobre ele, v at o object inspector e v at a propriedade Filter e clique no boto com reticncias. Preencha o filtro de arquivos da forma que desejar. Olhe a screenshot:

Vamos at o menu selecione o item abrir e d um duplo clique para inserir o evento, agora vamos digitar o seguinte comando:

If OpenDialog1.Execute then //condio checando se a opendialog foi aberta begin Memo1.Lines.Clear; //limpa contedo do memo para receber o texto a ser carregado Memo1.Lines.LoadFromFile(OpenDialog1.Filename) //carrega o arquivo de texto selecionado para o memo end;

Rode o programa clique no menu e veja o resultado, se tudo der certo o arquivo de texto ser carregado para o memo. Vamos agora no mesmo esquema criar o evento para salvar textos, adicione o componente SaveDialog que est localizada na guia Dialogs, altere o filtro da mesma forma(propriedade filter) no object inspector. D um clique duplo no menu e d um clique duplo no item salvar para criar o evento para salvar: If SaveDialog1.Execute then //condio checando se a opendialog foi aberta begin Memo1.Lines.Clear; //limpa contedo do memo para receber o texto a ser carregado Memo1.Lines.SaveToFile(OpenDialog1.Filename) //salva o contedo do memo para o arquivo de texto end; Agora vamos inserir um novo formulrio ao programa que servir janela de sobre, para isso clique em File/New/Form Delphi for Win32

Note que um novo formulrio foi criado. Vamos voltar ao primeiro formulrio, para isso clique no menu View/Forms e selecione o Form1(primeiro formulrio).

Olhe:

Agora selecione o primeiro formulrio e depois clique em Ok.

Crie o item Ajuda no editor de menus e depois crie um subitem Sobre

D um clique duplo sobre o subitem Sobre com isso o evento OnClick ser criado, para que possamos chamar o segundo formulrio neste evento do menu devemos primeiro relacionar a unit do segundo formulrio com a do primeiro, para isso clique em File/Use Unit...

Agora selecione a unit

Depois disso dentro do evento OnClick do subitem sobre adicione o comando show que ser responsvel pela exibio do formulrio.

Se voc desejar que enquanto o formulrio 2 (Form2) que no se possa alterar entre os formulrios basta utilizar o comando Form2.ShowModal; Adicione no Form2 3 componentes Label que esto localizados na guia Standard necessrios para informar o nome do programa, criador, e verso, e logo em seguida adicione um componente Button. Para mudar o valor do texto dos componentes selecione o label desejado e altere sua propriedade caption no object inspector. Mude o label do button para Ok. Olhe:

Agora adicione no Button no evento OnClick o comando close, Pois assim quando o programa estiver em execuo e o usurio clicar no menu ajuda/sobre e clicar e quando o formulrio sobre Form2 estiver sendo mostrado ele poder fechar o formulrio.

OBS: Alguns detalhes impotantes para dar um aspecto mais profissional para o programa cuidar de alguns detalhes do programa, tais como o caption do Formulrio, o cone, o nome na barra de tarefas, o posicionamento do formulrio, etc. Para mudar o caption do formulrio basta usar a propriedade do object inspector, para mudar o cone do programa v em Project/Options/ Olhe:

e depois clique em application:

Depois de ter clicado em application basta voc digitar no campo Title o nome que ir aparecer na barra de tarefas quando o programa estiver em execuo, no boto Load Icon... voc pode escolher qual ser o cone de sua aplicao voc s ir precisar escolher o arquivo qualquer com a extenso. ICO. Depois de ter feito as mudanas que desejar clique em Ok para confirmar as alteraes. Para mudar o posicionamento do formulrio basta voc mudar a propriedade do formulrio chamada position. Olhe:

Olhe agora o formulrio depois das mudanas:

O cone foi alterado, o caption, e o ttulo na barra de ferramentas.

Eventos de uma aplicao:

Vamos criar agora um programa exemplo para demonstrar a utilizao dos diversos eventos que os componentes possuem. Crie uma nova aplicao e adicione os seguintes componentes: 2 Edit, 1 Memo e 2 Button Olhe:

Agora selecione o Form1 pela palheta Structure, e depois pelo Object Inspector clique em Events

Repare que o Form1 possui uma grande diversidade de eventos, vamos a uma breve anlise dos eventos mais usados:

OnActivate: Quando o formulrio ativado, ou seja quando a janela de nosso programa est com a barra azul cinza e quando recebe o focus do mouse e passa a estar ativa. OnClick: Quando o formulrio recebe um clique do mouse. OnClose: Quando o formulrio e fechado. OnCreate: Quando o formulrio criado na memria. OnDestroy: Quando o formulrio destrudo da memria. OnResize: Quando o formulrio redimensionado, ou seja quando alteramos o tamanho da janela com o mouse. OnShow: Quando o formulrio mostrado pela primeira vez, logo depois que ele criado na memria. Se voc deseja analisar os eventos para entender melhor adicione o comando ShowMessage(Ol mundo); entre o begin e o end dos eventos citados e veja o resultado. OBS: Vale apena ressaltar que cada componente pode possuir determinado evento, cada componente pode ser totalmente distinto de outro ou no.

Vamos adicionar no Button1 de nossa aplicao no evento OnClick uma funo da unit windows chamada WinExec para mostrar como se executa um aplicativo externo. Veja a screenshot para que possamos comentar:

Neste exemplo de cdigo temos uma funo chamada WinExec. OBS: Caso deseje descobrir onde esta funo est armazenada, segure a tecla Ctrl e depois clique sobre a mesma, e assim o Delphi mostrar em qual a unit ele est armazenada.

Olhe o resultado:

Em certas ocasies necessita-se utilizar funes que esto armazenadas em units que no vem declaradas por padro, neste caso basta adicionar a unit que deseja usar na clusula unit do formulrio. Veja:

No caso onde est escrito NomeDaUnit basta voc inserir o nome da unit, pois neste caso a unit NomeDaUnit no existe e meramente ilustrativo.

Vamos voltar agora a comentar sobre os parmetros da funo que estamos estudando a WinExec.

Olhe: WinExec(PChar(notepad.exe), SW_SHOW); No caso o valor PChar utilizado para converter uma string para o valor PChar que contm um valor nulo no final da string, este valor muito utilizado em chamdas da WinAPI. Vale apena lembrar que o programa notepad.exe est localizado na pasta do sistema e com isso no necessrio adicionar todo o caminho em que o arquivo est localizado.

Se por exemplo quisssemos executar um aplicativo que estivesse localizado na nossa mesma pasta do aplicado poderamos utilizar a propriedade chamada ExeName junto com a funo ExtractFilePath, observe como seria:

WinExec(PChar(ExtractFilePath(Application.ExeName) + teste.exe), SW_SHOW);

Ou ainda para exemplificarmos melhor poderamos substituir a string teste.exe pelo valor Text do nosso Edit1, pois assim poderamos digitar qualquer valor, ou seja qualquer aplicativo que estivesse dentro da nossa pasta. Veja: WinExec(PChar(ExtractFilePath(Application.ExeName) + Edit1.Text), SW_SHOW); Olhe uma breve descrio sobre os parmetros de execuo da janela mais utilizados: SW_HIDE: Esconde a janela e mostra outra janela. SW_MAXIMIZE: Maximiza a janela especificada. SW_MINIMIZE: Minimiza a janela especificada, e ativa a prxima das janelas. SW_SHOW: Ativa a janela e mostra no tamanho atual e posio.

Vamos adicionar agora o evento OnClick ao Button2 begin Memo1.Lines.Add(Edit2.Text); end;

No caso agora vamos inserir ao evento OnChange do componente Memo1 o seguinte comando: ShowMessage('Valor adicionado'); Ou seja, quando o usurio clicar sobre o boto ser adicionado a linha de texto que estiver digitado no Edit2, e ao componente receber a notificao do evento OnChange o usurio receber uma caixa de mensagem.

Olhe como ficou:

StringList:

Uma classe muito interessante que possumos para utilizao a StringList, com ela podemos manipular strings em lista.

Para criar esta classe basta declara-la onde quiser, depois crie-a no evento desejado. Olhe:

procedure TForm1.Button1Click(Sender: TObject); var Teste: TStringList; begin Teste := TStringList.Create; //cria instncia da classe na memria Teste.Add('oioioi') //adiciona uma string Teste.SaveToFile('teste.txt'); //salva contedo adicionado em arquivo de texto Teste.Free; //libera instncia da memria end; OBS: No final utilizamos a procedure Free para liberar a instncia da classe porm poderamos utilizar tambm a procedure Destroy, a diferena entre as procedures Free e Destroy que a procedure Free testa se a instncia j foi liberada j a procedure Destroy tenta destruir a instncia sem testar se o mesmo j foi destrudo.

Criando um Media Player Simples:

Para iniciarmos o desenvolvimento do nosso media player simples vamos primeiro inserir os componentes ao formulrio, adicione 1 Label, 1 Button, 1 componente chamado Media Player localizado na gui System e para terminarmos essa etapa adicione um componente OpenDialog localizado a guia Dialogs:

Veja como ficou:

Vamos adicionar ao evento OnClick do Button1 os seguintes comandos: procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then // se a caixa de dilogo for executada ento begin MediaPlayer1.Close; //fecha o media player caso ja estivesse aberto MediaPlayer1.FileName := OpenDialog1.FileName; //media player recebe o valor que o OpenDialog capturou Label2.Caption := OpenDialog1.FileName; //label recebe o valor contido na caixa de dialogo MediaPlayer1.Open; //abre o arquivo especificado pelo nome end; end; OBS: Lembre-se de adicionar o filtro corretamente na caixa de dialogo OpenDialog como fizemos no exemplo do bloco de notas.

Utilizando Imagens:

Vamos desenvolver uma pequena aplicao para explicar algo sobre manipulao de arquivos de imagem. Inicie uma nova aplicao, e em seguida adicione os seguintes componentes ao formulrio, 1 Button e 1 componente Image localizado na guia Aditional. Olhe como ficou:

Adicione ao evento OnClick do Button1 os seguintes comandos: procedure TForm1.Button1Click(Sender: TObject); var Bmp: TBitmap; //instncia declarada da classe bitmap begin Bmp := TBitmap.Create; //cria instncia na memria Bmp.LoadFromFile('C:\WINDOWS\Pescaria.bmp'); //carrega o arquivo bitmap para a instncia da classe bitmap

Image1.Picture.Bitmap := Bmp; //componente Image1 recebe a imagem contida da instncia da classe bitmap Bmp.Free; //libera a instncia da memria end;

Utilizando o XP Manifest:

Um recurso muito interessante que foi adicionado desde a verso 7 do Delphi o XP Manifest um componente de simples utilizao que d um aspecto mais agradvel ao usurio, pois ele manifesta a skin do Windows XP. Para que ele funcione basta adicion-lo ao formulrio de sua aplicao, este componente fica localizado na guia Win32. Olhe o antes:

Olhe o depois:

Exemplo Simples de Cliente/Servidor:

Para a inicializao do estudo cliente e servidor iremos utilizar os componentes ClientSocket e ServerSocket da palheta Internet estes componentes foram introduzidos na verso 4, estes componentes trabalham com o protocolo TCP e note que estes componentes no acompanham mais o Delphi e foram removidos desde a verso 6, atualmente o Dephi possui uma gama de componentes para Internet da Indy porm os componentes citados aqui so de fcil entendimento para o usurio iniciante. Para ativa-los v at o menu do delphi component Install Packages, e depois clique em Add. Olhe a screenshot:

Depois de ter clicado sobre o boto Add selecione o arquivo que fica localizado na pasta c:\Arquivos de programas\Borland\BDS\4.0\Bin\dclsockets100.bpl. Depois clique em Ok, se tudo ocorreu corretamente dois novos componentes apareceram na guia internet o ClientSocket e ServerSocket. Olhe:

Vamos inicialmente criar o programa servidor, para iniciarmos o processo adicione o componente ServerSocket ao formulrio, vamos precisar de 2 Buttons e 1 componente Memo. Olhe como ficou:

Vamos inserir os eventos ao programa: No Button 1 no evento OnClick adicione os seguintes comandos: procedure TForm1.Button1Click(Sender: TObject); begin ServerSocket1.Port := 9090; //porta que sera utilizada para a conexo com os clientes ServerSocket1.Active := True;//inicia o processo de escuta para receber conexes end; No Button 2 coloque o seguinte comando:

procedure TForm1.Button2Click(Sender: TObject); begin ServerSocket1.Active := False;

end; Agora o no evento OnClientRead do ServerSocket1 adicione os seguintes comandos para receber as informaes enviadas pelos clientes:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Buffer: String; //varivel string declarada para armazenar as palavras enviadas pelos clientes begin Buffer := Socket.ReceiveText; //varivel Buffer recebe o valor contido no soquete de conexo Memo1.Lines.Add(Buffer); //o contedo contido na varivel Buffer adicionado ao Memo1 end; Aps isso temos o programa Servidor pronto para ser testado. OBS: Caso queira conectar-se ao servidor que voc acabou de criar clique no menu iniciar/Executar e digite cmd ou command.com feito isso digite no MSDOS telnet Em seguida digite open agora digite 127.0.0.1 9090 que correspondente ao host localhost ou seja o ip que atribudo a mquina desconectada, o 9090 correspondente a porta que est em escuta pelo servidor. Caso estivesse usando esse servidor pela internet com acesso discado voc utilizaria o ip de sua conexo, caso esteja conectado a internet por rede voc

poderia utilizar o ip do servidor fsico de sua rede porm o mesmo necessitaria estar configurado para redirecionar as portas.

Olhe o programa telnet conectado ao servidor:

Voc poderia tambm utilizar um cliente(Telnet, SSH, etc) muito famoso chamado PuTTY que pode ser obtido pela internet no site http://www.putty.nl. Olhe:

Vamos agora desenvolver com o Delphi o cliente para este servidor: Inicie uma nova aplicao, vamos adicionar ao formulrio em branco os componentes, 3 Buttons, 2 Edits e um Memo. Um desses buttons ser utilizado para inciar a conexo, um para encerrar a conexo e outro para enviar as palavras strings. Um dos edits ser usado para armazenar temporariamente os textos que sero enviados o outro ser utilizado para armazenar o IP do servidor. O memo ser utilizado para mostrar os textos que foram enviados. O componente ClientSocket ser utilizado para estabelecer a conexo com o servidor. Olhe como ficou o formulrio da aplicao:

Vamos adicionar ao button com o caption Conectar o Button1 ao evento OnClick os seguintes comandos: procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Port := 9090; //porta que o soquete cliente ir se conectar ClientSocket1.Address := Edit2.Text; //endereo ip da mquina remota do servidor ClientSocket1.Open; //conecta ao servidor end; agora ao button com o caption alterado para Desconectar o Button2 vamos adicionar o seguinte comando ao evento OnClick: procedure TForm1.Button2Click(Sender: TObject); begin ClientSocket1.Close; //desconecta soquete da conexo com o servidor

end; Ao button com o caption Enviar o Button3 vamos adicionar os seguintes comandos ao seu evento OnClick:

procedure TForm1.Button3Click(Sender: TObject); begin ClientSocket1.Socket.SendText(Edit1.Text); //envia string contida no edit1 Edit1.Text := ''; //esvazia string do edit1 Edit1.SetFocus; //poe foco sobre o edit1 end; Com isso j podemos testar a aplicao cliente junto com o servidor que desenvolvemos anteriormente. Olhe:

OBS: Repare na screenshot acima utilizamos a mesma mquina para rodar as duas aplicaes, no caso nada impediria de o cliente ou o servidor estar em outra mquina conectada a internet ou rede, de modo que o ip seja trocado na aplicao cliente.

Você também pode gostar