Você está na página 1de 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Introduo ao Delphi

Introduo O Delphi um ambiente de desenvolvimento de aplicaes, orientado a objeto, que permite o desenvolvimento de poderosas aplicaes baseadas no MS Windows com o mnimo de codificao que lhe permitem criar e testar rpidamente o prottipo de suas aplicaes. Voc pode utilizar o conjunto de componentes e cdigo gerado para transformar seus prottipos em aplicaes robustas que satisfaam suas necessidades. O Delphi tambm oferece ferramentas de acesso a Bando de Dados (BD) e relatrios. As ferramentas de bancos de dados permitem que voc visualize seus dados dinmicamente durante o desenvolvimento para que verifique imediatamente se resultados esto de acordo com suas necessidades.

Pg.: 1 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

IDE
Integrated Development Environment ( Ambiente de Desenvolvimento Integrado ), um conjunto de elementos, ferramentas de design e de bancos de dados que auxiliam a desenvolver e testar rpida e intuitivamente em uma interface com o usurio

Elementos do IDE do Delphi


O Integrated Development Environment (IDE) do Delphi consiste de diversos elementos ou ferramentas visuais. Uma vez acostumados a estes elementos, voc pode comear a desenvolver aplicaes. Form Component Palette Object Inspector Code Editor SpeedBar ProjectManager SpeedMenus On-Line Help
As ferramentas so apresentadas na ordem em que seriam utilizadas para desenvolver uma aplicao.

Pg.: 2 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

FORM

Forms so a caracterstica central das aplicaes Delphi. Quando voc inicia uma aplicao Delphi o form se torna uma janela em sua aplicao. Quando estiver desenvolvendo a interface de usurio de sua aplicao, voc adicionar itens chamados de componentes ao seu form. Podemos entender o form como um template, um padro. um repositrio visual de objetos onde criamos a interface de interao com o usurio.

COMPONENTES

Aplicaes do Delphi so construdas utilizando-se componentes. Um componente um objeto que pode ser manipulado para construir e personalizar uma aplicao. Mesmo um form, embora no seja encontrado na Component Palette, um componente. Ele um componente que pode conter outros componentes. Genericamente, o termo componente refere-se a itens encontrados na Component Palette. Os componentes so categorizados em visuais e no-visuais. Os visuais so aquele que aparecem em tempo de projeto e os no visuais so aqueles que nos permitem realizar algumas funes (abrir uma caixa de dialogo, invocar um relatrio, ou conectar com um banco de dados por exemplo).

Component Palette

Os componentes do Delphi esto localizados na Component Palette e so utilizados para construir a interface com o usurio. A Componente Palette exibe uma seleo de componentes geralmente agrupados por funo ou fabricante.

Object Inspector

Quando um form ou componente selecionado no Object Inspector so listados suas propriedades (Adjetivos/Caracteristicas) e Eventos (Acontecimentos). Properties Propriedades de um objeto (form/componente) traduzem um adjetivo/ caracterstica daquele objeto assim como: Tamanho, nome, posio, altura, largura e etc... Methods Mtodos so aes que compem o total de funcionalidades que o objeto pode realizar. Invocado por instrues fornecidas pelo programador em relao a um determinado objeto para que seja executada uma ao esperada, fazendo com que o objetivo de um determinado bloco de comando seja atingido. Exemplos de Methods: listbox1.Clear (limpar o listbox), Table1.Open (Abrir uma tabela), Table1.next (Ler prximo registro), ListBox.AddItem (Adiciona um item a uma lista). Events Eventos do Objeto traduzem um acontecimento ou uma ocorrncia no objeto em reao a execuo de um mtodo ou mudana de uma propriedade. Exemplos de eventos: onClick(quando clicar), onOpen (quando abrir) e etc...

Pg.: 3 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Code Editor
Introduo O Code Editor um editor de texto que exibe o cdigo fonte que voc escreve ou que o Delphi gera para criar uma aplicao. O cdigo fonte aparece em um arquivo chamado com extenso .PAS que um dos tipos de arquivos que compe um projeto do Delphi. Caractersticas do Code Editor O Code Editor oferece comandos de edio, Help sensvel ao contexto, e as seguintes caractersticas de edio estilo Brief: Gravao e execuo de macros Sintaxe de destaque colorida Undo ilimitado Marcao de bloco de coluna Toques de

