You are on page 1of 14

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

ALGUNS CONCEITOS DA LINGUAGEM BORLAND DELPHI

PALAVRAS CHAVE
Palavras-chave ou palavras reservadas so aquelas usadas pela sintaxe da linguagem com significado especifico e, portanto, no podem ser usadas com outra finalidade. As palavras-chave aparecem em negrito no Code Editor. Em nosso mdulo de cdigo forma, encontramos as seguintes palavra-chave, exibidas em negrito: unit : esta palavra-chave define o nome da unidade de cdigo. Este nome ser inserido na clusula uses de outras unidades que precisem fazer referencia a esta unidade. interface : define o inicio de um trecho de cdigo que termina antes da palavra-chave implementation. Neste trecho se insere o cdigo que poder ser acessado por outras unidades. E aqui que se declaram as constantes, as variveis. Os tipos de dados, funes e procedimentos a serem utilizados por outras unidades de c6digo. uses: esta palavra especifica as unidades de cdigo que sero acessadas por esta unidade. type : com esta palavra-chave o Delphi define o inicio do trecho de cdigo em que so definidos os tipos de variveis e de classes criados pelo programa. O aluno pode observar que o Delphi j utilizou esta parte para declarar a classe TFormaPrincipal. private : define os elementos de uma classe que no podero ser acessados de fora da classe; public : define os elementos de uma classe que podero ser acessados de fora da classe. var : define o inicio do trecho de cdigo em que so declaradas as variveis e objetos. implementation : define o inicio do trecho de cdigo em que so implementadas as funes e procedimentos declaradas no trecho iniciado pela palavra chave interface. end : palavra-chave usada para encerrar um bloco de cdigo. So blocos de cdigo: um bloco de comandos iniciado pela palavra chave begin, caso em que end deve ser seguida de um ponto-e-virgula (;). a definio de uma unit; neste caso a palavra end deve ser seguida de um ponto (.) e este ser o final do arquivo. Exceo : antes da clusula else em instrues condicionais if-then-else compostas, no se insere ponto (.) ou ponto-e-virgula (;), utilizando-se apenas a palavra end

VARIAVEIS
Nossos dados so armazenados na memria do computador. Para que ns no tenhamos que nos referir a estes dados de forma direta, atravs de um endereo numrico difcil de memorizar, o compilador nos permite utilizar variveis com esta finalidade. Escolhendo nomes sugestivos (mnemnicos) para nossas variveis facilitamos bastante a compreenso de nosso cdigo. Para que o Delphi possa usar nossas variveis, devemos primeiro declara-las, isto , informar o nome e o tipo desejados. Por exemplo : o comando a seguir declara idade como sendo uma
1 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

o nome e o tipo desejados. Por exemplo : o comando a seguir declara idade como sendo uma varivel do tipo inteiro (integer): idade : integer; As variveis inteiras podem assumir valores entre -32768 e +32767. Elas ocupam 2 bytes na memria. Assim sendo, a declarao acima faz com que o Delphi reserve 2 bytes para a nossa varivel idade. 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 as quais ainda no se atribuiu valores. Damos a seguir uma lista dos tipos de variveis mais comuns do Object Pascal com suas faixas de valores e o espao ocupado em memria: BOOLEAN: Tipo lgico que pode assumir somente os valores TRUE ou FALSE e ocupa 1 byte de memria. BYTE: Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 255, ocupa 1 byte. CHAR: Tipo alfa-numrico, pode armazenar um caractere ASCII, ocupa 1 byte. COMP:Tipo numrico real, pode assumir valores na faixa de -9.2.1018 a 9.2.10+18, ocupa 8 bytes, pode ter entre 19 e 20 algarismos significativos. EXTENDED: Tipo numrico real, pode assumir valores na faixa de 3,4.10-4932 a +1,1.10+4932, ocupa 10 bytes de memria e tem entre 19 e 20 algarismos significativos. INTEGER: Tipo numrico inteiro, pode assumir valores numa faixa de -32768 a +32767, ocupa 2 byte de memria. LONGINT: Tipo numrico inteiro, pode assumir valores numa faixa de -2147483648 a +2147483647, ocupa 4 bytes de memria. REAL: Tipo numrico real, pode assumir valores na faixa de -2,9.10-39 a +1,7.10+38, ocupa 6 bytes de memria e tem entre 11 e 12 algarismos significativos. SHORTINT: Tipo numrico inteiro, pode assumir valores numa faixa de -128 a +127, ocupa 1 byte de memria. SINGLE: Tipo numrico real, pode assumir valores numa faixa de 1,5,10-45 a +3,4.10+38, ocupa 4 bytes de memria, e tem de 7 a 8 algarismos significativos. WORD: Tipo numrico inteiro, pode assumir valores numa faixa de 0 a 65535, ocupa 2bytes de memria. STRING: Tipo alfanumrico, possuindo como contedo uma cadeia de caracteres. O nmero de bytes ocupados na memria varia de 2 a 256, dependendo da quantidade mxima de caracteres definidos para a string. O primeiro byte contem a quantidade relativa de caracteres da cadeia. Os nomes de variveis devem comear com uma letra ou o caractere sublinhado (_) seguido por uma seqncia de letras, digitos ou caractere sublinhado (_) e no podem conter espao em branco nem quaisquer tipos de acentos. Os nomes de variveis podem ter qualquer tamanho mas somente os 63 primeiros caracteres sero considerados. Exemplos : Para definir uma varivel Nome do tipo string e uma varivel Salario do tipo double, podemos inserir as seguintes linhas de cdigo na clusula var da unidade de cdigo correspondente. Nome : string; Salario : double; Pode-se declarar mais de uma varivel do mesmo tipo na mesma linha, separando-as por virgula. nome, funo, endereo : string;

