Anda di halaman 1dari 54

PROGRAMAO DE COMPUTADORES I DELPHI

Prof Lcia e Angela

Delphi 7.0

DELPHI
Linguagem de Programao utilizada a Object Pascal, que a denominao para a linguagem Pascal orientada a objetos, existente desde a verso 5.5 do ambiente de programao Turbo Pascal, da Borland. Delphi o nome do ambiente de programao chamada Delphi IDE (Integrated Development Environment Ambiente de Desenvolvimento Integrado) com o compilador da linguagem de programao Object Pascal. Um pouco da linguagem Pascal, em 1968 o professor Niklaus Wirth, da Universidade de Zurique. uma linguagem derivada do ALGOL, desenvolvida na dcada de 60, utilizado at os anos 80 em universidades para o ensino de programao. O nome Pascal dado em homenagem ao filsofo e matemtico Blaise Pascal. Em 1983, a Borland lanou o Turbo Pascal (compilador) utilizado muito no meio acadmico. Em 1995, a Borland resolveu lanar uma verso da linguagem Pascal especfica para o desenvolvimento de aplicativos em ambiente Windows. Surgia o Delphi. Em 1996, a Borland lanou a verso 2.0, 1997, a verso 3.0, 1999, a verso 5.0, 2000, a verso 6.0 Kylix Delphi para Linux, 2003, a verso 7.0 e 2004, a verso 8.0. Em menos de dez anos desde o seu lanamento, o Delphi firmou-se como uma ferramenta efetiva para o desenvolvimento profissional de aplicativos, principalmente aqueles que envolvem banco de dados, conseguindo, dentro do ambiente profissional, um espao que antes era ocupado em boa parte pelos compiladores C e C++. Alguns conceitos bsicos: Sistema Operacional: Conjunto de pequenos softwares capazes de controlar as diversas funes de um hardware. Exemplos: WINDOWS, LINUX, DOS, UNIX... etc Linguagem: Conjunto de cdigos capazes de descrever uma ao a ser realizada por um processador ou sistema computacional. Linguagem estruturada: toda linguagem onde as linhas de comando seguem uma seqncia lgica continua ou em rotinas interligadas entre si. Exemplos: CLIPPER, BASIC, FORTRAN, NATURAL, C... etc Linguagem orientada a objeto: a linguagem onde se utilizam formas grficas (Objetos) com caractersticas prprias e independentes, capazes de realizar um procedimento atravs de uma ao que assim o determine. Exemplos: DELPHI, VISUAL BASIC,... etc

Delphi 7.0

Orientao a Objeto
Antes de comearmos a falar realmente de linguagem orientada a objetos e necessrio que voc possua os conceitos bsicos da orientao a objetos, so eles: Objeto - qualquer estrutura modular que faz parte de um produto. Uma janela por exemplo, um objeto de uma casa, de um carro ou de um software com interface grfica para o usurio. Atributos - So as caractersticas do objeto, como cor e tamanho, a janela, por exemplo, tem atributos como o modelo, tamanho, abertura simples ou dupla, entre outros. Encapsulao - um mecanismo interno do objeto escondido do usurio. Uma pessoa pode abrir uma janela girando a tranca sem precisar saber o que h dentro dela. Ao - a operao efetuada pelo objeto. Todas as janelas, por exemplo, controlam a iluminao e temperatura ambiente, dependendo do seu design. Herana - um objeto novo nem sempre criado do zero. Ele pode herdar atributos e aes de outros j existentes. Um basculante herda atributos das janelas e das persianas. Polimorfismo - a capacidade de objetos diferentes reagirem segundo a sua funo a uma ordem padro. O comando abre, por exemplo, faz um objeto entrar em ao, seja ele uma janela, uma porta ou uma tampa de garrafa. Ligao - quando um objeto conecta a sua ao a outro. Um sensor de claridade, por exemplo, ativa o acendimento automtico da iluminao de rua. Embutimento - Permite a um objeto incorporar funes de outros, como um liqidificador que mi carne com a mudana do tipo da lmina. Mensagem meio de comunicao com os objetos

Definies importantes: Objeto: Abstrao que agrupa caractersticas e comportamentos No Delphi todos os objetos so derivaes da classe TObject. Ex.: boto Propriedade: Define as caracterstica dos objetos de uma classe. So atributos que caracterizam os objetos. Ex.: nome, tamanho Evento: um gatilho que quando disparado pelo usurio realiza um procedimento So aes sofridas pelos objetos. Ex.: OnClick, OnMouseDown Mtodos: Define o comportamento dos objetos de uma classe. So processos dos objetos. Ex.: Limpar, Adicionar. Procedimento: a ao a ser realizada aps o disparo de um evento.

Delphi 7.0

Ambiente de Programao Delphi 7.0


4 5 1 3

IDE Delphi 12345Janela Form User e Computer ( Interface) Janela Object Inspector propriedades e eventos Janela Code Editor - cdigo Janela Object Treeview diagrama da aplicao Janela Main 7 partes (Barra menus, ferramentas, padro, Internet, desktops, visualizao, debug, componentes paleta)

Etapas para construir um programa:


Entendimento preliminar do problema: Atender os requisitos

Delphi 7.0 Diagramao do problema: Diagrama de bloco, lgica do programa Criando a interface visual: visual do programa com seus respectivos componentes Configurao dos objetos: Propriedades Object Inspector Codificao: Montagem da sequncia de cdigos. Esses cdigos ficam armazenados em um arquivo com extenso .pas Como salvar: Todos os arquivos devem ser salvos na mesma pasta. File/ Save All/ Save Unit As . untNomedoarquivo.pas (PAScal) Em seguida, Save Project As . dprNomedoarquivo.dpr (Delphi Project) O formulrio ser salvo automaticamente com o nome: NomedoArquivo.dfm (Delphi ForM) Importante: Para iniciar um novo projeto, feche a aplicao anterior com File/ Close All, em seguida execute o comando de menu File/ New/ Windows Forms Application.

PROJETO EM DELPHI
O conceito de projeto em Delphi baseado em um conjunto de arquivos necessrios para gerar uma aplicao. Vamos destacar os principais arquivos: Extenso Tipo e descrio
Arquivo Pascal: o cdigo-fonte de uma unidade Pascal, ou uma unidade relacionada a um formulrio ou uma unidade independente. Arquivo Delphi Project. (Contm cdigo-fonte em Pascal.) 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. Delphi Compiled Unit: o resultado da compilao de um arquivo Pascal.

Criao
Desenvolvimento

Necessrio para compilar?


Sim.

.PAS .DPR

Desenvolvimento Desenvolvimento

Sim. Sim. Todo formulrio armazenado em um arquivo PAS e em um arquivo DFM. Apenas se o cdigofonte no estiver disponvel. Os arquivos DCU para as unidades que voc escreve so um passo intermedirio; portanto, eles tornam a compilao mais rpida. Normalmente no, mas eles podem ser necessrios em tempo de execuo e para edio adicional.

.DFM

Compilao

.DCU

.BMP, .ICO, .CUR

Arquivos de bitmap, cone e cursor: arquivos padro do Windows usados para armazenar imagens de bitmap.

Desenvolvimento: Image Editor

Delphi 7.0
Arquivo de configurao com opes Desenvolvimento de projeto. Semelhante aos arquivos DOF. Delphi Option File: um arquivo de texto com as configuraes atuais para as opes de projeto. Desenvolvimento Necessrio apenas se opes de compilao especiais foram configuradas. Exigido apenas se opes de compilao especiais foram configuradas. No. Voc deve exclulo se copiar o projeto em um novo diretrio. No. Esse o arquivo que voc vai distribuir. Ele inclui todas as unidades compiladas, formulrios e recursos. No. Esse arquivo gerado automaticamente pelo Delphi, quando voc salva uma nova verso do cdigo-fonte. No. Esse arquivo contm notas para os programadores.

.CFG

.DOF

.DSK

Arquivo de Desktop: contm Desenvolvimento informaes sobre a posio das janelas do Delphi, os arquivos abertos no editor e outros ajustes da rea de trabalho. Aquivo executvel: o aplicativo Compilao: Windows que voc produziu. Ligao (linking)

.EXE Backup do arquivo Pascal Desenvolvimento Pode ser ativado ou desativado atravs do Menu Tools Editor Options - guia display Item: Create backup file. Arquivo da lista to-do, contendo os Desenvolvimento itens relacionados ao projeto inteiro.

.~PA

.TODO

Teclas importantes: Tecla Funo F12 Alterna entre o code editor e o form designer. F11 Alterna entre o code editor, form designer e a oject inspector. F10 Torna o foco para a janela principal. (RUN) Permite compilar e executar o projeto para testes. Este processo gera F9 automaticamente o arquivo .EXE no diretrio onde foi gravado o arquivo de projeto (.DPR). CTRL + F9 Permite compilar o projeto sem executar. Ideal para conferncia de cdigo. Permite alternar entre os formulrios do projeto. SHIFT + F12 Equivalente ao cone View Form na SpeedBar. CTRL + F2 Permite destravar o Delphi em caso de testes onde ocorram excees.

Principais mensagens de erro de compilao:


Undeclared identifier. item. verifique se vrivel e se est declarada, se for comando verifique a grafia, se for objeto verifique se o mesmo existe. ) expected but ; found. existem mais abre parenteses do que fecha parenteses no commando de atribuio.