teclado

personalizveis

O Arquivo Unit

O Code Editor aparece no arquivo unit, (a tecla de atalho F12 faz a alternncia entre o form e a unit) que posicionado atrs do Form1 padro quando voc inicia o Delphi. Quando voc aplica um duplo clique em um evento na pgina Events do Object Inspector, o Code Editor automaticamente torna-se a janela para que voc possa digitar o cdigo a ser aplicado em relao ao evento ocorrido. O Code Editor pode exibir mltiplos arquivos unit. Para ser mais especfico todos os arquivos do projeto em questo e tantos outros que sejam abertos. Uma unit utilizada para organizar as declaraes de programao do Delphi. So definidas para cada form, pois cada objeto form precisa ter uma unit a ele relacionada. Mas, podemos criar units sem formulrios relacionados, geralmente estas units so criadas com o objetivo de se tornarem uma biblioteca de funes, parmetros ou variveis. Voc tambm pode exibir um arquivo unit atravs do menu View selecionando Toggle Form/Unit. O arquivo default, Unit1.PAS, aparece na janela do Code Editor, como segue:

Pg.: 4 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Comentrios Em Pascal, os comentrios so delimitados ou por chaves ou parnteses seguido de asterisco. O Delphi tambm aceita os comentrios no estilo C++, que se estendem at o fim da linha: { isto um comentrio } (* isto outro comentrio *) // isto um comentrio at o fim da linha A primeira forma mais curta e mais comumente usada. A segunda forma preferida na Europa porque muitos teclados europeus no possuem o smbolo da chave. A terceira forma de comentrios foi emprestada do C++ e est disponvel apenas nas verses 32-bit do Delphi. Comentrios at o fim da linha so muito teis para comentrios curtos e para fazer com que o compilador ignore determinada linha de cdigo. O comentrio pode ser til para fazer comentrios aninhados. Se voc quiser transformar vrias linhas de cdigo em comentrios, a fim de desabilit-las ou estas linhas contm alguns comentrios reais que se tornam relevantes para elucidar melhor a aplicao de um determinado cdigo.

SpeedBar
A SpeedBar feita de botes que economizam tempo, permitindo que voc clique sobre um boto ao invs de utilizar a barra de menu para executar operaes e comandos mais comuns. A SpeedBar aparece abaixo da barra de menu, esquerda, e consiste dos seguintes botes:

Pg.: 5 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Vriaveis, Constantes, Estruturas de Fluxo e de Repetio


No exerccio da programao cabe ao programador definir as regras de negcio que so estabelecidas atravz de comparaes, desvios condicionais, contagens, totalizaes, mdias usando variveis e apresentao de resultados nos componetes visuais do formulrio. Resultados estes provenientes do banco de dados ou dos fluxos de programao de sua aplicao. Tipos de Variaveis Variveis so blocos na memria destinados ao armazenamento de um determinado tipo de dado. Basicamente so identificadores que simbolizam dados que podem ser alterados durante o processamento. Utilizados para armazenar dados temporariamente. O tipo de dado da varivel e sua visibilidade que define o seu escopo. A visibilidade definida de acordo com a seo onde uma varivel declarada. As principais sees de declarao so: public(todos podem acessar) e private(somente dentro do contexto onde foi declarada poder ser acessada). A sua visibilidade tambm est relacionada se determinada varivel foi declarada e utilizada dentro de uma funo, procedimento ou bloco de cdigo, pois esta s exsite enquanto o mesmo est em execuo. Tipo de Dado Valores permitidos TIPO DE DADO ShorInt SmallInt LongInt Integer Byte Word Single Double Extended Currency Comp Real Boolean AnsiChar WideChar Char ShortString AnsiString String Variant VARIAO -128 a 127 -32768 a 32767 -2147483647 a 2147483647 -2147483647 a 2147483647 0 a 255 0 a 65535 1.5 x10-45 a 3.4x1038 5.0x10-324 a 1.7x10308 3.4x10-4932 a 1.1x104932 -922337203675477.5808 a 922337203685477.5807 -263 a 263 2.0x10-39 a 1.7x1038 True ou false Caracteres ANSI Caracteres Unicode Caracteres ANSI At 255 caracteres Virtualmente sem limite Virtualmente sem limite TAMANHO 1 byte 2 bytes 4 bytes 4 bytes 1 byte 2 bytes 4 bytes 8 bytes 10 bytes 8 bytes 8 bytes 6 bytes 1 byte OBSERVAES