ARRAYS (VETORES)
2 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

ARRAYS (VETORES)
Arrays so conjuntos de variveis com o mesmo nome e diferenciadas entre si por um indice. Eles so teis para manipularmos grandes quantidades de dados de um mesmo tipo pois evitam a declarao de diversas variveis. Considere o caso de um programa de Folha de Pagamento que precise armazenar os seguintes dados referentes a 100 funcionrios: nome, funo, salrio, etc... Seriamos obrigados a declarar 100 variveis nome, 100 variveis funo, etc... O array nos permite declarar uma nica varivel com um ndice para apontar para as diferentes ocorrncias. Declara-se um array da seguinte forma: nome_da_variavel : array[i1 .i2] of tipo_de_variavel onde i1 e i2 representam os valores mnimo e mximo, respectivamente, do ndice. O Object Pascal permite que i1 e i2 possuam qualquer valor desde que i1 seja menor ou igual a i2. Assim, poderamos declarar um array de 100 variveis inteira idade de varias formas diferentes: idade : array [1..100] of integer; ou idade : array [-100..-1] of integer; ou idade : array [0. .99] of integer, etc...

Pode-se definir arrays multidimensionais (com vrios indices) como, por exemplo: espaco3d: array[1 .10,-5. .20,0. .30] of double; que pode armazenar 10x26x31 =8060 variveis do tipo double. Um dos casos mais comuns a matriz com m linhas e n colunas: matriz : array[1 ..m,1 ..n] of qqer_tipo. Os elementos dos arrays podem ser quaisquer tipos de variveis ou objetos.

RECORDS (REGISTROS)
O Object Pascal permite definir tipos compostos de variveis denominados registros. Define-se da seguinte forma: nome_do_tipo: Record variavel1 : primeiro-tipo; variavel2 : segundo~tipo; end; variaveln : n-zimo-tipo; varivel1 ,variavel2.. variveis so chamadas de campos do registro. Declaramos uma varivel deste tipo da mesma forma que procedemos para declarar variveis de qualquer tipo pr-definido varivel : nome_do_tipo; Usamos a notao de ponto para acessar um campo de uma varivel composta:
3 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

Usamos a notao de ponto para acessar um campo de uma varivel composta: nome_da_varivel.nome_do_campo; Exemplo: funcionario = Record nome : string; funcao : string; salario : double: end; Assim, no exemplo citado anteriormente, ao invs de declararmos um array nome de 100 elementos, um array funo de 100 elementos, um array salrio de 100 elementos, podemos declarar uma nica varivel chamada empregado, por exemplo, como sendo um array de 100 elementos do tipo funcionrio. empregado: array[1 .100] of funcionario; Para obter os dados do dcimo funcionrio, basta fazer: empregado[10].nome; empregado[10].funo; empregado[10].salario;