Delphi 7.0
) expected but THEN found. existem mais abre parenteses do que fecha parenteses na condio do if. := expected but THEN found na atribuio utilizamos := ao invs de =. END expected but ) found existem mais fecha parenteses do que abre parenteses na expresso. Type of expression must be BOOLEAN existe erro na condio. Talvez voc esteja usando := ao invs de =. Missing operator or semicolon verifique se voc no esqueceu o ; a linha anterior. For Loop control variable must be simple local variable. verifique se voc usou := ao invest de = no comando for. For Loop control variable must have ordinal type Verifique se a varivel de controle do comando for um tipo escalar (Integer, por exemplo). Incompatible type Integer and Real o valor atribudo incompatvel com o tipo de varivel ou objeto. ; not allowed before ELSE. no deve haver ponto e virgule antes de Elese. Identifier redeclared. item. verifique se voc no declarou mais de uma vez o item. Unterminated String. verifique se voc no esqueceu de fechar aspas. Illegar character in input file. verifique se voc utilizou o character correto para abrir e fechar aspas.

Debug: Compilador verifica erros Comandos: So termos, palavras reservadas, que servem para transcrever os procedimentos humanos aplicados a uma rotina para linguagem compreendida pelo computador. Palavras reservadas:
And Array As Asm Begin Case Class Const Constructor Destructor Div Do Downto Else End Exports File Finnaly For Function Goto If Implementation In Inherited Initialization Inline Interface Is Label Library Mod Nil Not Object Of On Or Packed Procedure Program Property Raise Record Repeat Set Shl Shr String Then To Try Type Unit Until Uses Var While With Xor

Delphi 7.0
Except

Estruturas: So comandos que dispostos em certa ordem executam uma funo comum. Geralmente as estruturas apresentam um incio e um fim e dentre estes so descritos procedimentos. As estruturas podem ser classificadas em: 1)Estrutura de bloco: a estrutura que controla o projeto e cada procedimento nele descrito, determinando seu incio e fim. O bloco tambm pode conter declaraes de constantes, tipos, variveis, procedimentos, e funes; estas declaraes tm que preceder a parte de declarao do bloco. Esta estrutura sempre composta pelos comandos Begin ... End, onde o primeiro determina o incio da estrutura e o segundo o seu fim. Um ponto e vrgula aps um comando indicam que ainda existem comandos ou declaraes pertencentes a estrutura, porm quando o comando End sucedido do ponto e vrgula indica o fim da estrutura. O uso do ponto ao final aps o End, indica o fechamento do projeto. 2) Estruturas de deciso: Provocam desvios no fluxo do projeto de acordo com a entrada fornecida pelo usurio ou resultante de um clculo. If then-else, Case 3) Estruturas de loop ou lao: Provocam a repetio de um ou vrios procedimentos de acordo com uma condio previamente descrita. For, While, Repeat 4) Estruturas consecutivas: declaraes constituintes. Executa uma sucesso de

5) Estruturas de exceo: Desvia o fluxo do projeto quando ocorre um erro na execuo normal de um programa ou outro evento a interrompa. try-except, finally Componentes Delphi Sero encontradas conforme paletas abaixo:

Regras de nomeao: Label lblNome Edit edtNome Button btnOk

1 Projeto:

Delphi 7.0

2 Projeto:

Comentrios no Delphi: // Comentrio de linha { Comentrio de bloco}