No Delphi este tipo idntico ao LongInt.

7-8 dgitos 15-16 dgitos 19-20 dgitos 19-20 dgitos 19-20 dgitos 11-12 dgitos. Use este tipo apenas para compatibilidade com verses anteriores do Pascal

1 byte

No Delphi este tipo idntico ao AnsiChar

Em geral, idntico ao AnsiString Pode conter qualquer tipo de dados

Constantes So como variveis, com a diferena de que seu contedo no pode ser alterado durante os processos, pode somente ser lido.

Pg.: 6 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Funes de Converso de Tipos mais Utilizadas FUNO DESCRIO Chr Converte um nmero ordinal em um caractere ANSI Round Converte um real em um inteiro, arredondando a parte decimal Trunc Converte um real em um inteiro, truncando a parte decimal Int Retorna a parte inteira de um argumento de ponto flutuante IntToStr Converte um nmero em um string Converte um string em um inteiro, levantando uma exceo (erro) caso o string StrToInt no represente um inteiro vlido Converte um string em um inteiro, usando um valor padro se o string no StrToIntDef estiver correto Converte um string em um nmero (rotina includa para compatibilidade com o Val Turbo Pascal) Converte um string em um nmero, usando parmetros de formatao (rotina Str includa para compatibilidade com o Turbo Pascal) Converte um valor de ponto flutuante em um registro (record) incluindo sua FloatToDecimal representao decimal (expoente, dgitos, sinal) Converte um valor de ponto flutuante para sua representao string usando FloatToStr formatao padro StrToFloat Converte um string e, um valor de ponto flutuante

Operadores O Delphi Language possui uma estrutura de operadores muito parecida com a do pascal. Operadores Aritmticos Operador Operao + Adio Subtrao * Multiplicao / Diviso Div Diviso inteira Mod Resto da diviso inteira Tipos Usados Inteiros Reais Inteiros Reais Inteiros Reais Inteiros Reais Inteiros Inteiros Tipos Resultantes Inteiro Real Inteiro Real Inteiro Real Real Real Inteiro Inteiro

Operadores Unrios Operador Operao + Identidade do sinal Negao de sinal

Tipos Usados Inteiros Reais Inteiros Reais

Tipos Resultantes Inteiro Real Inteiro Real

Operadores Lgicos (Bit a Bit) Operador Operao Not Negao And E Or OU Xor OU Coincidente Shl Shift para a esquerda Shr Shift para a direita

Tipos Usados Inteiros Inteiros Inteiros Inteiros Inteiros Inteiros

Tipos Resultantes Booleano Booleano Booleano Booleano Booleano Booleano

Pg.: 7 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Operadores Booleanos Operador Operao Not Negao And E Or OU Xor OU coincidente Operadores Relacionais Operador Operao = <> < > <= >= <= >= In Igual Diferente de Menor que Maior que Menor ou igual Maior ou igual Subconjunto de Superconjunto de Membro de

Tipos Usados Booleanos Booleanos Booleanos Booleanos Tipos Usados

Tipos Resultantes Booleano Booleano Booleano Booleano Tipos Resultantes Booleano Booleano Booleano Booleano Booleano Booleano Booleano Booleano Booleano

Is

Compatvel a