CLASSES E OBJETOS
Definio de classe: nome_da_classe_derivada class(nome_da_classe-base) private {propriedades, campos e mtodos privados} public {propriedades, campos e mtodos Pblicos} end; A definio de uma classe bastante similar a de um registro. As classes, diferentemente dos registros podem conter funes ou procedimentos, chamados mtodos, alm de variveis. Quando uma classe derivada de outra (chamada classe base, classe pai ou classe me), ela herda os campos, propriedades e mtodos da classe base. O Delphi possui uma classe chamada TObject da qual todas as demais classes se derivam, ou seja, todas as classes so derivadas de Tobject ou de classes derivadas de TObject. Quando voc deriva uma classe de TObject , no preciso declarar explicitamente a classe base pois o Delphi assume TObject como default. Um objeto uma instncia de uma classe, isto , depois de definirmos uma classe podemos declarar e utilizar objetos desta classe, da mesma forma que podemos declarar e usar uma varivel composta (um registro, por exemplo) depois que o tivermos definido. De forma anloga, tambm; nos referimos aos elementos de um objeto utilizando a notao de ponto: nome-do-objeto.nome_do_elemento; =

COMPONENTES, CONTROLES E PROPRIEDADES


O Delphi j possui muitas classes predefinidas para utilizao no ambiente Windows. Algumas
4 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

O Delphi j possui muitas classes predefinidas para utilizao no ambiente Windows. Algumas das classes do Delphi, chamadas genericamente de componentes podem ser acessadas atravs da paleta de componentes. Outra classe bastante utilizada a classe Tform que define um formulrio, mas que no est disponvel na paleta de componentes. As propriedades so um tipo especial de campo em um objeto, cujo valor pode, em alguns casos, ser alterado usando-se o Object Inspector, como fizemos, por exemplo, com a propriedade Caption. Outras propriedades s podem ser alteradas por programa (run-time). O sistema de Help do Delphi fornece, para cada classe, uma listagem completa de suas propriedades e seus mtodos.

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_I : tipoI ,,,,,parametro_n:tipo_n) : tipo de retorno var {declarao de variaveis locais funo} begin (corpo da funco} 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. Em Object Pascal podem-se usar os seguintes operadores aritmticos:

+ * /

: Soma; : Subtrao; : Multiplicao; : Diviso; div : Diviso inteira mod : Resto da diviso inteira. O Object Pascal tem vrias funes predefinidas, parte das quais listamos a seguir: Abs(x) Retoma o valor absoluto de x. ArcTan(x) Retorna o valor do arco tangente de x (em radianos).
5 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

ArcTan(x) Retorna o valor do arco tangente de x (em radianos). Cos(x) Retorna o cosseno de x (x em radianos). Dec(x) Decrementa (subtrai 1) uma varivel inteira x. Exp(x) Retorna o valor de e elevado a x, onde e a base dos logaritmos neperianos. Frac(x) Retorna a parte fracionria do real x. lnc(x) Incrementa (soma 1) uma varivel inteira x. lnt(x) Retorna a parte inteira do real x. Ln(x) Retorna o logaritmo neperiano de x. ODD(x) Retorna True se x for impar. Sqr(x) Retorna o quadrado de x. Sqrt(x) Retorna a raiz quadrada de x.

PROCEDIMENTOS
Um procedimento semelhante a uma funo, mas no retoma um valor. A chamada a um procedimento no pode ser colocada do lado direito de um comando de atribuio. A definio de um procedimento obedece a seguinte sintaxe: procedure nome_do_procedimento(parametro_1 :tipo_1 ,,,,parametro_n : tipo_n) var (declarao de variveis locais ao procedimento} begin {corpo do procedimento} end;

PASSAGEM DE PARAMETROS
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 armazenado numa varivel. Quando a passagem se faz por referencia, 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 precede-lo da palavra reservada var.

