Professional Documents
Culture Documents
AMBIENTE INTEGRADO DE DESENVOLVIMENTO DO DELPHI ( IDE ) .......................................................3 ELEMENTOS DO AMBIENTE .............................................................................................................................................3 BARRA DE BOTES DE ATALHO ......................................................................................................................................5 INSPETOR DE OBJETOS ....................................................................................................................................................6 PERSONALIZANDO A BARRA DE BOTES DE ATALHO .....................................................................................................6 MANIPULANDO UM PROJETO EM DELPHI.........................................................................................................8 ARQUIVOS DE UM PROJETO DELPHI ................................................................................................................................8 ARQUIVOS CRIADOS PELO COMPILADOR E LINKEDITOR .................................................................................................8 CRIANDO UM NOVO PROJETO ..........................................................................................................................................8 SALVANDO UM PROJETO NOVO EM DELPHI .....................................................................................................................8 SALVANDO UM PROJETO COM OUTRO NOME .................................................................................................................10 SALVANDO UM ARQUIVO ( UNIT, FORM) COM OUTRO NOME ........................................................................................10 SALVANDO UM PROJETO EM UM DISQUETE PARA TRANSPORTE ....................................................................................10 ESTRUTURA DE UMA UNIT.....................................................................................................................................11 CABEALHO DE UMA UNIT ...........................................................................................................................................11 CLUSULA INTERFACE..................................................................................................................................................11 CLUSULA IMPLEMENTATION .......................................................................................................................................12 CLUSULA INITIALIZATION...........................................................................................................................................13 CLUSULA FINALIZATION .............................................................................................................................................13 EXEMPLO DE UMA UNIT ................................................................................................................................................13 OBJECT PASCAL.........................................................................................................................................................15 PALAVRAS RESERVADAS ..............................................................................................................................................15 EXPRESSES .................................................................................................................................................................15 IDENTIFICADORES .........................................................................................................................................................16 CONSTANTES ................................................................................................................................................................16 VARIVEIS ....................................................................................................................................................................16 TIPOS DE DADOS DO OBJECT PASCAL ............................................................................................................................17 Tipos de Dados Numricos Inteiros.........................................................................................................................17 Tipos de Dados Numricos Reais ............................................................................................................................17 Tipos de Dados Lgicos...........................................................................................................................................17 Tipos de Dados Caracter .........................................................................................................................................17 Tipos Ordinais .........................................................................................................................................................18 Tipo Variant .............................................................................................................................................................18 Tipo Enumerado.......................................................................................................................................................18 Tipo SubArange .......................................................................................................................................................19 Tipo Conjuntos.........................................................................................................................................................20 OPERADORES ................................................................................................................................................................20 Operador de Atribuio ...........................................................................................................................................20 Operadores Aritmticos ...........................................................................................................................................21 Operadores Lgicos.................................................................................................................................................21 Operadores de Conjunto..........................................................................................................................................21 Operadores de Classe ..............................................................................................................................................21 TIPOS DE DADOS HOMEGNEOS ....................................................................................................................................21 Array Unidimensional..............................................................................................................................................21 Array Multidimensional ...........................................................................................................................................22 TIPOS DE DADOS HETEROGNEOS .................................................................................................................................22
Pgina 2
Codificao da imagem grfica ( arquivo DFM ) acesso atravs do boto direito do mouse sobre o formulrio, opo View as Text. Para voltar, boto direito no texto, opo View as Form.
Pgina 3
Arquivo que contm o cdigo fonte associado ao formulrio declara uma nova classe herdando as caractersticas da classe Tform. Ir conter todos os procedimentos manipuladores dos eventos associados aos componentes do formulrio em questo. Para acessa-lo, selecione o formulrio e pressione F12, para retornar, novamente F12.
Pgina 4
Tempo de Execuo
Pgina 5
Inspetor de Objetos
Seletor de Objetos Pgina de Propriedades Pgina de Eventos
Eventos
Propriedades
Valores
Nessa guia voc poder escolher quais barras de botes sero exibidas, assinalando os checks
Nessa guia voc poder escolher quais botes iro fazer parte da barra de botes. Para adicionar, selecione a categoria e em seguida escolha o boto e arraste-o at o local desejado na barra de botes. Para remover um boto existente na barra, arraste-o no sentido da barra para a tela de configurao.
Na ltima guia, Options voc poder optar por exibir a legenda dos botes quando voc passa com o mouse sobre os botes e tambm se deseja exibir as teclas de atalhos que existem para tais botes.
Pgina 6
Browser Acesse atravs do menu View / Browser, porm s ter acesso depois de ter compilado pelo menos uma vez o projeto. Nessa tela podemos visualizar a hierarquia de objetos do projeto em questo.
Arquivo DPR Nesse arquivo so referenciados as unidades e formulrios pertencentes ao projeto em questo. Para as unidades que no possuem formulrio associado somente ser exibido o nome da unidade e o arquivo que foi armazenada.
Pgina 7
Pgina 8
1. 2. 3. 4.
Crie uma pasta para armazenar o novo projeto. Evite criar pastas para projetos dentro das pastas de instalao do Delphi. Selecione a nova pasta criada, atravs da caixa Salvar em: Configure o nome do arquivo que ir conter a Unit. bom ter um padro de nomes para a unit, exemplo: UcadastroProduto, Unit_Relatrio_Clientes, etc. Clique no boto Salvar, e ser apresenta a tela a seguir:
1. 2. 3.
Nessa tela iremos salvar o arquivo de projeto (.dpr), conveniente manter a mesma pasta onde foi salva a unit ( tela anterior ). Configure o nome do projeto, na caixa Nome do arquivo. Da mesma forma conveniente manter um padro de nomenclatura para os arquivos de projeto, ex: ProjetoControleEstoque, PcontroleFinanceiro, etc. Por fim pressione o boto Salvar. Com isso o novo projeto foi salvo.
Pgina 9
Pgina 10
Clusula Interface
Nesta rea sero especificadas todas as Units necessrias para a Unit em questo e tambm tudo que poder ser usado por outras Units, ou seja, todas as constantes, tipos, variveis, procedimentos e funes definidas nesta rea sero visveis por unidades que usarem esta Unit. Exemplo:
interface
Pgina 11
Clusula Implementation
Esta rea da Unit composta pelo cdigo que implementa as aes da Unit ( funes e procedimentos ). A rea de implementao pode conter uma clusula Uses. sempre melhor usar esta tcnica para as Units que voc desenvolver, sendo que dessa forma somente o cdigo da parte de implementao que visualizara as Units includas na clusula Uses. Exemplo: implementation {$R *.DFM} procedure TForm_ola.BotaoOlaClick(Sender: TObject); begin ShowMessage ('Ol, pessoal'); BotaoOla.Caption := 'Diga Ol Novamente'; end; procedure TForm_ola.FormClick(Sender: TObject); begin ShowMessageDlg ('Voc deu um clique fora do boto); end;
Pgina 12
Clusula Initialization
Serve para inicializar quaisquer variveis ou estrutura de dados, sendo que a inicializao ser feita apenas um nica vez: quando a Unit for acessada pela primeira vez. Exemplo: Initialization DataAtual := date; HoraAtual := time; end;
Clusula Finalization
Ser a ltima tarefa executada antes de encerrar uma Unit. Sua aplicao normalmente ser emprega nos casos de devem ser liberados recursos antes alocados. Exemplo: Finalization MeuObejto.Free; end;
Pgina 13
procedure TForm_ola.FormClick(Sender: TObject); begin MessageDlg ('Voc deu um clique fora do boto', mtWarning, [mbOK], 0); end; end.
Pgina 14
Object Pascal
uma linguagem Orientada a Objetos hbrida por possuir caractersticas de programao no s visual mas tambm escrita. Ela fora a voc executar passos lgicos o que torna mais fcil o desenvolvimento no ambiente Windows de aplicaes livres ou que utilizam banco de dados do tipo Cliente/Servidor, trabalha com o uso de ponteiros para a alocao de memria e todo o poder de um cdigo totalmente compilvel. Alm disso possibilita a criao e reutilizao (vantagem de re-uso to sonhado com a Orientao a Objetos) de objetos e bibliotecas dinmicas (Dynamic Link Libraries - DLL). Object Pascal contm quase todos os conceitos da orientao a objetos incluindo encapsulamento, herana e polimorfismo. capaz de suportar desde as facilidades do desenvolvimento visual at o desenvolvimento em um baixo nvel de programao (acesso as APIs do Windows e programao com cdigo Assembly). Como se pode perceber a base de toda a programao Delphi a linguagem Object Pascal, ento neste captulo trataremos de alguns aspectos deste tipo de programao.
Palavras Reservadas
Palavras-chave ou palavras reservadas so aquelas usadas pela sintaxe da linguagem com significado especfico e, portanto, no podem ser usadas com outra finalidade. O Object Pascal se utiliza das seguintes palavras reservadas: And Array As Asm Begin Case Class Const Constructor Destructor Div Do Downto Else End Except 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
Expresses
As expresses em Object Pascal (como em qualquer linguagem) so formadas por operadores e operandos; os operadores so divididos em quatro categorias bsicas: Unrios Multiplicativos Adicionais Relacionais @, Not >, /, div, mod, and, shl, shr, as +, -, or, xor =, < >, <, >, < =, > =, in, is
As expresses obedecem as regras bsicas de lgica para a precedncia da execuo das operaes.
Pgina 15
Identificadores
Identificadores so usados para definir nomes de constantes, tipos, variveis, procedimentos, funes, unidades, programas e campos de registros. Algumas regras devem ser observadas para a utilizao de identificados em Object Pascal: No existe limite de caracteres para o nome de um identificador mas apenas os 63 primeiros caracteres so significantes (no podendo ser idntico ao nome das palavras reservadas). O nome de um identificador deve ser iniciado por Letras ou pelo carcter underscore ( _ ). O resto formado por Letras, Dgitos, carcter underscore. No permitido a utilizao de espaos para a formao do nome. O Object Pascal no faz distino entre letras maisculas e minsculas nos nomes de identificadores.
Constantes
Uma constante um identificador com valor fixo. Um bloco de declaraes constante possui a seguinte expresso: const <Identificador> = <valor>; Exemplos: const Min = 0; Max = 100; MensOla = 'Instruo invlida';
Variveis
Para que o Delphi possa usar nossas variveis, devemos primeiro declar-las, isto , informar o nome e o tipo desejado. Um bloco de declaraes de variveis possui a seguinte expresso: var <lista de Identificadores> : <tipo>; Exemplo: Idade, X : integer; Salrio : Real; Note que a declarao do tipo de uma varivel, em princpio no lhe atribui valores. Um erro comum em programao tentarmos ler valores de variveis no inicializadas, ou s quais ainda no se atribuiu valor. A seguir apresentada uma lista dos tipos de variveis mais comuns do Object Pascal com suas faixas de valores e o espao ocupado em memria:
Pgina 16
Obs: o tipo padro para representar valores lgicos o tipo Boolean, ou outros so basicamente para atender compatibilidades com outras linguagens e o ambiente Windows.
Pgina 17
Tipos Ordinais
Tipos ordinais so os tipos integer, Caracter, Boolean, enumerao, sub-intervalos, ou seja, so tipos de dados ao qual se conhea o seu valor absoluto, o seu predecessor e o seu sucessor. Existem uma srie de operadores capazes de manipularem esses tipos de dados: Funo Ord Pred Succ High Low Retorno Valor da ordem do argumento Valor predecessor do argumento Valor sucessor do argumento Maximo valor possvel para a varivel do tipo em questo Mnimo valor possvel para a varivel do tipo em questo
Tipo Variant
Esse tipo de dado pode conter qualquer tipo de informao, na realidade o tipo de dado que uma varivel variant definido em tempo de execuo, quando atribumos um valor para ela. Esse tipo de dado bastante usado quando lidamos com OLE Object Linking and Embbeding, que usado como padro de transferncia de dados entre aplicaes no Windows, j que no sabemos se receberemos um texto, uma imagem, um objeto multimdia, etc.
Tipo Enumerado
Esse tipo de dado pode ser usado para representar uma lista de possveis valores que uma varivel pode conter. Podemos usar o tipo enumerado para representar por exemplo: tipo de profisso (assalariado, autnomo, empresrio), tipo de chamada telefnica (Local, DDD, DDI), consulta mdica ( convnio, particular), operaes aritmticas ( adio, subtrao, diviso, multiplicao). O que vemos que o tipo enumerado na verdade uma forma de nomear uma seqncia de valores, visto que, internamente o Object Pascal representa a enumerao com nmeros comeando do zero, para o primeiro elemento, um para o segundo e assim sucessivamente. Exemplo: Type TAlinhamento = (Direita, Esquerda, Centralizado, Justificado); Var Alinhamento : TAlinhamento; No ambiente Delphi muito comum o uso de enumeraes, vamos ver alguns exemplos:
Pgina 18
O Delphi define essas propriedades com os seguintes tipos de dados: type TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient); TFormBorderStyle = (bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin);
Tipo SubArange
Da mesma forma que os tipos enumerados, os tipos SubArange so definidos pelo programador, sendo que este determina para o novo tipo um intervalo de valores tomando como base um tipo ordinal. Exemplo: Type TContador = 0..100; //um subintervalo do tipo ordinal Integer Tdigitos = 0..9; //um subintervalo de caracteres do tipo char Var Contador : Tcontador; Dgitos : Tdigitos; Podemos definir SubArange de tipos enumerados, veja exemplo: Type TDiaSemana = (Domingo, Segunda, Tera, Quarta, Quinta, Sexta, Sbado); TDiaUteis = Segunda ..Sexta;
Pgina 19
Tipo Conjuntos
Atravs desse tipo de dados, suportado pelo Object Pascal, podemos manipular variveis usando os conceitos de conjuntos da matemtica. Exemplo: Type TDiaSemana = (Domingo, Segunda, Tera, Quarta, Quinta, Sexta, Sbado); TSemana = set of TDiaSemana; Var Semana : TSemana; Com esse tipo, conforme j foi dito acima, podemos trabalhar com as operaes matemticas de conjuntos. Vejamos alguns exemplos: Semana := [ ] // conjunto vazio Semana := [Tera,Quinta]; //atribuio de dois elementos ao conjunto; Semana := Semana + [Quinta,Sexta]; // unio de dois conjuntos Semana := Semana [Tera]; //Diferena entre dois conjuntos Semana := Semana * [Quanta,Quinta]; //interseo de dois conjuntos If [Segunda] in Semana then // operao de pertinncia de elementos If [Segunda, Tera] <= Semana then // est contido em semana If Semana >= [Quinta, Sexta] then // semana contm os dias quinta e sexta
Pgina 20
Operadores Aritmticos
+ * / Div Mod Adio Subtrao Multiplicao Diviso conjunto de reias Diviso inteira Resto da diviso inteira
Operadores Lgicos
And Or Not Xor Operador lgico E Operador lgico OU Operador lgico de negao Operador lgico Ou exclusivo
Operadores de Conjunto
+ * In <= >= Unio Diferena Interseco Pertence Est contido em Contm
Operadores de Classe
Is As Questionamento se um objeto de uma determinada classe Afirmao que um objeto de uma determinada classe
Pgina 21
Array Multidimensional
Arrays multidimensionais so conjuntos de variveis com o mesmo nome e diferenciadas entre si por dois ou mais ndices. Eles so teis para manipularmos grandes quantidades de dados de um mesmo tipo, pois evitam a declarao de diversas variveis. Sintaxe: <NomeVarivel> : array[i11..i12, i21..i22, in1..in2 ] of <tipo>; onde i1 e i2 ... in1..in2 representam os valores mnimo e mximo para cada dimenso do array respectivamente.
Pgina 22
Pgina 23
Comentrios
Para incluir um comentrio em qualquer parte do programa podemos fazer uso de trs tipos de delimitadores: {} e (* *) e //. Os dois primeiros delimitadores permitem que os comentrios sejam distribudos por vrias linhas. Eles marcam o incio e o fim do comentrio. Exemplos { Este um comentrio } (* Este um comentrio com duas linhas *) O terceiro tipo de comentrio se inicia com // e vai at o final da linha. Exemplo: A := B; // Comentrio at o final da linha.
Pgina 24
Pgina 25
Pgina 26
Estrutura Repeat-Untill
Sintaxe: repeat {bloco_de_comando} until expresso_booleana; Note que o bloco de comando executado em sequncia, enquanto a expresso_booleana for verdadeira e que o bloco de comando executado pelo menos uma vez, j que a expresso_booleana avaliada depois dele. No comando Repeat no necessrio usar a clusula begin e end, mesmo quando contiver mais de uma linha.
SubProgramas Funes
Uma funo se define em Pascal de forma semelhante a definio matemtica. Ela recebe valores como parmetros e retorna um outro valor como resultado. A definio de funo obedece a seguinte sintaxe : function nome_da_funcao(parametro_1:tipo_1,,,parametro_n:tipo_n) : tipo de retorno; var {declarao de variveis locais funo} begin {corpo da funo} end; O trecho de cdigo a seguir define a funo PRODXY, que retorna como resultado o produto de dois nmeros reais X e Y: function PRODXY(X,Y:Real) : Real; begin PRODXY := X*Y; end; Observe que o sinal de atribuio em Object Pascal := e, no o sinal de igual simplesmente.
Procedimentos
Prof. Evandro Csar Freiberger Pgina 27
Passagem De Parmetros
Podemos passar parmetros para uma funo ou um procedimento por valor e por referncia. Quando se passa um parmetro por valor estamos realmente passando um valor ou a cpia de um valor armazendo numa varivel. Quando a passagem se faz por referncia, estamos passando o endereo da varivel na memria e no o seu valor. Quando se altera, dentro da funo, o valor de uma varivel passada por por referncia esta alterao surte efeito em todo o programa (fora da funo). Para passarmos um parmetro por referncia devemos preced-lo da palavra reservada var. Ex: procedure nome_do_procedimento(var parametro1 : tipo1 ; parametro2 : tipo2);
Pgina 28
Classes
uma estrutura implementada atravs da unio de dados e cdigo numa mesma estrutura. Fazendo uma analogia com o Pascal, uma classe de objeto semelhante a um tipo registro, porm acrescenta-se, a capacidade de conter cdigo embutido nessa estrutura para manipulao dos seus prprios dados. De modo geral, uma linguagem para ser considerada como orientada a objetos precisa atender no mnimo os critrios de herana, encapsulamento e polimorfismo.
Pgina 29
//-------------------------------------------------------------------------//implementao do mtodo Destrutor Destruir //-------------------------------------------------------------------------Constructor TEmpregado.Destruir; begin Inherited Destructor; end; //-------------------------------------------------------------------------//implementao do mtodo SetNome //-------------------------------------------------------------------------Procedure TEmpregado.SetNome(nome:String); begin FNome := nome; FCodigo := FUltimoCodigo + 1; FUltimoCodigo := FCodigo; end; //-------------------------------------------------------------------------//implementao do mtodo GetNome //-------------------------------------------------------------------------Function TEmpregado.GetNome:String; Begin GetNome := FNome; end; //-------------------------------------------------------------------------//implementao do mtodo SetNascimento //-------------------------------------------------------------------------Procedure TEmpregado.SetNascimento(data:TDateTime); begin FNascimento :=data; end;
Pgina 30
//-------------------------------------------------------------------------//implementao do mtodo Consulta //-------------------------------------------------------------------------Procedure TEmpregado.Consulta; begin ShowMessage('Dados do Funcionrio(a): '+FNome+#13+ 'Matricula : '+intToStr(FCodigo)+#13+ 'Data Nasc : '+DateToStr(FNascimento)); end; //-------------------------------------------------------------------------//implementao do mtodo CalculaIdade, que atravs da data de nascimento //calcula a idade, tendo como base a data atual do sistema e devolve uma //string com o nmero de anos,meses e dias que a pessoa tem. //-------------------------------------------------------------------------Function TEmpregado.CalculaIdade:String; var numAno,numMes,numDia: word; Diferenca : TDateTime; begin Diferenca := Date - FNascimento; DecodeDate(Diferenca,numAno,numMes,numDia); CalculaIdade := 'A idade do(a) '+Fnome+' de '+intToStr(numAno-1900)+ ' Anos, '+intToStr(numMes)+' Ms e '+intToStr(numDia)+' Dias, '; end;
Pgina 31
Encapsulamento
a capacidade de ocultar a complexidade que foi necessria para sua implementao. Dessa forma o desenvolvedor que ir usar essa classe, no conhecer a complexidade de sua implementao, facilitando e agilizando o processo de implementao da aplicao.
Tipos de Encapsulamento
So definidos atravs dos atributos de visibilidade, que devem ser colocados antes dos membros que possuem o respectivo atributo. Os atributos podem aparecer em qualquer ordem, porm adotada como padro a ordem alfabtica ( private, protected, public, published). Exemplo: Type Tdialogo = Class Private Ffonte : Tfont; Fmin : Integer; Fmax : Integer; Procedure MudaFonte(Fonte:Tfont); Protected Procedure DesenhaTela; Property Fonte : Tfont read Ffonte write MudaFonte; Public Constructor Cria(nome : string); Destructor Destroi; Function Executa : Boolean; Published Property Min read Fmin write Fmin; Property Max read Fmax write Fmax; End; Obs : quando temos para o mesmo atribuito de visibilidade, mtodos e campos, os campos devem vir antes que os mtodos.
Pgina 32
Pgina 33
Herana
a capacidade que uma classe tem de herdar caractersticas (dados e cdigo) de uma classe ancestral, formando assim uma hierarquia de classes. No Delphi, qualquer classe pode herdar caractersticas de uma classe ancestral, com exceo da classe Tobject, que a classe ancestral de todas as outras. A herana o mecanismo que implementa o reaproveitamento de cdigo. Exemplo de herana Type TEmpregado = class (TObject) Protected FCodigo : word; FUltimoCodigo : word; FNome : string; FNascimento : TDateTime; Procedure SetNome(nome:string); Public Constructor Criar; Virtual; Function CalculaIdade:string; Procedure CalculaSalario; Virtual; Abstract; Procedure Demitir; Virtual; Abstract; Procedure Consulta; Virtual; property Matricula : Word read FCodigo; property Nome : String read FNome write SetNome; property Nascimento : TDateTime read FNascimento write FNascimento; end;
TEmpregadoCLT = class (TEmpregado) Private FSaldoFGTS:Double; FTempoServico:word; FTempoSemFerias:word; FNumFeriasPendentes: 0..2; FSalario:Double; Public Constructor Criar; override; Procedure CalculaSalario; override; Procedure Demitir; override; Procedure TirarFerias; Procedure Consulta; Override; property Salario : Double read Fsalario write FSalario; end;
Pgina 34