Tipos simples compatveis, de classe, referncia de classe, ponteiros, conjunto, string ou string empacotado. Tipos simples compatveis, de classe, referncia de classe, ponteiros, conjunto, string ou string empacotado. Tipos simples compatveis, strings ou string empacotado ou Pchar Tipos simples compatveis, strings ou string empacotado ou Pchar Tipos simples compatveis, strings ou string empacotado ou Pchar Tipos simples compatveis, strings ou string empacotado ou Pchar Tipos de conjuntos compatveis Tipos de conjuntos compatveis Operando da esquerda, qualquer tipo ordinal;Operando da direita, conjunto cuja base seja compatvel com o operando da esquerda Tipos de conjuntos, mais especificamente classes Tipos Usados Qualquer Classes

Booleano

Operadores Especiais Operador @ As

Operao Atribuio Relao

Tipos Resultantes Ponteiro Classe

Precedncia dos Operadores Precedncia Operadores Primeiro @, not, -(unrio) Segundo *,/, div, mod, and, shl, shr, as Terceiro +,-,or, xor Quarto =, <, >, <=, >=, in, is Principais Tipos de Dados: Booleanos Valores Booleanos que so do tipo Boolean e podem assumir dois valores:verdadeiro(true) e falso(false). So comumnete associados a parmetros, variveis e propriedades cujo em seu objetivo se tangencia habilitar ou desabilitar algo, geralmente encontrados em objetos e funes relacionaos com a interface de objetos, funes e do prprio sistema operacional com o usurio.

Pg.: 8 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Caracteres Finalmente, h duas representaes diferentes para caracteres: ANSIChar e WideChar. O primeiro tipo representa caracteres 8-bit, correspondentes ao conjunto de caracteres ANSI tradicionalmente utilizado pelo Windows; o segundo representa caracteres 16-bit, correspondentes aos novos caracteres Unicode suportados pelo Windows NT, e parcialmente suportados pelo Windows 95 e 98. Na maioria das vezes voc simplesmente usar o tipo Char, que no Delphi 3 corresponde ao ANSIChar. Lembre-se que, de qualquer modo, os primeiros 256 caracteres Unicode correspondem exatamente aos caracteres ANSI. Constantes de caractere podem ser representadas por sua notao simblica, como em 'k', ou por notao numrica, como em #78. A ltima pode tambm ser expressa usando a funo Chr, como em Chr (78). A converso contrria pode ser feita com a funo Ord. geralmente melhor usar a notao simblica quando se quer indicar letras, dgitos, ou smbolos. Ao se referir a caracteres especiais, geralmente se usa a notao numrica. A seguinte lista inclui alguns dos caracteres especiais mais comumente utilizados:
#9 tabulao #10 nova linha #13 retorno de carro (tecla enter)

Rotinas para Tipos Ordinais H algumas rotinas de sistema (rotinas definidas na linguagem Pascal e na unidade system do Delphi) que trabalham em tipos ordinais. Programadores C++ devem notar que as duas verses do procedimento Inc, com um ou dois parmetros, correspondem aos operadores ++ e += (o mesmo vale para o procedimento Dec). Rotinas de Sistema para Tipos Ordinais Rotina Propsito Decrementa a varivel passada como parmetro, por uma unidade ou pelo valor do Dec segundo parmetro opcional. Incrementa a varivel passada como parmetro, por uma unidade ou pelo valor do Inc segundo parmetro opcional. Odd Retorna True se o argumento um nmero mpar. Retorna o valor que precede o argumento, na ordem determinada pelo tipo de dado; o Pred predecessor. Succ Retorna o valor que sucede o argumento; o sucessor. Retorna um nmero que indica a ordem do argumento no conjunto de valores do tipo Ord de dado. Low Retorna o valor mais baixo no intervalo do tipo ordinal passado como parmetro. High Retorna o valor mais alto no intervalo do tipo ordinal. Note que algumas destas rotinas, quando aplicadas a constantes, so automaticamente avaliadas pelo compilador e substitudas por seu valor. Por exemplo, se voc chama High(X), onde X definido como um Inteiro, o compilador pode simplesmente substituir a expresso pelo mais alto valor possvel do tipo de dados Integer. Tipos Reais