METODOS E EVENTOS
Um mtodo um tipo especial de procedimento ou funo, definido dentro de uma classe. Por ser definido dentro da classe, ele pode acessar diretamente os campos dela sem a necessidade de passar este campos como parmetros. Para executar um mtodo de uma determinada classe basta usar a mesma notao de ponto usada para acessar um campo. Um evento muito semelhante a um mtodo pois ambos so definidos internamente a uma classe. A diferena que os eventos so executados em resposta a alguma ao do usurio ou em resposta a uma mensagem enviada pelo Windows. Cite-se como exemplo o evento OnClick de um formulrio, um procedimento que executado toda vez que o usurio d um clique com o mouse sobre o formulrio. Isto permite que o nosso programa execute alguma ao quando o usurio clica com o mouse sobre o controle.

6 de 14

11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

ESTRUTURAS DE CONTROLE EM OBJECT PASCAL


Nos limitaremos a apresentar uma breve descrio da sintaxe dessas estruturas; os prximos exemplos utilizam-nas e servio de exemplos de aplicao. ESTRUTURA CONDICIONAL { If-Then-Else } Sintaxe: if (condio) then begin {Bloco de comandos executados se a funo for verdadeira} end else begin {Bloco de comandos executados se a funo for falsa} end; 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 funo for verdadeira} end; Note que o end que precede a clausula else no seguido de ";". Note que as clusulas begin e end 56 so necessrias para blocos com mais de uma linha. ESTRUTURA CONDICIONAL { case-of } Sintaxe: case expressao of constante_1_1,... constante_1_n : bloco_de_comando_1 constante_2_1 ,.. constante_2_n : bloco_de_comando_2 constante_n_1 ,... constante_n_n: bloco_de_comando_n: else bloco_de_comando; end;

7 de 14

11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

O comando "case" um substituto mais elegante e mais legvel 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; ESTRUTURA DE REPETIO {for - to} {for-downto} Sintaxe: for contador:= valor_inicial to valor_final do begin (bIoco~de_cornandos} 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 encerra) a ser assumido pelo contador, deve ser inteiro; 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_cornandos} end; Note que as clusulas begin e end s so necessrias para blocos com mais de uma linha. ESTRUTURA DE REPETIO {while-do} Sintaxe: while expressao_booleana do
8 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

while expressao_booleana do begin bloco_de_cornando end; Note que o bloco_de_comando executado enquanto a expressao_booleana for verdadeira. Note que como a expresso_booleana avaliada antes da execuo do bloco_de_comando, se a expressao_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 DE REPETIO {repeat-until} Sintaxe: repeat bloco_de_comando until expressao_booleana; Note que o bloco de comando executado em seqncia, enquanto a expressao_booleana for verdadeira. Note que o bloco de comando executado pelo menos uma vez, j que a expressao_booleana avaliada depois dele. Note que bloco_de_comando pode exigir as clusula begin e end se contiver mais de uma linha. ESTRUTURA {with} Sintaxe: with identificador_de_registro(objeto) do bloco_de_cornando

Note que with uma forma abreviada de referenciar os campos de um registro ou os campos e mtodos de um objeto. Dentro do bloco_de_comando (com with) uma varivel ou mtodo fica completamente identificada usando-se apenas seu identificador de campo. Note que bloco_de_comando pode exigir as clusula begin e end se contiver mais de uma linha. ESTRUTURA { try-except-end } Sintaxe: try sequencia_de_cornandos except
9 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

except bloco_a_ser_executado_no_caso_de_erros end; Esta estrutura nos permite tratar de forma conveniente os erros ocorridos no programa. Sem ela, ocorrendo um erro, o Delphi dispara o seu mecanisrno de tratamento de excees, normalmente emitindo uma mensagem de erro em ingls e no nos dando chance de recuperao. Com esta estrutura podemos detectar o erro, fornecer uma mensagem inteligvel e permitir o retorno rotina onde ocorreu o erro e permitir, por exemplo, a possibilidade de digitao.

OPERAES COM REGISTROS E CAMPOS (Componentes TFieId)