Variveis
So posies definidas na memria (RAM) e reservadas para guardar dados ou resultados de clculos. As variveis podem ser:
Tipo Variant Integer Real ou Double String Boolean ou Lgico Descrio Assume qualquer Assume um valor Assume um valor Assume um valor numrico) Assume um valor valor inteiro real string (alfalgico Exemplo V1: Variant; I: Integer; D: Double; S: string; B:Boolean;

Desvantagens com o uso de Variant, entre elas, o tamanho mnimo de 16 bits para as variveis (tornando-as mais lentas), e tambm o fato de no haver verificaes em modo de compilao quando usamos Variant, podendo surgir Bugs que daremos conta somente em modo de execuo.

Delphi 7.0

Regras bsicas para representar: Inicia sempre por letras, podendo ou no, serem seguidas por outras letras ou nmeros e nunca estaro entre de aspas, no utilizar palavras reservadas. Podem ser de qualquer tamanho. Entretanto, apenas os 63 primeiros caracteres so utilizados pelo compilador. No so permitidos espaos em branco, caracteres especiais. O _ permitido. O compilador no faz distino entre letras maisculas e minsculas. Exemplos: Nome:String; A1:Integer; Preo_de_custo:Currency. Com exceo das variveis do tipo variant, toda varivel possui uma faixa de abrangncia para guardar valores, dependo a capacidade de armazenamento a varivel pode ser:
Varivel Real ou Double Real Real48 Single Double Extended Comp Currency Varivel String Char String / ShortString AnsiString WideString Varivel Lgica Boolean Varivel Integer Integer Shortint Lomgint Byte Word Faixa de abrangncia De -5 * 10324 -2,9 *1039 -1,5 * 1045 -5 * 10324 -3,6 * 104951 -263 + 1 -9 * 1018 At 1,7 * 10308 1,7 * 1038 3,4 * 1038 1,7 * 10308 1,1 * 104932 263 - 1 9 * 1018 Formato Dgitos 11 a 12 com sinal 1112 7 a 8 com sinal 19 a 20 com sinal 19 a 20 com sinal 19 a 20 com sinal 19 a 20 Bits 64 48 32 64 80 64 64

Faixa de abrangncia 1 caractere 255 caracteres Aproximadamente 231 caracteres Aproximadamente 230 caracteres Faixa de valores

Memria ocupada 1 byte De 2 at 256 bytes De 4 bytes at 4 gigabytes De 4 bytes at 4 gigabytes Formato Tipo associado Byte

Verdadeiro 1

False 0

Bits 8

Faixa de abrangncia 1 caracter -128 a 127 - 2.147.483.648 a 2.147.483.647 0 a 255 0 a 65.535

Memria ocupada 2 bytes 1 byte 32 bits 8 bits 16 bits

Importante: Entrada de Dados Processamento de Dados em informaes 10

Delphi 7.0 Sada de Informaes Declaraes de variveis no Delphi: 1 - Varivel Local : S acessvel dentro do procedimento onde est declarada; terminando o procedimento ela desaparecer da memria. 2- Varivel da Unit: ser utilizada por todos os procedimentos e funes da unidade. declarada logo aps a palavra reservada implementation. 3- Varivel Global: a varivel que poder ser utilizada por toda a aplicao, ou seja, poder ser utilizada por outras unidades. declarada na seo interface da unidade.

Varivel Global Varivel da Unidade

Varivel Local

Essas variveis podem ser usadas em todo o formulrio, enquanto que as locais s podem ser usadas na procedure em que foram declaradas. Se duas variveis foram declaradas com o mesmo nome, sendo uma local e outra global, o Delphi prioriza a local. Recomenda-se no utilizar o mesmo nome.

11

Delphi 7.0

Operadores: So smbolos ou expresses capazes de gerar um clculo lgico ou aritmtico. Os operadores so classificados segundo seu clculo, podendo ser: Atribuio: Atribuir valores a uma varivel ou propriedade de um objeto; Aritmtico: Efetuam clculos aritmticos; Lgicos: Efetuam clculos lgicos; Relacionais: Efetuam clculos relacionais; Set: So operadores predefinidos em funes; ou @ retorna o endereo de uma varivel, funo, procedimento ou mtodo. Operadores de atribuio:

Operadores aritmticos:
Operador + * / Div Mod Exp (Ln(x) *n)
4

Operao Adio de inteiros e reais Subtrao de inteiros e reais Multiplicao de inteiros e reais Diviso que resulta em quociente real Diviso que resulta em quociente inteiro Resto da diviso de valores inteiros Exponenciao de valores reais, em que x elevado a n

Tipo do operando Inteiro, real Inteiro, real Inteiro, real Inteiro, real Inteiro Inteiro Real

Tipo Resultante Inteiro, real Inteiro, real Inteiro, real Real Inteiro Inteiro Real

Exemplo X+Y Result - 1 P * 45 X/2 Total div x Y mod 6 Exp(ln(3)* x)

3 = exp (4 * ln (3)) ou utilize a funo Power (x,n) acrescentar a classe math no uses. Observao: O operador + quando utilizado com dados string provocar a concatenao destes. Exemplo: 5 + 5 = 55 Operadores lgicos:
Operad or Not And Or Operao negao conjunco disjuno Tipo do operando Boolean Boolean Boolean Tipo Resultante Boolean Boolean Boolean Exemplo not (C in MySet) D and (T > 0) A or B

Operadores relacionais:
Operad or = <> > < Operao igualdade desigualdade maior que menor que Tipo do operando simple, class, class reference, interface, string, packed string simple, class, class reference, interface, string, packed string simple, string, packed string, PChar simple, string, packed string, PChar Tipo Resultante Boolean Boolean Boolean Boolean Exempl o A=I X<>Y X>Y X<Y

12

Delphi 7.0
>= <= maior ou igual menor ou igual simple, string, packed string, PChar simple, string, packed string, PChar Boolean Boolean X>=Y X<=Y

As Units
Um programa em Object Pascal constitudo de um mdulo principal (.DPR) e de uma ou mais unidades de compilao (.PAS). O compilador gera um arquivo com o cdigo objeto correspondente, e considera o mesmo nome do arquivo .PAS com a extenso .DCU. As units so entidades independentes, ou seja, no momento da criao no h vnculo lgico (nem fsico) entre uma unit e um programa principal que a utiliza. Com esta caracterstica, podemos utilizar as units em qualquer projeto. A principal caracterstica do conceito de unit que possibilita estruturar o programa em mdulos funcionais, com cada unit provendo um conjunto de funes e procedimentos. Cada formulrio corresponde a uma unit. Mas, podemos criar units independentes, no associadas a um form. Se considerarmos o cdigo uma unit com um componente Button e um manipulador de evento, teremos o seguinte cdigo:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; 3 -Varivel Global type TForm1 = class(TForm) Button1: TButton; 2procedure Button1Click(Sender: TObject); Varivel da Unidade private { Private declarations } public { Public declarations } 1- Varivel Local end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Form1.Caption := 'Curso de Delphi'; Showmessage('Exemplo de caixa de dilogo'); end; end.

Uma unit possui cinco partes: 13

Delphi 7.0

Cabealho
Contm a palavra reservada unit seguida de um identificador que o nome da unit. Este nome o mesmo nome do arquivo com extenso .PAS
unit Unit1;

Interface
Contm tudo o que a unit exporta: constantes, tipos, variveis, procedimentos, funes, etc... Na declarao dos procedimentos e funes que a unit exporta, deve constar apenas o cabealho (nome e parmetros). A declarao completa fica na parte da implementao.
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1;

Implementao
Contm a definio completa das funes e procedimentos que constam na interface. Se na implementao so usados identificadores definidos em outra unit, o nome desta outra unit deve ser includo na lista de units da clusula uses da implementao.
implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Form1.Caption := 'Curso de Delphi - SENAC MG'; Showmessage('Exemplo de caixa de dilogo'); end;

Inicializao
uma parte opcional. Quando usada, no pode conter nenhuma declarao. Apenas comandos so permitidos nesta parte. Ela comea com a palavra initialization, e os comandos de inicializao so executados antes do programa comear.
initialization <comandos>

Finalizao
tambm uma parte opcional, com uma observao: ela s pode existir se na unit houver tambm uma parte de inicializao e s pode conter comandos, que sero executados dentro do processo de finalizao do programa, aps a execuo do programas principal.
finalization <comandos>

14

Delphi 7.0 Toda unit termina com a palavra end seguida de um ponto final (.). 3 Projeto: Linguagem orientada a objeto Para entender o funcionamento de uma linguagem orientada a objeto, imagine a seguinte proposio: Em uma rua movimentada foi colocado um semforo para controlar o trfego de veculos e prximo a este existe uma cabine de onde um agente o trnsito determina o momento em que as luzes devero ser acesas. Assim de acordo com o boto pressionado pelo agente de uma determinada luz do semforo ascende e as demais apagam. Podemos ento dizer que cada boto um objeto utilizado pelo agente, da mesma forma, o semforo tambm pode ser considerado como objeto. Se o semforo um objeto ento ele possui algumas propriedades, por exemplo: o semforo possui luzes que podem ascender em cores distintas desse modo cor seria uma propriedade do semforo e a cor acessa seria sua caracterstica.

Indicar a situao no label conforme semforo.

Resumindo:
Objeto Button1 Button2 Button3 Propriedade Caption = Verde Caption = Amarelo Caption = Vermelho Evento OnClick OnClick OnClick Procedimento Panel1.Color:=clgreen; Panel1.Color:=clyellow; Panel1.Color:=clred;

Funes de Converso
A funo StrtoInt necessria para transformar um caracter em nmeros inteiros, podendo ento ser efetuado clculos. A funo InttoStr transforma um nmero inteiro em caracter, possibilitando a atribuio a propriedade caption do label por exemplo. A procedure Val necessria para transformar String em nmero, real ou inteiro, podendo ento estar num clculo matemtico.

15

Delphi 7.0 Val (Primeiro Argumento, Segundo Argumento, Terceiro Argumento); Primeiro Argumento Corresponde varivel do tipo string ou campo string a ser convertido Segundo Argumento corresponde varivel que receber o contedo convertido, devendo essa varivel ser do tipo real. Terceiro Argumento Corresponde varivel do tipo inteiro que receber um dgito de controle. A procedure Str transforma um nmero real em caracter, possibilitando a atribuio a propriedade caption do label. Str (Primeiro Argumento, Segundo Argumento); Primeiro Argumento- corresponde varivel do tipo real que ser convertida em string. Segundo Argumento a varivel que receber o contedo convertido, devendo essa varivel ser do tipo string. FormatFloat (mscara, varivel ) melhora utilizada para formatar numricos reais. FormatFloat (#,##0.00) # supresso de zeros , separao de milhares . separao para casas decimais A funo StrtoFloat necessria para transformar um dado String em Ponto Flutuante, podendo ento ser efetuado clculos. A funo FloattoStr transforma um dado Ponto Flutuante em String, possibilitando a atribuio a propriedade caption do label por exemplo. Funo StrToInt(const S: String) IntToStr(value: Integer) StrToFloat(const S: String) FloatToStr(Value: Extended) DateToStr(Date: TdateTime) DateTimeToStr(DateTime: TDateTime) StrToDate (const S: String) StrToDateTime(const S: String) FormatFloat(const Format: string; Value: Extended): string 4 Projeto Objetivo Converte um dado String em tipo Inteiro. Converte um dado Inteiro em tipo String. Converte um dado String em tipo Ponto Flutuante. Converte um dado Ponto Flutuante em tipo String. Converte um dado TDateTime em String. Converte um dado TDateTime em String. Converte um dado String em tipo TDateTime. Converte um dado String em tipo TDateTime Permite formatar um tipo ponto flutuante retornando uma string.
Edit2.Text := FormatFloat('###,###.00',soma);

a apresentao visual de valores numricos ,

Sendo soma uma varivel real.

16

Delphi 7.0

Dgito de controle 5 casas inteiras, 2 esto sendo usadas para casas decimais

Str (sl, retorno)

Formatao nmerica

TOMADAS DE DECISES
Desvio condicional simples - if then If (condio) then {instruo executada se a condio for verdadeira}; {instruo para condio falsa ou aps ser verdadeira}; Caso venha a existir mais de uma instruo verdadeira para uma determinada condio, estas, como j mencionado, devero estar inseridas em um bloco, como indicado a seguida. Observe que considerado um bloco o conjunto de instrues entre um begin e um end. if (condio) then begin {Blocos de comandos executado se a condio for verdadeira}; end; {instruo para a condio falsa ou aps ser verdadeira}; 17

Delphi 7.0

Desvio condicional composto If...then...Else If (condio) then {instruo executada se a condio for verdadeira}; Else {instruo executada se a condio for falsa}; {instruo para a condio falsa ou aps ser verdadeira}; Caso venha a existir mais de uma instruo verdadeira ou falsa para uma determinada condio, elas devero estar inseridas em um bloco, como indicado em seguida: if (condio) then begin {Blocos de comandos executado se a condio for verdadeira}; end else begin {Bloco de comandos executados se a condio for falsa}; end; {instruo para condio falsa ou verdadeira};

Caso voc no queira executar qualquer comando se a condio for falsa, suprima toda a clusula else : if(condio) then begin {Bloco de comandos executados se a condio for verdadeira} end; Note que o end que precede a clausula else no seguido de ;. Note que as clusulas begin e end s so necessrias para blocos com mais de uma linha. Existem ocasies em que necessrio trabalhar com o relacionamento de duas ou mais condies ao mesmo tempo na mesma instruo If...then, efetuando, desta forma, testes mltiplos. Para esses casos necessrio trabalhar com a utilizao de operadores lgicos, tambm conhecidos como operadores booleanos. Operadores lgicos: not (1), and (2) e or (3); Utilizar parnteses. Ordem = matemticos, relacionais e lgicos...

Desvio Condicional Encadeado If...Then... If (condio a ) then If (condio b) then

If..Then..Else..If...Then...Else .. Else

18

Delphi 7.0 {instruo executada se a condio b for verdadeira} Else {instruo executada se a condio b for falsa}; If (condio c) then {instruo executada se a condio c for verdadeira} Else {instruo executada se a condio c for falsa} Else {instruo executada se a condio a for falsa};

Desvio condicional Seqencial If.. Then... If...Then If (condio a) then {instruo executada se a condio a for verdadeira}; If (condio b) then {instruo executada se a condio b for verdadeira}; If (condio c) then {instruo executada se a condio c for verdadeira}; If (condio d) then {instruo executada se a condio d for verdadeira} Else {instruo executada se a condio d for falsa}; Mais Componentes do Delphi:

CheckBox - Permite mais de uma escolha. - Propriedades : Checked, se tiver selecionado retorna o valor true, se estiver em branco retorna o valor false State: cbUnchecked (desmarcado), cbChecked (marcado), cbGrayed (marcado, mas em cinza). AllowGrayed: se for configurado como False, s permite que a propriedade State tenha dois estados (cbUnchecked ou cbChecked), se for configurado como True, os trs estados (cbUnchecked, cbChecked e cbGrayed). Visible, atribudo o valor true fica visvel, se false fica invisvel. Enabled, atribudo o valor true fica habilitado, false fica desabilitado. Name, chkOpcao1

RadioButton - Permite apenas uma escolha. -Propriedades: Checked, se tiver selecionado retorna o valor true, se estiver em branco retorna o valor false Visible, atribudo o valor true fica visvel, caso contrrio no aparece. Name, rdbOpcao1 19

Delphi 7.0

RadioGroup Agrupar de forma inteligente vrios RadioButtons -Propriedades: Checked, se tiver selecionado retorna o valor true, se estiver em branco retorna o valor false Visible, atribudo o valor true fica visvel, false no aparece. Enabled, atribudo o valor true fica habilitado, false fica desabilitado Name, rdgOpcoes Items -TStrings... ,trabalha com ndex sendo, -1 (nenhuma opo), 0 (primeira alternativa), 1 (segunda alternativa) e assim consecutivamente. ItemIndex, valor da opo selecionada

5 Projeto: Trabalhando com objetos: Execute 3 projetos com cores primrias.

Lembrando das propriedades do label: Autosize = false ou alterar na programao Widht e Height

Misturar as cores ou apenas desabilitar a

caixa de opo

Estrutura de Controle com mltipla escolha case-of


case varivel of opo 1: operao 1; opo 2: operao 2; opo 3: operao 3; else {instruo executada se as condies forem falsas}; 20

Delphi 7.0 end; O comando case um substituto mais elegante e mais legivel para if-then-else mltiplos. A expresso (ou seletor) dever ser de tipo com o tamanho mximo de 2 bytes (Byte, Char,Word ou Integer) . Segue-se um exemplo : case Ch of 'A'..'Z', 'a'..'z' : WriteLn('Letra'); '0'..'9' : WriteLn('Digito); '+', '-', '*', '/' : WriteLn('Operador'); else WriteLn(' Caracter Especial'); end;

Mais Componentes: Memo Semelhante a uma caixa de edio, porm maior. Para usar o memo basta clicar e digitar. Objeto do tipo TStringList permitem os mtodos: Add, Delete, clear, etc. -Propriedades: Lines, cada linha identificada por um ndice na propriedade lines, sendo considerada a primeira linha o valor 0. Memo1.Lines (0) Font, pode alterar em tempo de execuo. Scrollbars, barra de rolagem Name, mmMemo

ListBox Semelhante ao memo, os mtodos afetam a propriedade items. Objeto do tipo TStringList permitem os mtodos: Add, Clear, Count, Delete, etc -Propriedades: Items, cada linha identificada por um ndice, o primeiro item possui ndice zero.
ListBox1.Items [0] nmero do ndice

Scrollbars, barra de rolagem MultiSelect, true pode ser mltipla escolha. Name, lstNomes O valor ItemIndex retorna o ndice do item selecionado pelo mouse em tempo de execuo, o que proporciona um uso interessante do objeto ListBox como elemento que registra as escolhas do usurio.
ItemEscolhido := ListBox1.ItemIndex; ListBox1.Items.Delete (listbox1.itemindex nmero do ndice)

ListBox1.Items.Add (listbox2.Items [listbox2.ItemIndex]) ListBox1.Items.Add (listbox2.Items [indice]) Um detalhe interessante que quando o ItemIndex vale -1 significa que nenhum item est selecionado. 21

Delphi 7.0

ComboBox Funciona de modo parecido com o ListBox, porm possui aparncia de uma caixa de edio, os mtodos afetam as propriedades items. Objeto do tipo TStringList permitem os mtodos: Add, Clear, Count, Delete, etc Possui a propriedade Text, que natural de um objeto do tipo Edit. -Propriedades: Items, cada linha identificada por um ndice, o primeiro item possui ndice zero. Name, cmbEscolha ItemIndex, valor do ndice. Text, funciona como uma caixa de texto

6 Projeto

Mais Componentes:

Image localizada na paleta Additional, permite a exibio de figuras de diversos formatos: bmp, jpg e outros. Mtodos do objeto Picture que permite carregar uma imagem em um arquivo de disco, para dentro do componente. Image1.picture.loadfromfile (c:\figura.bmp) Mtodo do objeto Picture que permite salvar a imagem contida no componente em um arquivo de disco. Image1.picture.savetofile (c:\figura.bmp) 22

Delphi 7.0

Objeto MaskEdit (Caixa de edio com mscara) Permite entrada de dados texto em uma linha, utilizando uma mscara de edio. Possui todas as propriedades do componente Edit.
Propriedades: CharCase Define o tipo dos caracteres.
Utilizao na mscara

! > < <> \ L l A a C c 0 9 # : /

Causa a digitao da mscara fique parada no primeiro caracter, fazendo com que os caracteres digitados que se movam. Ex: !;0;_ Todos os caracteres digitados sero convertidos para maisculas. Ex: >aaa;0;_ Todos os caracteres digitados sero convertidos para minsculas. Ex: <aaa;0;_ Anula o uso dos caractes > e <. Ex: >aaa<>aaa;0;_ Utilizado para marcar determinado caracter no especial como fixo. Ex: !\(999\)000-0000;0;_ Requer somente caracteres alfabticos obrigatrios para a posio, do tipo A-Z, a-z. Ex: LLL;1;_ Permite somente caracteres alfabticos para a posio, mas no-obrigatrios, do tipo A-Z, a-z. Ex: lll;1;_ Requer somente caracteres alfanumricos obrigatrios para a posio, do tipo A-Z, a-z, 0-9. Ex: AAA;1;_ Permite somente caracteres alfanumricos para a posio, mas no-obrigatrios, do tipo A-Z, a-z, 0-9. Ex: aaa;1;_ Requer um caracter obrigatrio para a posio. Ex: CCC;1;_ Permite o uso de qualquer caracter para a posio, limitando apenas o nmero de caracteres utilizados. Ex: ccc;1;_ Requer somente caracteres numricos obrigatrios para a posio, do tipo 0-9. Ex: 000;1;_ Permite somente caracteres numricos para a posio, no-obrigatrios, do tipo 0-9. Ex: 999;1;_ Permite somente caracteres numricos para a posio e o uso dos sinais de - ou +, no-obrigatrios. Ex: ###;1;_ Utilizado como separador de horas, minutos e segundos. Utilizado como separador de dia, ms e ano.

EditMask Permite definir uma mscara para entrada de dados. PasswordChar Define um caracter para ocultar a entrada de dados.
Exemplos de Mscaras:
Tipo Telefone CEP Hora Mscara !\(999\)000-0000;1;_ 00000\-9999;0;_ !90:00:00 >LL;0;_ Entrada 0613873350 73015020 100043PM Formatao (061)3873350 73015-020 10:00:43 PM Sada (061)387-3350 73015020 22:00:43

Caixas de Dilogo predefinidas


Funo ShowMessage ShowMessage (Campo Obrigatrio!);

23

Delphi 7.0

Funo MessageBox A funo MessageBox, retorna janelas de mensagens como as do Windows, com cones para cada tipo de mensagem. Ela possui a seguinte sintaxe: Messagebox(nmero, mensagem, ttulo, tipo); Veja os detalhes de cada parmetro da funo:

Nmero: Identifica se a janela da mensagem pertencer ao formulrio da aplicao(a janela ser modal), caso o parmetro receba um valor nulo, a janela no ser modal. Por exemplo, se no parmetro for colocado form1.Handle, a janela ser modal, se no parmetro for colocado 0, a janela no ser modal. Uma janela de mensagem sempre ter que ser modal. Mensagem: O texto que ser mostrado na mensagem; Ttulo: O texto que ser mostrado na barra de ttulo da janela de mensagem; Tipo:Conjunto de nmeros que identificaro quais sero os botes e cones que sero mostrados na mensagem.

Veja na tabela abaixo os valores que podem ser colocados nos parmetros nmero e tipo da funo MessageBox: Em vez de nmero pode Valor 0 1 2 3 4 5 16 32 48 64 0 256 512 0 4096 Descrio Mostra o boto OK Mostra os botes OK e Cancela Mostra os botes Anular, Repetir e ignorar Mostra os botes Sim, No e Cancelar Mostra os botes Sim e No Mostra os botes Repetir e Cancelar Mostra cone de parada crtica Mostra cone de interrogao Mostra cone de exclamao Mostra cone de informao Coloca o 1 boto em foco Coloca o 2 boto em foco Coloca o 3 boto em foco Coloca a janela de forma modal Coloca a janela de forma no modal 24 ser utilizado o texto mb_ok mb_okCancel mb_AbortRetryIgnore mb_YesNoCancel mb_YesNo mb_RetryCancel mb_iconstop mb_iconquestion mb_iconexclamation mb_iconinformation mb_defbutton1 mb_defbutton2 mb_defbutton3 mb_applmodal mb_systemmodal

Delphi 7.0 Idntico ao zero, s que o parmetro nmero tem que ter o valor zero

8192

mb_taskmodal

Vejamos um exemplo do uso da funo MessageBox. No Delphi inicie uma nova aplicao, no form coloque um componente button. No evento OnClick do componente button, escreva o seguinte cdigo: messagebox(form1.handle,'Curso de Delphi','Informao',0+48); Entendo o cdigo: O parmetro nmero recebeu o handle do formulrio, assim a janela ser modal e o usurio ter que clicar em algum boto da janela para voltar a anterior(form1). O parmetro mensagem recebeu o valor 'Curso de Delphi', que o texto exibido na mensagem. O parmetro ttulo recebeu o valor 'informao', que o texto exibido na barra de ttulo. O principal o parmetro tipo, que recebeu os valores 0 e 48, assim o boto OK ser exibido por causa do valor zero e o cone de exclamao ser mostrado por causa do valor 48. O cdigo tambm poderia ser escrito da seguinte forma: messagebox(form1.handle,'Curso de Delphi','Informao', mb_ok+mb_iconinformation); Veja na figura abaixo, a mensagem sendo exibida, aps o clique no boto:

Como poderemos saber se algum boto foi realmente clicado? Essa pergunta fcil de responder, pois cada boto possui um cdigo. Assim podemos fazer um tratamento na aplicao aps algum boto da mensagem ser clicado. Veja na tabela abaixo os cdigos de cada tipo de boto: Cdigo 1 2 3 4 5 6 7 Boto Boto Ok Boto Cancelar Boto Anular Boto Repetir Boto Ignorar Boto Sim Boto No

Vamos a um exemplo. No Delphi, inicie uma nova aplicao, coloque um componente button e um componente edit no form. Arrume-o conforme a figura abaixo:

25

Delphi 7.0

Altere a propriedade enabled do componente edit para false. No evento Onclick do componente button escreva o seguinte cdigo: edit1.Enabled:=false; if messagebox(0,'Habilitar edit?','Pergunta',mb_yesno+mb_iconquestion)=6 then begin edit1.Enabled:=true end else edit1.Text:='Curso de Delphi' end; Funo MessageDlg A funo MessageDlg parecida com a funo MessageBox, mas o ttulo da janela de mensagem e os botes no podem ser colocados em portugus, ao contrrio da funo MessageBox. Veja a sintaxe da funo: MessageDlg(mensagem,cone,boto,ajuda); Veja os detalhes de cada parmetro: Mensagem: Texto que ser exibida na mensagem; cone: cone que ser mostrado na janela de mensagem; Boto: Botes que sero mostrados na janela de mensagem; Ajuda: Nmero de arquivo de ajuda do programa(opcional); Veja na tabela abaixo, os valores dos parmetros cone e boto que a funo pode receber: Valor mtWarning mtError mtInformation mtConfirmation mtCustom [mbok] [mbcancel] [mbAbort] Descrio Mostra cone de exclamao Mostra cone de erro (X) Mostra cone de informao Mostra cone de pergunta No mostra cone Mostra o boto OK Mostra o boto Cancel Mostra o boto Abort 26

Delphi 7.0 Mostra o boto Yes e No Mostra o boto Yes, No e Cancel Mostra o boto Ok e Cancel Mostra o boto Abort, Retry e Ignore ( Sair, Repetir e mbAbortRetryIgnore ignorar) Vamos a um exemplo. No Delphi inicie uma nova aplicao e no form insira um objeto button. No seu evento OnClick escreva o seguinte cdigo: Messagedlg('Cuidado! FUMAR faz mal para sade',mtwarning,[mbok],0); Notem que no parmetro ajuda, o valor zero, pois no temos nenhum arquivo de ajuda para utilizar. Veja na figura abaixo a mensagem exibida aps o clique no boto. [mbno, mbyes] mbYesNoCancel mbOkCancel

Bem, como poderemos saber qual o boto for clicado? Com a funo MessageDlg ao invs de cada boto ter um cdigo, voc utiliza a palavra mr mais o nome do boto que est sendo utilizada na funo, por exemplo: mrno (o boto 'No' foi clicado). Na funo messagebox o mesmo processo pode ser utilizado. if messagedlg('ol mundo',mtinformation,[mbno, mbyes],0)=mryes then edit1.text:='Curso de Delphi' Se o boto yes foi clicado (=mryes), a propriedade text do componente edit alterada. Funo InputBox(titulo,label,valor); Veja o que significa cada parmetro: Ttulo: Texto que ser mostrado na barra de ttulo; Label: Texto que ser mostrado na mensagem; Valor: Valor a ser inserido na caixa de texto; A funo InputBox mostra uma janela com um label e uma caixa de texto. Nessa caixa de texto entramos com os dados. Criamos uma varivel do tipo string, que receber o valor digitado na caixa de texto da mensagem.

27

Delphi 7.0

ESTRUTURA DE REPETIO (for-to, for-downto) for contador:=valor_inicial to valor_final do begin {bloco_de_comandos} end; onde : contador uma varivel inteira; valor_inicial o valor inicial do contador, que dever ser um nmero inteiro; valor_final o valor final (para o qual o lao se encerrar) a ser assumido pelo contador, deve ser inteiro; Se se desejar que o contador assuma valores decrescentes deve-se usar a seguinte sintaxe : for contador:=valor_inicial downto valor_final do begin {bloco_de_comandos} end; Note que as clusulas begin e end s so necessrias para blocos com mais de uma linha. 7 Projeto Elaborar um programa para calcular e exibir a soma de todos os valores de uma lista.

ESTRUTURA DE REPETIO while-do while (condio) do begin 28

Delphi 7.0 {instruo para condio verdadeira}; end; Note que o bloco_de_comando executado enquanto a expresso_booleana for verdadeira. Note que como a expresso_booleana avaliada antes da execuo do bloco_de_comando, se a expresso_booleana for falsa o bloco_de_comando no ser executado nenhuma vez. Note que as clusulas begin e end s so necessrias para blocos com mais de uma linha. ESTRUTURA repeat-until Repeat { bloco_de_comando at que a condio seja verdadeira}; untill (condio); Note que o bloco de comando executado em sequncia, enquanto a expresso_booleana for verdadeira. Note que o bloco de comando executado pelo menos uma vez, j que a expresso_booleana avaliada depois dele. Note que bloco_de_comando pode exigir as clusula begin e end se contiver mais de uma linha. 8 Projeto Apresentar como resultado o valor de uma potncia de uma base qualquer elevada a um expoente qualquer, sendo a varivel B a base e a varivel E o expoente. No utilize as funes trigonomtricas; resolva o exerccio com a utilizao das tcnicas de lao.

Componente Menu Menu- O componente mainmenu ficar invisvel durante a execuo da aplicao. -propriedades: Items, ou duplo clique aparecer a tela abaixo. Caption, define o nome do item do menu, quaisquer nomes so vlidos, acentos e o caracter & (para que a letra seguinte em conjunto com a ALT acessem a opo de menu) Enabled, define se o item est disponvel ou no para o usurio. Shortcurt, tecla de atalho (alm da escolhida com &). Name, mnMenu

29

Delphi 7.0 Para criar um submenu, clique na opo Tabela por exemplo, clique com o boto direito do mouse, aparecer um menu pulldown, clique na opo Create Submenu. Digite na propriedade caption.

Trabalhando com vrios formulrios


-Propriedades BorderIcons: biSystemMenu:, biMinimize, biMaximize; WindowState: wsNormal, wMaximized, wsMinimized. -Eventos OnCreate: chamado quando o formulrio criado (automaticamente ou manualmente). Este evento muito usado para realizar a inicializao de variveis ou outras operaes que devem ser realizadas logo no nicio da execuo. OnShow: chamado quando o formulrio mostrado na tela, geralmente usando os mtodos show ou showmodal. OnClose: ocorre quando o formulrio fechado pelo usurio, ou usando o comando close. Este evento pode ser usado para liberar variveis. -Mtodos: Close, fecha o formulrio. Se o formulrio for o principal o aplicativo encerrado. Show, mostra o formulrio na tela. A execuo do aplicativo continua (no bloqueada). ShowModal, mostra o formulrio na tela, mas bloqueia a execuo do aplicativo at que o formulrio seja fechado. Especificando o formulrio principal Todo aplicativo criado no Delphi deve ter um de seus formulrios definidos como formulrio principal. O formulrio principal o formulrio que criado e exibido primeiro no aplicativo. esse formulrio, geralmente, o que contm a barra de menus, barra de ferramentas e outros componentes importantes que so usados por vrios formulrios secundrios. Como padro, o

30

Delphi 7.0 Delphi define o primeiro formulrio adicionado como o formulrio principal, mas isso pode ser alterado facilmente. Para definir um formulrio como o formulrio principal: 1. Escolha o comando Project / Options. 2. Na guia Forms, escolha o formulrio da lista ao lado de Main form.

Ligando Formulrios necessrio ligar formulrios para que o cdigo de um formulrio possa ter acesso aos componentes do outro. Voc cria uma ligao entre formulrios adicionando referncias aos formulrios nas clusulas uses das Units. Essas referncias podem ser adicionadas manualmente, ou atravs de um comando de menu. Para se Para se ligar um formulrio a outro formulrio: 1- Selecione o formulrio que precisa se referir a outro formulrio. 2- Escolha o comando File/ Use unit e escolha o formulrio a ser referenciado.

Quando voc liga um formulrio a outro, o Delphi acrescenta o nome da Unit do outro formulrio clusula uses do formulrio ativo. O Delphi altera o cdigo conforme abaixo. Sub-rotina 31

Delphi 7.0

Visualizar os demais formulrios do projeto Delphi, selecione o Menu View/ Forms. Selecione o formulrio, a unit correspondente aberta junto com o formulrio. Ctrl + F12

SUB-ROTINAS : Procedure e Functions


O ambiente de programao Delphi, por ser orientado a objeto, exige que os programas nele escritos sigam o conceito de programao estruturada. Assim sendo, o ambiente baseado em sub-rotinas. Procedimentos e funes so blocos de cdigo (rotinas) em Object Pascal que podem ou no receber parmetros (valores) para processamento. Uma vez definida a rotina pode-se ativa-la de diversas partes do programa atravs de seu nome. A grande diferena entre as formas de definio destas rotinas (se procedimentos ou funes) est no fato de que: Procedimento pode ou no retornar um valor aps seu processamento e Funo Sempre retorna valor aps seu processamento.

32

Delphi 7.0

Procedures,

so usadas para dividir um programa em blocos menores e armazenar trechos de cdigos que podem ser chamados inmeras vezes durante a montagem de um programa. Sintaxe: Procedure nome (parmetros); var variveis begin {instrues} end; Uma procedure, obrigatoriamente deve possuir um nome, sendo opcional o uso de parmetros.

Declarao e ativao de procedimento


Podemos declarar um procedimento da seguinte maneira maneira: Dentro da clusula private ou public, defina a declarao do procedimento:
procedure Soma(X, Y: String);

Com o cursor posicionado na mesma linha, pressione: CTRL+SHIFT+C e perceba que o prprio Delphi realiza a construo do procedimento dentro da clusula implementation. Esse recurso chamado Class Completion. Nossa tarefa apenas definir o cdigo a ser realizado pelo procedimento.
procedure TForm1.Soma(X, Y: String); begin Label1.Caption := FloatToStr(StrToFloat(X)+StrToFloat(Y)); end;

Supondo a existncia de dois componentes Edit, um componente Button e um componente Label, este cdigo pode ser ativado da seguinte forma:
procedure TForm1.Button1Click(Sender: TObject); begin Soma(Edit1.Text, Edit2.Text); end;

Functions, possui uma estrutura muito semelhante Procedure e usada com


a mesma finalidade, porm com um diferencial: a funo deve retornar um valor, sendo que esse valor pode ser atribudo a uma varivel no programa chamador. Sintaxe: Function nome (parmetros) : tipo de retorno; var Variveis begin {instrues} end;

33

Delphi 7.0

Ao ser retornado um valor por funo, ele estar associado a um determinado tipo de dado (integer, real, string, boolean, etc.) que ser associado clusula tipo de retorno. O uso de parmetros tambm opcional em uma funo. Podem, tambm, com uma funo, entrar parmetros de um tipo de dado e ser retornado um valor para a funo de outro tipo de dado.

Declarao e ativao de Funes


A construo de funes tem o mesmo raciocnio diferindo na caracterstica de retorno da funo. Podemos declarar um procedimento da seguinte maneira maneira: Dentro da clusula private ou public, defina a declarao da funo:
function Subtrai(X, Y: String): String;

Observe que agora, depois dos parmetros h um tipo de definio de retorno da funo (String). Pode-se utilizar a mesma dica de construo do procedimento, na linha da declarao tecle CTRL+SHIFT+C (Class Completion) e perceba que o prprio Delphi realiza a construo da funo dentro da clusula implementation. Nossa tarefa apenas definir o cdigo a ser realizado pela funo.
function TForm1.Subtrai(X, Y: String): String; begin result := FloatToStr(StrToFloat(X)-StrToFloat(Y)); end;

A palavra reservada result o recurso usado pela Object Pascal para estabelecer o retorno da rotina. No se deve declarar esta varivel, ela declarada no momento da utilizao da funo. Supondo a existncia de dois componentes Edit, um componente Button e um componente Label, esta funo pode ser ativada da seguinte forma:
function TForm1.Button2Click(Sender: TObject); begin Label1.Caption := Subtrai(Edit1.Text, Edit2.Text); end;

Neste caso, o Neste caso, o Label recebe o result de subtrai, ou seja, a subtrao dos dados passados nos parmetros.

Procedures passagem de parmetros


O uso da passagem de parmetros em uma sub-rotina tem por finalidade servirr como um ponto de comunicao bidirecional entre uma sub-rotina e o programa principal, ou com uma outra rotina hierarquicamente de nvel mais alto. Desta forma, possvel passar valores de uma sub-rotina outra sub-rotina e vice-versa, por meio do uso de parmetros. So dois os tipos de passagem de parmetros utilizados: por valor e referncia.

Passagem de parmetros por Valor (entrada)


34

Delphi 7.0
A passagem de parmetro por valor caracteriza-se como uma passagem na qual uma informao passada a uma sub-rotina, que efetuar o processamento com essa informao e manter qualquer alterao dentro da sub-rotina chamada, ou seja, o processamento executado somente dentro a sub-rotina, ficando o resultado obtido preso na sub-rotina. 9 Projeto

Recebe na sua varivel X o valor da varivel N

Recebe o nmero do usurio e processa a procedure Fatorial

Fatorial de 5

5! = 1 2 3 4 5 = 120 - Teste seu programa!!!

Passagem de Parmetro por Referncia (entrada/ sada)


Caracteriza-se por devolver rotina chamadora uma determinada informao. Como exemplo desse tipo de parmetro, consider a necessidade de fazer uma rotina para calcular o valor do fatorial de um nmero qualquer. Os parmetros de entrada no podem ser alterados pelo procedimento, para que isto seja possvel o parmetro deve ser de ENTRADA/ SADA. Para indicar que um parmetro de Entrada/ Sada devemos colocar a palavra var antes da sua declarao. As variveis passadas aos procedimentos so associadas aos parmetros do procedimento de acordo com a ordem das variveis e da lista de parmetros. 10 Projeto

35

Aps a chamada da sub-rotina Fatorial, o valor da varivel N passado para a varivel X, e o valor da varivel FAT (no momento da chamada no tinha valor definido) passado para F.

Delphi 7.0

Sero passados dois parmetros, um por valor N e por referncia, FAT.

Variveis Globais e Locais :


Aconselha-se trabalhar com variveis locais, utiliza muito menos espao de memria. exatamente devido a esta caracterstica que existem as passagens de parmetros entre sub-rotinas. A abragncia de uma varivel est vinculada sua visibilidade (Global ou Local) em relao s sub-rotinas de um programa, ou seja, sua hierarquia. Uma varivel pode ser considerada global para todas as sub-rotinas inferiores a uma rotina principal, e dentro de uma dessas sub-rotinas a mesma varivel pode estar sendo utilizada como uma varivel local.

Chamada de Forms
Uma caracterstica importante da apresentao dos formulrios em uma aplicao, o fato de ser apresentado como MODAL ou NO-MODAL. H dois mtodos para executar a visualizao, mas antes vamos entender como isso funciona. MODAL O foco fica preso no formulrio e no liberado para outro form at que ele seja fechado. O usurio pode ativar outra aplicao do Windows, mas no poder trabalhar em outra janela daquele programa cuja janela foi aberta como modal (at que seja fechada). NO MODAL O foco pode ser transferido para outra janela sem que esta precise ser fechada.

36

Delphi 7.0
Entendido este conceito, os mtodos que o Delphi utiliza para apresentar os forms so: Show para apresentar forms NO-MODAIS, ou ShowModal para apresentar forms MODAIS

Criando e Destruindo Forms


Como j foi visto neste exemplo anterior, os formulrio so, por padro, autocriados pelo Delphi. Isso pode trazer alguns incovenientes em projetos maiores, imagine o Delphi ao iniciar o arquivo executvel tentar carregar 50 formulrios para a memria principal... O primeiro passo tirar o formulrio da lista Auto-Create e passa-lo para a lista Available forms atravs do menu Project | Options. Depois devemos definir o cdigo de chamada do form e de liberao de memria do form chamado. Supondo o seguinte exemplo: Dois formulrios: um chamado UFrmPrincipal e outro UFrmSegundo, sendo que o principal faz uma chamada ao form secundrio atravs de um button, o cdigo seria o seguinte:
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmSegundo := TFrmSegundo.Create(Application); FrmSegundo.ShowModal;//ou atravs do mtodo Show end;

No formulrio chamado (FrmSegundo) dever ser criado um cdigo para liberar a memria quando este for fechado.
procedure TFrmSegundo.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end;

A varivel Action define qual a ao o formulrio deve tomar ao ser fechado. O default para formulrios SDI o valor caHide, ou seja, o formulrio apenas oculto permanecendo na memria principal, mudamos este comportamento atravs do valor caFree. Uma outra tcnica para o mesmo objetivo seria definir a liberao de memria em um bloco try como a seguir:
procedure TFrmPrincipal.Button1Click(Sender: TObject); begin FrmSegundo := TFrmSegundo.Create(Application); try FrmSegundo.ShowModal; finally FrmSegundo.Free; end;//do bloco finally end;

Este cdigo acima s funciona com formulrios Modais, pois o mtodo Show permite a execuo das prximas linhas de cdigo aps a sua chamada, trazendo um efeito indesejado

37

Delphi 7.0
neste exemplo.

Aplicaes MDI
Uma interface MDI (Multiple Document Interface) possibilita a visualizao de mais de um documento ou objeto simultaneamente. Aplicaes MDI so constituidas geralmente de dois ou mais formulrios: o formulrio principal (MDIform) que geralmente constitui a janela principal do programa e seus filhos (MDIchild) localizados dentro de sua rea de trabalho. Em aplicaes MDI, voc geralmente precisa mostrar mltiplas instncias de um classe de formulrio. Um formulrio filho de MDI deve ser criado para ser exibido e deve ser destrudo para no mais exib-lo. Com uma nova aplicao vamos iniciar uma aplicao MDI que possa abrir vrios arquivos de figuras selecionados pelo usurio. _ Salve o projeto em uma pasta chamada ImagemMDI Nome atual Novo nome Unit1 UFrmPai Project1 ImagemMDI Altere as propriedades do form:
object FrmPai: TFrmPai Width = 447 Height = 309 Caption = 'FrmPai' FormStyle = fsMDIForm Position = poScreenCenter End

Insira no formulrio um componente OpenPictureDialog e um componente MainMenu Construa os seguintes Menus atravs do construtor do MainMenu: Caption Name ShortCut &Arquivo MnuArquivo &Abrir MnuAbrir Ctrl+A &Sair MnuSair Ctrl+T Troque a propriedade Name do componente MainMenu para MnuPai _ Salve todo o projeto. (Atualizar) Insira mais um formulrio e salve-o: Nome atual Novo nome Unit1 UFrmFilho Modifique a seguinte propriedade:
object FrmFilho: TFrmFilho FormStyle = fsMDIChild End

Insira um componente Image no formulrio FrmFilho e modifique as seguintes propriedades:


object Image1: TImage Align = alClient Center = True end

Salve todo o projeto. (Atualizar)

38

Delphi 7.0
Execute a aplicao e visualize o formulrio FrmFilho que j se encontra dentro de FrmPai. Note que formulrios filhos de MDI no tem a opo de existir (ter sido criado) e no ser exibido (o que possvel para formulrios comuns). O default do ambiente Delphi criar automaticamente uma instncia de cada form do projeto. por isto que existem as referncias de criao no cdigo dentro do arquivo de projeto (DPR). Menu Project | View Source
begin Application.Initialize; Application.CreateForm(TFrmPai, FrmPai); Application.CreateForm(TFrmFilho, FrmFilho); Application.Run; end.

Como desejamos que a aplicao rode inicialmente sem nenhuma janela filha aberta, devemos alterar este comportamento. Para que o formulrio MDIFilho no seja criado automaticamente com o projeto, devemos especificar no projeto que o mesmo no auto-create. Para isso basta usar a opo de menu Project | Options e alterar para FrmFilho em Avaliable forms. Como na figura a seguir. Desta maneira, o Form estar disponvel, porm no ser criado automaticamente pelo programa. Aps a confirmao, podemos notar que o cdigo no arquivo de projeto (DPR) tambm foi alterado.

A maneira de criarmos o form FrmImagem dever ser feita em tempo de execuo atravs de cdigo fazendo uma chamada ao mtodo CreateForm do objeto Application. Exemplo:
begin comando1; comando2; Application.CreateForm(TFrmFilho, FrmFilho); end;

39

Delphi 7.0

Desta maneira, defina o seguinte cdigo para objeto MnuAbrir

procedure TFrmPai.MnuAbrirClick(Sender: TObject); begin if OpenPictureDialog1.Execute then//abre a caixa de dialogo begin Application.CreateForm(TFrmFilho, FrmFilho); //carrega a figura para o componente ImgImagem FrmFilho.Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); FrmFilho.Caption := OpenPictureDialog1.FileName;//muda o caption end; end;

Seleciona-se o form do lado esquerdo e utiliza-se este cone Defina o seguinte cdigo para MnuSair
procedure TFrmMain.MnuSairClick(Sender: TObject); begin FrmPai.Close; end;

Execute a aplicao e tente fechar as janelas filhas. possvel? Ao contrrio de outros tipos de forms, um form MDIChild no fecha automaticamente quando executamos seu mtodo Close. Entretanto no evento OnClose de qualquer form temos um parmetro Action que nos permite definir uma ao especifica: Action Comportamento CaNone O form no fechar nenhuma ao ser tomada. CaHide O form apenas escondido, no sendo mais exibido porm ainda existir em memria. Este o comportamento default de forms comuns. caFree O form ser destrudo e no simplesmente escondido. caMinimize O form ser minimizado, e no fechado. Este o default para forms filhos de MDI. Para forar um MDIChild a fechar devemos alterar o parmetro Action para caFree em seu evento OnClose. Vamos acrescentar o seguinte cdigo no evento OnClose do form FrmImagem
procedure TFrmFilho.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := CaFree; end;

Vamos adicionar dois itens de menu ao MnuPai como no exemplo: Items: Caption Name ShortCut &Janelas MnuJanelas &Em Cascata MnuEmCascata &Lado a Lado MnuLadoaLado No evento OnClick do item MnuEmCascata definir o cdigo:
procedure TFrmPai.MnuEmCascataClick(Sender: TObject); begin Cascade;

40

Delphi 7.0
end;

Matrizes de uma dimenso ou Vetores (array)


Vetor tambm conhecido como varivel composta homognea unidimensional. Isto quer dizer que se trata de um conjunto de variveis do mesmo tipo, que possuem o mesmo identificador (nome) e so alocadas sequencialmente na memria. Como as variveis tm o mesmo nome, o que as distingue um ndice que referencia sua localizao dentro da estrutura. Em Pascal conhecida como Array, todas as posies do array possue o mesmo identificador (mesmo nome) e so alocadas sequencialmente na memria. Var nome_varivel : ARRAY [ndice inicial..ndice final] OF tipo dos dados do vetor; 11 Projeto

41

Delphi 7.0

Ao invs de criar 8 variveis, cria-se uma varivel array.

X 1 2 3 4 5

42

Delphi 7.0

X [1]

Atribuindo um valor ao vetor = X[1] := 5;

atribui o valor 5 cujo ndice 1

Para mostrar os valores contidos em um vetor exige a utilizao do ndice

Matriz bidimensional
Uma matriz uma varivel composta homognea multidimensional. Ela formada por uma sequncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome), e alocadas sequencialmente na memria. Uma vez que as variveis tm o mesmo nome, o que as distingue so os ndices que referenciam sua localizao dentro da estrutura. Uma varivel do tipo matriz precisa do ndice para cada uma de suas dimenses. Var nome_varivel : ARRAY [nicio1..fim1, nicio2..fim2, nicioN..fimN] OF tipo dos dados do vetor; Nesse exemplo, var x: array [1..2,1..6] of Real; X
1 2 1 2 3 4 5

Ou, var x : array [1..2, 1..4, 1..3] Atribuindo um valor ao vetor = X[1,4] := 5;
4 (coluna) atribui o valor 5 cujo ndice 1 (linha) e

Drawgrid e StringGrid Utilizado para entrada ou exibio de dados no formato de tabela - Propriedades: ColCount Nmero de coluna RowCount Nmero de linha Col - Coluna Corrente Row Linha Corrente DefaultColWidth Largura das colunas DefaultRowHeight Altura das linhas FixedCol Quantidade de linhas fixas FixedRow Quantidde de colunas fixas GridLineWidth Espessura das linhas divisrias Cells[col,lin] Permite acessar as clulas da Grid, por coluna e linha, sendo que a primeira linha e coluna tem valores 0. Para limpar o StringGrid. 43

Delphi 7.0 procedure TForm1.Button1Click(Sender: TObject); var I, J: integer; begin with StringGrid1 do for I := 0 to ColCount -1 do for J := 0 to RowCount -1 do Cells[I,J] := ''; end; 12 Projeto

Matriz tridimensional
1 dimenso (linha) 2 dimenso (coluna) 3 dimenso (profundidade)

- Conceito de classe - Mtodos de uma classe - Herana

Delphi com POO

Mais componentes: Statusbar ... Linha de Status.

44

Delphi 7.0

- Propriedade: Panels, clique e aparecer a janela de EditingStatusBar.panels, clique sobre o boto new e para a propriedade Text coloque Bem vindo ao sistema....

Clique componente MainMenu e entre no Menu Designer, e para cada opo de Menu altere as propriedades Hint.

Criando e alterando os objetos da Caixa Sobre (About Box)

45

Delphi 7.0

Para criar o formulrio a partir do menu principal, selecione o menu File, opo New, subitem Other aparecer a janela da New Items e clique na guia forms e no objeto entitulado Autbox. Altere os componentes da janela. - ALT+184

Objeto - PageControl
Paleta Win32 Importncia: Permite definir guias para agrupar os demais componentes. Cada guia representa um componente TabSheet do tipo TTabSheet, uma espcie de sub-objeto do PageControl.

Propriedades ActivePage

Permite determinar qual a guia foi selecionada pelo usurio.

Para criar novas pginas, clique com o boto direito no componente PageControl e escolha New Page.

Objeto OpenDialog (Caixa de dilogo para abertura de arquivos)


Paleta Dialogs Importncia: Permite utilizar uma caixa de dilogo pronta com recursos padronizados pelo sistema operacional.

Propriedades DefaultExt FileName Filter FilterIndex

Especifica a extenso a ser adicionada ao nome de um arquivo quando o usurio digita o nome de um arquivo sem a sua extenso. Define o arquivo selecionado no componente. Permite definir as mscaras de filtro de arquivo a serem exibidas. Define o filtro default a ser exibido na lista drop-down que define os tipos de arquivos selecionveis. 46

Delphi 7.0 InitialDir Options Title Define o diretrio default quando a caixa de dilogo aberta. Neste componente, options define uma srie de valores booleanos. Define o ttulo da caixa de dilogo.

Os componentes da paleta dialogs so executados atravs do mtodo execute. Este mtodo uma funo que retorna um valor booleano, assim para exibir uma caixa de dilogo, podemos escrever:
if OpenDialog1.Execute then

Se o usurio escolher algum arquivo e confirmar a caixa, execute retorna verdadeiro, caso contrrio, falso. Colordialog Savedialog Fontdialog

Objeto ImageList (Lista de imagens)


Paleta Win32 Importncia: Permite definir um conjunto de cones para serem re-utilizados por diversos componentes de recebem este objeto como provedor de uma lista de imagens.

Para incluir imagens no componente ImageList, clique 2 vezes rapidamente no componente e clique no boto Add. O Delphi possui um conjunto de cones e imagens em uma pasta padro1:
C:\Arquivos de programas\Arquivos comuns\Borland Shared\Images

Objeto ProgressBar (Barra de progresso)


Paleta Win32 Importncia: Permitir ao usurio ter um acompanhamento de uma rotina demorada.

Caso voc tenha instalado o software nos diretrios sugeridos como padro.

47

Delphi 7.0 Propriedades Max Min Orientation Position Step

Permite definir o valor mximo para a faixa de valores no componente. Permite definir o valor mnimo para a faixa de valores no componente. Define se o componente dever ser vertical ou horizontal. Define a posio corrente do controle no componente. Define o incremento usado na variao do valor da propriedade position.

Objeto Gauge (Barra de progresso)


Paleta Samples Importncia: Permitir ao usurio ter um acompanhamento de uma rotina demorada.

Propriedades Kind Progress

Permite definir aparncias diferenciadas no componente. Define a posio corrente do controle no componente.

Objeto Animate (Animaes)


Paleta Win32 Importncia: Permite exibir um filme .AVI para ilustrar tarefas (rotinas) em andamento.

Propriedades CommonAVI Active Repetitions

Define o AVI a ser exibido. Liga e desliga a exibio do AVI. Define um nmero inteiro correspondente ao nmero de repeties. Zero define repeties indefinidas.

Objeto StatusBar (Barra de status)

48

Delphi 7.0 Paleta Win32 Importncia: Um dos principais componentes de informaes sobre operaes gerais no sistema.

Propriedades AutoHint SimplePanel SimpleText Panels

Permite exibir o hint do componente automaticamente na barra de status. Se no houver painis, a barra deve ter a propriedade SimplePanel ligada. Define que a barra de status ser sem divises. Define o texto a ser exibido pela barra de status. Permite a criao e edio de painis na barra de status. A propriedade SimplePanel deve estar desligada. Pode-se tambm dar um duplo clique na barra de status.

Ao utilizar a propriedade AutoHint, pode-se definir o hint dos objetos com duas strings separadas por pipe (|). A primeira string ser utilizada como hint local, a segunda como hint na barra de status.

Objeto ToolBar (Barra de cones)


Paleta Win32 Importncia: Permite criar barras de cones de maneira rpida e simples.

Propriedades Flat Images HotImages ShowCaptions

Define um efeito visual com relevo atravs do mouse nos botes. Permite definir um objeto do tipo ImageList. Permite definir um objeto do tipo ImageList a ser usado no momento em que o mouse passa (ou clica) sobre o componente. Permite exibir a propriedade caption dos botes.

Para adicionar botes ou separadores na ToolBar, clique com o boto direito sobre o componente e escolha New Button ou New Separator

Objeto Timer (Temporizador)


49

Delphi 7.0

Paleta System Importncia: Permite a execuo de rotinas em loop, em um intervalo pr-definido.

Propriedades Enabled Interval Propriedades DirList

Permite ligar o timer, ou seja, ele entra em um loop executando o evento OnTimer at que seja atribudo falso ou terminada a aplicao. Define em milisegundos o intevalo de repetio do evento OnTimer.

Permite a conexo com um componente TDirectoryListBox.

Objeto RichEdit (Texto com formatao) Paleta Win32 Importncia: Permite formatar o texto (Negrito, Itlico, Sublinhado, Fontes, etc...) para a leitura de outros editores compatveis com o padro RTF. Propriedades: Lines Define o texto exibido no componente. WantReturns Define a tecla Enter como quebra de linha. WantTabs Define a tecla Tab como tabulao ou mudana de foco. Caso falso pode-se utilizar CTRL+TAB para produzir o efeito desejado. WordWrap Define a quebra de linha automtica de texto. Mtodos Clear Permite limpar o contedo do componente. LoadFromFile Permite carregar um arquivo para a propriedade Lines. SaveToFile Permite salvar o contedo da propriedade Lines em um arquivo Spinedit Colorgrid Shape Gauge Funes de data Keyascii Bitbtn

Melhores dicas para o Delphi


Autor: Paul Harding 100046.2604@Compuserve.Com (algumas foram alteradas)

50

Delphi 7.0
1. Como fazer para o computador soar o beep:
messageBeep(0);

2. Como pausar um programa por determinado nmero de segundos:


var NumSec: SmallInt; StartTime: LongInt; begin StartTime := Now; repeat Application.ProcessMessages; until Now > StartTime + NumSec * (1/24/60/60); end;

3. Como mostrar o mouse como uma ampulheta (e depois retorn-lo ao normal):


try Screen.Cursor := crHourGlass; { Escreva o ao a executar aqui } finally Screen.Cursor := crDefault; end; Application.ProcessMessages;

4. Como controlar o pressionamento da tecla <Enter>:


procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char); { atravs do evento onKeyPress do formulrio de controle... } begin { se a var Key retornar o cdigo #13 corresponde a <Enter>, #9 corresponde a tecla TAB } if Key = #13 then begin Key := #0 { Suprime o som } { escreva aqui os seus comandos } end; end;

5. Como modificar a cor do texto dentro de um campo DBGrid dependendo do contedo:


procedure TForm1.DBGridDrawDataCell(Sender: TObject; const Rect: TRect; Field: Tfield; State: TGridDrawState); begin if Table1Client.AsString = XXXX then begin DBGrid.Canvas.Brush.Color := clRed; DBGrid.Canvas.Font.Color := clSilver; DBGrid.Canvas.FillRect(Rect); { Desenha o pano de fundo } DBGrid1.Canvas.TextOut(Rect.Left+2, Rect.Top+1, Field.AsString); end; end;

6. Como chamar um outro programa (tipo o notepad do Windows) a partir de um aplicativo (de trs maneiras diferentes: normal, maximizado e minimizado):
WinExec(C:\windows\notepad.exe, SW_SHOWNORMAL); WinExec(C:\windows\notepad.exe, SW_SHOWMAXIMIZED); WinExec(C:\windows\notepad.exe, SW_SHOWMINIMIZED);

7. Como interceptar as teclas de funo:


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F5 then ShowMessage(Voc pressionou a F5); end; { pode ser usado da VK_F1 a VK_F12 }

8. Como verificar se um campo inteiro par ou mpar:


function TestaParaPar(TestaInteiro : Integer) : boolean; begin if (TestaInteiro div 2) = (TestaInteiro/2) then result := True else

51

Delphi 7.0
result := False; end;

9. Como verificar se uma string contm um inteiro:


function IsInteger(TestaString: String) : boolean; begin try StrToInt(TestaString); except On EConvertError do result := False; else result := True; end; end;

10. Como subtrair datas:


function SubData(DataEmprestimo: TDataTime) : Integer; begin result := Date - DataEmprestimo; end;

DICAS
CRIAR UM HOTLINK
Podemos criar um link para a Internet dentro do Delphi atravs da funo ShellExecute. Supondo que a propriedade Caption de um label seja um endereo web vlido (http://www.fulanodetal.com.br) podemos inserir em seu evento OnClick o seguinte cdigo:
ShellExecute(Handle, 'open', pchar(Label1.Caption), nil, '',SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

ENVIAR UM MAIL
Podemos utilizar a funo ShellExecute para abrir o programa de mail do usurio e preparar seu envio.
ShellExecute(Handle, open, mailto:fulano@provedor.com.br, nil, ,SW_SHOWNORMAL);

Caso queira colocar um subject padro na construo do e-mail utilize a palavra subject da seguinte forma:
ShellExecute(Handle, open, mailto:fulano@provedor.com.br ?subject=Pergunta, nil, ,SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

EXECUTANDO UM PROGRAMA DE ACORDO COM A EXTENSO DE UM ARQUIVO


ShellExecute um funo API comparada a um canivete suio, vamos utiliz-la novamente para chamar um programa atravs da extenso do arquivo passado como parmetro. Os parmetros de ShellExecute so 6: 52

Delphi 7.0 Um manipulador de janela, que o pai do processo disparado. Uma ao a executar, que pode ser open, para abrir, print, para imprimir, ou explore, para abrir uma janela do Explorer no diretrio desejado. Um ponteiro (tipo Pchar em Delphi) para o nome do programa ou diretrio. Parmetros para a aplicao. Diretrio inicial. Modo de abertura do programa Exemplo:
ShellExecute(Handle, open, exemplo.doc, nil, nil, SW_SHOWNORMAL);

necessrio incluir a biblioteca ShellAPI na clusula uses da Inteface.

COMO SABER QUAL BIBLIOTECA INSERIR NA USES?


Quando o Delphi no declarar automaticamente determinada classa na sesso uses, um erro dever ocorrer no processo de compilao. O nome do parmetro ou funo dever estar em evidencia no rodap do Code Editor em uma janela chamada Message View. Clique em Search | Browse Symbol e digite a palavra procurada, a unit onde ela se encontra dever aparecer. Digite este nome na clusula uses. Ou, pode-se para o cursor (piscando) na palavra e teclar F1, o help tambm exibe a unit.

DATAS
As datas so um tipo de dados TDateTime, internamente so armazenadas como nmeros de ponto flutuante (Double). A parte inteira indica a data, em nmero de dias, contados a partir de 30/12/1899 e a fracionria, as horas. Pelo fato de serem armazenadas como Double, pode-se subtrair, somar e estabelecer comparaes. Por exemplo:
var DataIni, DataFim : TDateTime; Dif : Single; begin Dif := DataFim DataIni; //diferena em dias entre as datas DataIni := DataIni+10; //acrescenta + 10 dias na data end;

Para saber a hora de determinada data, multiplica-se a parte fracionria por 24:
Frac(DataIni) * 24;

Podemos ainda comparar as datas com os operadores < e >. Caso no seja necessrio a comparao com a hora, basta converter a data para um inteiro e efetuar a comparao:
if Trunc(Data1) < Trunc(Data2) then

A formatao de data pode ser feita atravs da funo FormatDateTime. Exemplo:

function FormatDateTime(const Format: string; DateTime: TDateTime): string; Label1.Caption := FormatDateTime('dddd, d "de" mmmm "de" yyyy', date);

53

Delphi 7.0

SAIR DE UMA APLICAO


O Delphi fornece diferentes mtodos para sair de uma aplicao. O ideal utilizar o mtodo Close. Porm, h casos em que Close no atenderia necessidade do desenvolvedor, nestes casos pode-se chamar Halt ou Application.Terminate. Halt um procedimento do Pascal e provoca o trmino da aplicao, no se importando com arquivos abertos. J o mtodo Terminate do objeto Application obriga o fechamento de todos os arquivos abertos e a destruio de todas a forms criadas.

54

Anda mungkin juga menyukai