Tipos reais representam nmeros de ponto-flutuante em vrios formatos. O menor tamanho de armazenamento dado por nmeros Single, que so implementados como valores de 4 bytes. H nmeros de ponto-flutuante Double, implementados com 8 bytes, e Extended, implementados com 10 bytes. Esses so todos tipos de dados de ponto-flutuante com exatides diferentes, que correspondem s representaes IEEE de ponto-flutuante padronizadas, e so diretamente
Pg.: 9 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

suportadas pelo coprocessador numrico da CPU, para uma velocidade mxima de processamento. H tambm dois outros tipos de dados: Comp descreve inteiros muito grandes usando 8 bytes (que podem guardar nmeros com 18 dgitos decimais); e Currency (no disponvel no Delphi 16-bit) indica um valor decimal de ponto fixo com quatro dgitos decimais, e a mesma representao de 64bit do tipo Comp. Como o nome implica, o tipo de dados Currency foi adicionado para tratar de valores monetrios muito precisos, com quatro casas decimais. Os tipos Reais tm um papel limitado na parte do cdigo de interface com o usurio (o lado do Windows), mas eles so totalmente suportados pelo Delphi, inclusive por sua parte de bancos de dados. O suporte a tipos de ponto-flutuante padro IEEE torna a linguagem Object Pascal totalmente apropriada para a vasta gama de programas que requerem computaes numricas. Se voc est interessado neste assunto, pode observar as funes de aritmtica fornecidas pelo Delphi na unidade system (consulte a ajuda do Delphi para mais detalhes). Nota: O Delphi tambm possui uma unidade Math, que define rotinas matemticas avanadas, cobrindo funes trigonomtricas (como a funo ArcCosh), financeiras (como a funo InterestPayment), e estatsticas (como o procedimento MeanAndStdDev). Data e Hora O Delphi usa tipos reais tambm para tratar de informaes de data e hora. Para ser mais preciso, o Delphi define um tipo de dados especfico, chamado TDateTime. Este um tipo de ponto-flutuante, porque o tipo deve ser amplo o bastante para armazenar anos, meses, dias, horas, minutos, segundos e milsimos de segundo, em uma nica varivel. As datas so armazenadas como o nmero de dias desde 12/30/1899 (os valores negativos indicam datas antes de 1899) na parte inteira do valor TDateTime. Horas, minutos, etc, so armazenados como fraes de um dia, na parte decimal do valor. TDateTime no um tipo predefinido que o compilador compreende; ele est definido na unidade system como: type TDateTime = type Double; Usar o tipo TDateTime muito fcil, pois o Delphi possui vrias funes que operam neste tipo. Voc pode encontrar uma lista destas funes na tabela abaixo. Rotinas de Sistema para o tipo TDateTime Rotina Now Date Time DateTimeToStr DateTimeToString DateToStr TimeToStr FormatDateTime Descrio Retorna a data/hora correntes em um valor TDateTime. Retorna apenas a data corrente. Retorna apenas a hora corrente. Converte um valor de data/hora em string, usando formatao padro; para ter mais controle sobre a converso, deve-se usar a funo FormatDateTime. Copia um valor de data/hora em um buffer de string, com formatao padro. Converte a poro de data de um valor TDateTime em string. Converte a poro de hora de um valor TDateTime em string. Formata uma data/hora usando o formato especificado; pode-se especificar que valores se deseja visualizar e que formato usar, a partir de uma complexa string de formatao.
Pg.: 10 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

StrToDateTime StrToDate StrToTime DayOfWeek DecodeDate DecodeTime EncodeDate EncodeTime

Converte um string com informao de data/hora para um valor TDateTime, levantando uma exceo em caso de erro no formato da string. Converte uma string com um valor de data para TDateTime. Converte uma string com um valor de hora para TDateTime. Retorna o nmero correspondente ao dia da semana do valor TDateTime passado como parmetro. Busca os valores do ano, ms, e dia, de um valor de data. Rotina anloga, para um valor de hora. Transforma valores de ano, ms, e dia em TDateTime. Transforma valores de hora, minuto, segundo, e milsimo de segundo em TDateTime.