O Delphi encapsula cada campo de uma tabela com um componente TField prprio (do tipo desejado), forarn usados TStringFields, TSmallntFieId, TCurrencyField. Devemos usar o Fields Editor (Editor de Campos) para manipular os componentes Tfields, durante o projeto. Este editor nos permite determinar quais campos queremos mostrar no formulrio. Para abrirmos o Editor de Campos, basta dar um duplo clique sobre o componente TTable. Aparece o Fields Editor. Clique no boto direito do mouse e selecione Add Fields... para aparecerem os nomes dos campos disponveis; Selecione o campo que voc quer que aparea no formulrio, dando um clique sobre ele e clique OK; proceda da mesma forma para os outros campos desejados (Add, seleo, OK...): caso desejado mude a ordem de disposio dos campos bastando, para isso clicar e arrastar o campo para a posio desejada. (isto depois que todos os campos desejados estiverem selecionados). No nosso caso selecione todos os campos. Observando o Object Inspector voc notar que o Delphi incluiu vrios objetos da classe Tfield. Feche o Fields Editor pelo menu de sistema. O aluno deve fazer urna anlise de vrias propriedades em especial as possibilidades de formatao. Estando sobre una determinada propriedade, deve-se teclar F1 para obter o Help correspondente. As seguintes propriedades se destinam a formatao de campos: DisplayFormat : para especificar o formato de visualizao do dado; EditMask: fornece uma mscara de edio. Display width e Alignment especificam nmero de caracteres e alinhamento. Pode-se usar o evento OnGetText para formatar valores de campo durante a programao. Esse evento ocorre sempre que o Delphi vai mostrar o contedo do campo. Para validar (por programa) a entrada de dados utilize o evento OnValidate que acionado sempre que o valor de um campo modificado.

PROCURANDO DADOS:
Devemos usar o mtodo FindKey para procurar por um determinado valor de um campo numa tabela. O campo precisa estar indexado para usarmos este mtodo. Por exernplo:

10 de 14

11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

Tablen.Findkey([Maria]) para um campo Nome que indexe a tabela Tablen. Para ndices compostos de mais de um campo use: Tablen.FindKey([valorl, valor2', 'valor3']) Alm do FindKey, as verses 2, 3 e 4 do Delphi possibilitam o uso de Locate e Lookup....????????????

OUTRAS FORMAS DE ACESSAR CAMPOS


Voc pode usar o mtodo FieldByName para acessar o valor de um campo. Voc passa o nome do campo como parmetro. Por exemplo: Editn.Text := Tablen.FieldByName('Norne') atribui a caixa de edio Editn o valor do campo 'Nome da tabela Tablen. (Nota: Nome no precisa ser campo ndice). Se o campo no for do tipo string, utilize a funo de converso AsString; EditnText := Tablen . FieldByName('codigo').AsString; Voc tambm pode usar a propriedade Fields que utiliza como parmetro o nmero de ordem do campo na tabela. Por exemplo, para atribuir a caixa de edio Editn o valor do campo Nome, que o terceiro campo na tabela Tablen voc faz Editn.Text := Tablen.Fields[2]; { 0 primeiro campo tem o ndice 0} ou Editn.Text := Tablen.Fields[n].AsString; para um campo que no

seja do tipo string. Nota: Neste mtodo corre-se o risco de bugs se a estrutura da tabela for modificada j que neste caso a ordem e a posio dos campos pode mudar.

FILTRAGEM DE REGISTROS:
Os mtodos abaixo (aplicveis apenas a campos indexados para tabelas do tipo Dbase e Paradox) permitem filtrar registros de uma tabela SetRangeStart : estabelece o limite inicial do filtro; SetRangeEnd : estabelece o limite final do filtro; ApplyRange : aplica o filtro a tabela; CancelRange : cancela o filtro aplicado a tabela Como alternativa pode-se usar; SetRange([Valorlnicial],[Valorfinal]): estabelece os valores inicial e final do filtro e aplica a tabela. Exemplo: Tablen.SetRangeStart; Tablen.FieldByNarne('Codigo') := 20; TablenSetRangeEnd; Tablen.FieldByNarne('Codigo') := 60;
11 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

Tablen.FieldByNarne('Codigo') := 60; Tablen.ApplyRange; O exemplo permite filtrar todos os registros com cdigo > 20 e menor que 60; Voc pode usar os mtodos EditRangeStart e EditRangeEnd para mudar valores atribudos anteriormente. Voc pode usar ndices mltiplos para filtrar seus registros. O exemplo a seguir vai filtrar todos os registros com cdigo > 20 e nome igual a Maria. Tablen SetRangeStart; Tablen.FieldByNarne('Codigo') := 20; Tablen Field ByName('Norne) := 'Maria'; Tablen.SetRangeEnd; Tablen ApplyRange;

A PROPRIEDADE KEYEXCLUSIVE DE TTABLE


A propriedade KeyExclusive falsa por default, isto , o filtro ir procurar valores maiores ou iguais ao do limite inicial e menores ou iguais ao do limite final. Se voc quiser (no exemplo com os limites 20 e 60 para o cdigo) que o valor 20 no faa parte do filtro, (ou seja Cdigo > 20), faa, por exemplo TablenSetRangeStart; Tablen.FieldByNarne('Codigo') := 20; Tablen.KeyExclusive := True; Tablen.SetRangeEnd; Tablen ..FieldByNarne('Codigo') := 60; Tablen ApplyRange;

HABILITANDO E DESABILITANDO A VISUALIZAO DE DADOS


Antes de iniciar um filtro pode ser importante voc desabilitar os componentes de visualizao inseridos no formulrio, j que o filtro afeta todo o conjunto de dados (dataset). Esta providncia importante para se ganhar tempo, evitando que os componentes de Visualizao fique mostrando dados provisrios e fique com flickering. Use estes controles com cuidado pois o usurio espera que os controles de visualizao mostrem a realidade continuamente, assim, tendo desabilitado os controles, trate de habilita-los logo que possvel. Faa: Tablen.DisableControls - antes de aplicar o filtro e Tablen.EnableControls aps a aplicao do filtro. Deve-se usar um bloco try ... finally e comandar Enable dentro da clausula finally, seno, se
12 de 14 11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

Deve-se usar um bloco try ... finally e comandar Enable dentro da clausula finally, seno, se ocorrer uma exceo os componentes de visualizao no sero retornados.

NAVEGANDO PELO DATASET:


First : move o ponteiro para o primeiro registro Last : move o ponteiro para o ltimo registro Next : move o ponteiro para o prximo registro Prior : move o ponteiro para o registro anterior MoveBy: move para a frente (se parmetro positivo) ou para trs (se parmetro negativo) um nmero especificado de registros, por exemplo : MoveBy(2), avana dois registros. Next : eqivale a MoveBy(l) e Prior eqivale a MoveBy(-l)

PROPRIEDADES BOF e EOF


BOF = True indica que o ponteiro est no primeiro registro da tabela e ocorre nos seguintes casos: Quando voc abre a tabela; Quando voc executa o mtodo First; Quando voc executa o mtodo Prior e ocorre uma falha EOF = True indica que o ponteiro est no ltimo registro da tabela e ocorre nos seguintes casos: Quando voc abre um dataset vazio. Quando voc chama o mtodo Last; Quando voc chama o mtodo Last e ocorre falha no ndice. Exemplo: while not Tablen.EOF do begin { Faa algum processamento no registro} Tablen.Next; end;

MODIFICANDO REGISTROS:
Utilize Edit para possibilitar a modificao de dados no registro, em seguida utilize Post para gravar os novos dados no registro: Tablen.Edit; {Comando de edio} Tablen.Post; Utilize Insert para inserir um registro aps o registro corrente; Utilize Append para inserir um registro no final do arquivo; Obs: Ao comandar Post, se houver um ndice, o registro ser inserido na posio dada pelo ndice. Utilize Delete para deletar um registro;

13 de 14

11/07/2011 08:37

Borland Delphi

http://gpazini.sites.uol.com.br/ConcDelphi.htm

Utilize Cancel para cancelar alteraes feitas (antes de comandar Post); Utilize Refresh para apagar os bufers locais e buscar os dados originais na tabela (arquivo). Este cornando pode aparentar resultados inesperados por exemplo : se um usurio est vendo um registro e um segundo usurio (em compartilhamento) deleta o registro, parecer que o registro desapareceu quando o aplicativo usar Refresh. Utilize a propriedade CanModify (de TTable) para permitir ou proibir modificaes no dataset. Se = True Os dados podem ser alterados.

MARCANDO UM REGISTRO
Para marcar um registro e permitir que, aps vrias operaes se volte a ele, utilize: GetBookMark : marca o registro associando a ele uma propriedade do tipo Tbookrnark; GoToBookMark: leva o ponteiro at o registro marcado; FreeBookMark : desmarca o registro.

VOLTAR

14 de 14

11/07/2011 08:37

You might also like