Bloco de Instrues
Instruo IF Este o tipo mais bsico de instruo condicional e pode ser usada para executar um trecho de programa caso uma condio for satisfeita (if then), ou, mais genericamente, para escolher entre duas instrues (if-then-else). A sintaxe geral da instruo if a seguinte: if condio then [bloco de instrues 1] else [bloco de instrues 2]; Note que no deve haver ponto-e-vrgula aps o primeiro bloco de instrues. Isto ocorre porque a instruo if-then-else deve ser lida como uma linha inteira. Instruo CASE Se a quantidade de condies a serem verificadas for muito grande, o uso da instruo if poder acarretar em cdigos muito complexos. Neste caso melhor usar a instruo Case, que seleciona um valor dentro de uma lista de possveis valores ou intervalos de valores. Uma das limitaes da instruo Case que estes valores devem ser de tipo ordinal, ou seja, no possvel testar literais ou nmeros reais, por exemplo. case <opo> of <opo 1> : <bloco de comandos>; . . . <opo N> : <bloco de comandos>; else <bloco de comandos>; end;

Pg.: 11 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Instrues de Lao FOR A instruo for do Pascal semelhante de outras linguagens, mas no muito flexvel. No possvel estabelecer incrementos diferentes de um, embora seja possvel contar crescente e decrescentemente. For <variavel_contador>:=<valor_inicial> to <valor_final> do <bloco de comandos>; For <variavel_contador>:=<valor_inicial> down to <valor_final> do <bloco de comandos>; WHILE E REPEAT A diferena entre os laos while-do e repeat-until que o cdigo da instruo repeat sempre executado ao menos uma vez. While <condio> do begin <bloco de comandos> end; repeat <bloco de comandos>; until <condio>; BREAK ou CONTINUE O comando break interrompe um bloco de repetio for, while ou repeat saindo do bloco. A sintaxe do comando : BREAK; enquanto que o comando continue retorna a primeira instruo do bloco de repetio for, while ou repeat. A sintaxe do comando : CONTINUE; for i := 1 to 10 do begin if i = 8 then break; //Salta para os [comandos C] {... comandos A...} if i = 5 then continue; //Retorna para o comando for pulando os [comandos B] {... comandos B ...} end; {... comandos C ...}

Pg.: 12 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Projeto: Mdia
Crie um formulrio contendo os elementos abaixo:

unit UMedia; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; EditNome: TEdit; EditNota: TEdit; Label2: TLabel; btAdicionarNota: TButton; ListBox1: TListBox; btLimpar: TButton; btTotalizar: TButton; Labelx: TLabel; editMedia: TEdit; RadioGroup1: TRadioGroup; Memo1: TMemo; procedure btAdicionarNotaClick(Sender: TObject); procedure btLimparClick(Sender: TObject); procedure btTotalizarClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm}
Pg.: 13 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

procedure TForm1.btAdicionarNotaClick(Sender: TObject); Var Valor : real; begin Try Valor := StrToFloat(EditNota.text); ListBox1.Items.Add(EditNota.Text); except ShowMessage('Nota Invlida !'); end; EditNota.Clear; EditNota.SetFocus; end; procedure TForm1.btLimparClick(Sender: TObject); begin EditNome.Clear; EditNota.Clear; EditMedia.Clear; ListBox1.Clear; Memo1.Clear; RadioGroup1.ItemIndex := -1; end; procedure TForm1.btTotalizarClick(Sender: TObject); Const MediaMinima = 5; Aprovado = 0; Reprovado = 1; Var QtdeNotas : real; SomaNotas : real; Media : real; indice : integer; begin for indice := 0 to ListBox1.Items.Count-1 do begin QtdeNotas := QtdeNotas + 1; SomaNotas := SomaNotas + StrToFloat(Listbox1.Items.Strings[indice]) end; Media := SomaNotas / QtdeNotas; if Media > MediaMinima then RadioGroup1.ItemIndex := Aprovado // equivale ao 0 else begin RadioGroup1.ItemIndex := Reprovado; // equivale ao 1 memo1.Lines.Add('*** Ateno ***'); memo1.Lines.Add('Aluno: ' + EditNome.text); memo1.Lines.Add(''); memo1.Lines.Add('PROVA FINAL: ' + FormatFloat('#,##0.00', (2*MediaMinima)-media)); end; editMedia.Text := FormatFloat('#,##0.00',Media); end; end.

Pg.: 14 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Variveis de Ambiente
So variaveis padro do ambiente windows que podem ser alteradas em tempo de execuo;
ThousandSeparator := '.'; // Separador de milhares DecimalSeparator := ','; // Ponto decimal ShortDateFormat := 'dd/mm/yyyy'; // Formato de data DateSeparator := '/'; // Separador de data TimeSeparator := ':'; // Separador de hora // Nome abreviado para os meses ShortMonthNames[1] := 'Jan'; ShortMonthNames[2] := 'Fev'; ShortMonthNames[3] := 'Mar'; ShortMonthNames[4] := 'Abr'; ShortMonthNames[5] := 'Mai'; ShortMonthNames[6] := 'Jun'; ShortMonthNames[7] := 'Jul'; ShortMonthNames[8] := 'Ago'; ShortMonthNames[9] := 'Set'; ShortMonthNames[10] := 'Out'; ShortMonthNames[11] := 'Nov'; ShortMonthNames[12] := 'Dez'; // Nome dos meses por extenso LongMonthNames[1] := 'Janeiro'; LongMonthNames[2] := 'Fevereiro'; LongMonthNames[3] := 'Maro'; LongMonthNames[4] := 'Abril'; LongMonthNames[5] := 'Maio'; LongMonthNames[6] := 'Junho'; LongMonthNames[7] := 'Julho'; LongMonthNames[8] := 'Agosto'; LongMonthNames[9] := 'Setembro'; LongMonthNames[10] := 'Outubro'; LongMonthNames[11] := 'Novembro'; LongMonthNames[12] := 'Dezembro'; // Nome abreviado dos dias da semana ShortDayNames[1] := 'Dom'; ShortDayNames[2] := 'Seg'; ShortDayNames[3] := 'Ter'; ShortDayNames[4] := 'Qua'; ShortDayNames[5] := 'Qui'; ShortDayNames[6] := 'Sex'; ShortDayNames[7] := 'Sb'; // Nome longo dos dias da semana LongDayNames[1] := 'Domingo'; LongDayNames[2] := 'Segunda'; LongDayNames[3] := 'Tera'; LongDayNames[4] := 'Quarta'; LongDayNames[5] := 'Quinta'; LongDayNames[6] := 'Sexta'; LongDayNames[7] := 'Sbado'; // Valores Monetrios CurrencyString := 'R$'; // Smbolo de valor monetrio CurrencyFormat := 0; // Formato para valor positivo // (0 = "R$1,00") NegCurrFormat := 2; // Formato de valor negativo // (2 = "R$-1,00") CurrencyDecimals := 2; // Nmero de casas decimais

Pg.: 15 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Procedimentos e Funes
A caracterstica fundamental da programao estruturada modelar a resoluo de um problema atravs da diviso do mesmo em subproblemas. O processo de decomposio de cada problema em problemas menores, facilitar o trabalho de modelagem da soluo correta, pois cada problema (ou subproblema) pode ser analisado individualmente e independentemente dos demais. O princpio bsico dividir para conquistar. Para obter-se a soluo de um problema maior, sempre vamos passar pela resoluo de outros problemas, normalmente menores e mais simples. Alm disso, algoritmos escritos de maneira modular, so mais legveis e apresentam uma maior facilidade de manuteno. Existem duas formas para diviso de um cdigo em parte menores, chamados procedimento e funo. Ambos tem basicamente o mesmo objetivo, tornando-se diferentes em apenas um detalhe: a procedure no retorna valor, enquanto a funo sim. Vejamos a sintaxe para implementao: PROCEDURES Para declarar uma procedure: procedure [ ( lista de parmetros ) ]; begin <...> end; FUNCTIONS Para declarar uma function: function [ ( lista de parmetros ) ] : tipo do retorno; begin <...> end; Uma funo tem uma varivel implicitamente declarada chamada result, que ser sempre do tipo do retorno. PASSAGEM DE PARAMETROS Podemos passar parmetros para functions e procedures da mesma forma, ou melhor de trs formas diferentes: Por valor - Esta a forma mais comum; quando uma determinada informao passada como parmetro por valor feita uma cpia local do parmetro. function soma( x,y : integer ):integer; begin result := ( x + y ); end;

Pg.: 16 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

O isolamento proporcionado por este tipo de prtica timo, pois nenhum valor manipulado dentro da funo fica visvel, a no ser o prprio valor de retorno. Entretanto isto tem um custo, j que criada uma cpia dos valores dentro da funo. Por esse motivo, as alteraes realizadas nos parmetros dentro do escopo da funo no so refletidas fora da mesma. Por referncia A passagem por referncia deve ser utilizada quando desejamos que qualquer alterao no valor dentro da funo seja refletida fora tambm. O que isto quer dizer? Quando um parmetro passado por referncia o compilador informado que no deve fazer uma copia local do mesmo e sim utilizar o mesmo endereo de memria que j existe. Na prtica seria como duas variveis diferentes que apontem para o mesmo local da memria, uma fora e outra dentro da funo. function soma( var x,y : integer ):integer; function soma( var x: integer; y : integer ):integer; A passagem de um parmetro como constante til quando queremos prevenir que um determinado valor no possa ser alterado de forma alguma em uma seqncia muito grande de clculos function soma( var x: integer; const y : integer ):integer;

Pg.: 17 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Exemplificando Procedimentos e Funes


O principal objetivo de se escrever uma procedure ou funo esta na organizao do cdigo fonte assim como o reaproveitamento e simplificao do cdigo. Temos como exemplo a funo FormatFloat retornando uma string para um edit:
unit Ufuncaoff; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TfrmFF = class(TForm) Edit1: TEdit; Button1: TButton; Label1: TLabel; Button2: TButton; procedure Button1Click(Sender: TObject); function FormataFloat(Valor : real) : string; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmFF: TfrmFF; implementation {$R *.dfm} Const Pi = 3.14; procedure TfrmFF.Button1Click(Sender: TObject); begin edit1.Text := FormatFloat('#,##0.00',pi); end; function TfrmFF.FormataFloat(Valor: real): string; begin Result := FormatFloat('#,##0.00',valor); end; procedure TfrmFF.Button2Click(Sender: TObject); begin edit1.text := ff(pi); end; end.

Pg.: 18 - 19

Projeto de Aula - Delphi 7 Client/Server - Fundamentos

Terminologia do Ambiente Delphi


A partir da verso 2, permite somente a instalao para Windows 32 Bits. Diferentemente do Visual Basic, no possvel compilar cdigos para 16 Bits, o que significa que o seu aplicativo no poder rodar no Windows 3.1 ou 3.11 Um objeto, em Delphi, um conjunto de cdigos de programao (sub-rotinas) e propriedades. Na verdade, cada elemento que voc v em um programa Windows um objeto individual, dotado de propriedades que podem ser alteradas. Exemplo: Objeto Avio: Propriedades: velocidade, altitude, inclinao, etc.; Rotinas: decolar, aterrissar, taxiar, etc. Mudando as propriedades de um objeto, podemos mudar a forma como ele interage com o ambiente. Na programao bsica em Delphi no necessrio ter um conhecimento muito grande de programao orientada a objetos, como necessrio em outras linguagens. Os objetos esto prontos para serem usados e o Delphi cuida de quase tudo. A programao em Delphi um exemplo de "Programao Orientada a Objetos" (POO), como o caso do C++ ou do Object Pascal. Projeto o nome dado a um aplicativo desenvolvido em Delphi. O arquivo do projeto (.dpr) apenas uma lista de todos os outros arquivos que fazem parte do aplicativo, tais como:
formulrios (.DFM); unidades (.PAS); componentes de 32 bits (.OCX); bancos de dados.

Os arquivos de projeto do Delphi (.DPR) so, na verdade, descries de quais arquivos .PAS esto associados ao projeto, qual o modo de associao e onde encontr-los no disco rgido. Quando for gerado o arquivo executvel *.exe, este substituir as funes do arquivo .DPR. Este ltimo continuar presente no disco, naturalmente.

Pg.: 19 - 19