Escolar Documentos
Profissional Documentos
Cultura Documentos
Pgina 1 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
CONTEDO PROGRAMTICO
Pgina 2 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pgina 3 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Palheta Standard
Palheta responsvel por criar novas units, abrir units existentes, salvar a unit atual, salvar tudo
e adicionar ou remover units externas aos nossos projetos.
Palheta Desktop
Esta palheta serve para configurarmos o nosso ambiente de trabalho, j existem alguns
modelos prontos, porm voc pode personalizar seu ambiente de trabalho, com as janelas e
posies das mesmas da forma que voc preferir.
Palheta View
Responsvel por Visualizar as units, formulrios e alternar entre Visual (form) e Cdigo (unit)
Palheta Debug
Pgina 4 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
No curso bsico trabalharemos com projetos do tipo VCL Forms Application, d dois cliques
sobre essa opo e um novo projeto ser criado.
Nesta palheta voc poder gerenciar os projetos abertos, visualizando seus arquivos,
plataforma que ser usada para depurao (Windows, Mac, Ios..), adicionando e removendo
novos arquivos ao projeto.
Pgina 5 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Esta uma das palhetas que teremos o maior contato durante o desenvolvimento, atravs
dela que acessaremos as propriedades e eventos do componente selecionado, no exemplo
abaixo foi selecionado um Edit (caixa de entrada) e o object inspector est listando todas as
propriedades do mesmo, na segunda imagem o object inspector est listando todos os eventos
do Edit selecionado.
Menu View
Atravs deste Menu voc poder abrir janelas e visualizar os atalhos para cada uma delas.
Pgina 6 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Um projeto uma coletnea de arquivos necessrios para que um programa possa funcionar,
no Delphi XE3 existem diversos tipos de projetos, como por exemplo:
VCL Forms Aplicattion Aplicao baseada em formulrios VCL (Visual Component Library),
biblioteca de componentes visuais, a VCL herda do Windows o visual de seus componentes,
podendo inclusive serem modificados caso o tema do Windows seja modificado.
Firemonkey Desktop Application Aplicao que pode ser usada em mltiplas plataformas
desktop (Windows, Mac Os), com componentes redesenhados e estilizados.
VCL Metropolis UI Application Aplicao baseada em VCL, porm com recursos visuais do
tema Metropolis (Windows 8).
Pgina 7 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Este ser o projeto que utilizaremos durante o curso, baseado em uma biblioteca de
componentes visuais, herdadas da API (Application Programming Interface - Interface de
Programao de Aplicativos) do Windows, caso voc troque a aparncia do Windows, a
aplicao sofre modificaes visuais, pois a prpria API do Windows que desenha os
componentes.
Exemplo de um projeto
Pgina 8 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
{$R *.dfm}
Pgina 9 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pgina 10 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Como o foco de nosso curso so alunos que j tem um certo conhecimento em C ou Java,
explanaremos aqui as principais diferenas de sintaxe entre as duas linguagens.
Operadores
+ Soma
- Subtrao
* Multiplicao
/ Diviso
Comentrios
(*
Comentrio em
Bloco
*)
{
Comentrio em
Bloco
Em C Em Pascal
Atribuio = :=
Comparao == =
Estrutura condicional If (cont==3) If (cont=3) Then
{ Begin
} End;
} End
else else Begin
{
} End;
Lao de Repetio FOR for (i=0;i<=3;i++) for cont:=0 to 3 do
{ Begin
} End;
} End;
Pgina 11 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
{ Do Begin
} End;
Mdulo ou resto da Diviso If ((4 % 2) ==0) If ((4 mod 2)=0)
{ Then Begin
printf (" par ); Showmessage( par);
} End;
Procedimentos
Em C
void soma()
{
Em Pascal
Procedure Soma;
Begin
End;
Funes
Em C
Int soma()
{
return 30; // sai da funo nesta linha e retorna 30
}
Em Pascal
Function soma:integer;
Begin
Result:=30; //armazena 30 na varivel de retorno, mas no sai nesta linha
Exit; //no obrigatrio, mas serve para sair da funo.
End;
Em C
Em Pascal
Pgina 12 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
result:=a+b;
End;
Em C
Em Pascal
ESCOPO DE VARIVEIS
Assim como em C, se uma varivel for declarada dentro de uma funo, o escopo dela apenas a
funo.
Para declarar uma funo em Pascal existem reas especficas para esse procedimento, diferentemente
de C que uma varivel pode ser declarada em qualquer parte do cdigo.
Procedure Soma;
Var
A,b:integer;
Texto:string;
Begin
End;
Declarando uma varivel Global a uma Unit (no var antes do implementation da unit, junto a varivel do
formulrio)
var
Form2: TForm2;
Aglobal:integer; //aqui
implementation
{$R *.dfm}
....
Inteiros
Pgina 13 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
LongInt -2147483648..2147483647
Integer -2147483648..2147483647
Int64 -2^63..2^63-1
Byte 0..255
Word 0..65535
LongWord 0..4294967295
Cardinal 0..4294967295
UInt64 0..2^64-1
Tipos Float
Tipo Booleano
Tipos de caracteres
Funes de String
A:=teste;
B:=de texto;
C:=A+B+ usando concatenao de strings;
Pgina 14 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Na converso o parmetro deve conter um valor correto para o tipo destino, caso contrrio gerar uma
excesso.
ValorData:=strtodate('01/01/2000');
ValorDataHora:=strtodatetime('01/01/2000 00:00');
ValorString:=datetostr(ValorData);
ValorString:=FormatDatetime('yyyy/mm/dd', ValorDataHora);
ValorInteiro:=strtoint('22');
ValorCurrency:=strtocurr('10,25');
ValorFloat:=strtofloat('10,2252');
ValorString:=inttostr(332);
ValorString:=CurrtoStr(200.25);
ValorString:=CurrtoStr(200.2566);
End;
Pgina 15 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
COMPONENTES BSICOS
Form Formulrio
Propriedades Principais
Eventos
Pgina 16 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Grande parte destes eventos existiro em outros componentes da VCL, portanto a explicao
para eles estendem-se para outros eventos, inclusive alguns cdigos de eventos sero
exemplificados aqui em outros componentes, como por exemplo Edits.
OnCreate(Sender: TObject);
Parmetros
Sender do tipo Tobject = um parmetro comum na maioria dos eventos, indica que invocou
o evento (sender = remetente), o tipo dele o tipo de onde descendem todos os objetos da
VCL, podemos usar este evento para saber qual componente invocou o mtodo, entre outras
manipulaes mais avanadas.
end;
OnDestroy(Sender: TObject);
Parmetros
Sender = J estudado
end;
OnShow(Sender: TObject);
Parmetros
Sender = J estudado
end;
Este evento invocado no momento que o formulrio recebe um comando de fechamento, seja
ele via cdigo ao clicar no cone para fechar ou com teclas de atalho (Alt+F4).
Parmetros
Sender = j estudado
Action do tipo TCloseAction = um parmetro que indica a ao a ser tomada pelo formulrio,
os possveis valores so: caNone, caHide, caFree, caMinimize
Pgina 17 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
OnActivate(Sender: TObject);
Este evento invocado na ativao do Formulrio (toda vez que a janela do formulrio entra
em Foco)
Parmetros
Sender = j estudado
end;
OnClick(Sender: TObject);
Este evento invocado toda vez que o formulrio recebe um click do mouse
Parmetros
Sender = j estudado
end;
OnDblClick(Sender: TObject);
Este evento invocado toda vez que o formulrio recebe um duplo click do mouse
Parmetros
Sender = j estudado
end;
Este evento invocado toda vez que o formulrio recebe o pressionamento de uma tecla
Parmetros
Sender = j estudado
Key do tipo Char sinalizado como o identificador var, isto significa que ele foi enviado via
referncia e que seu valor pode ser alterado, esse parmetro contm a tecla que foi
pressionada, portanto possvel fazer tratamento com esse parmetro.
Pgina 18 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
end;
if (key=#13)
then Self.Edit1.SetFocus;
if (key<>'1')
then Key:=#0;
end;
Neste exemplo se a tecla pressionada foi o Enter (#13 o cdigo ASC da tecla) ele ir enviar o
Foco para o Edit1.
Se qualquer tecla diferente do 1 for pressionado a Key anulada, enviando o cdigo #0 para
ela, isso far com o que for digitado seja descartado e nem seja mostrado no edit1.
Este evento invocado toda vez que o formulrio recebe o pressionamento de uma tecla para
baixo.
A outra diferena entre as funes que o parmetro Key da OnKeyPress um caracter ASC,
j o parmetro Key da OnKeyDown um caracter WORD, ou seja, o cdigo numrico da
Pgina 19 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Algumas teclas tem constantes pr-definidas, assim voc no precisar saber o cdigo
numrico delas, a lista de constantes imensa, para pesquis-la inteira procure por Virtual key
Codes no Help do Delphi, ou use o link
ms-help://embarcadero.rs_xe3/rad/Virtual_Key_Codes.html
Parmetros
Sender = j estudado
Key do tipo Word, contm o cdigo numrico da tecla pressionada, pode ser alterado
Parmetro Shift
O parmetro Shift serve para indicar se teclas como o Shift, Ctrl, Alt, botes de mouse ou
dispositivos touchs esto pressionadas tambm.
Exemplo
if (ssCtrl in Shift)
Then Showmessage(Control pressionado);
Pgina 20 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Exemplo de como simular o Atalho Ctrl + T para selecionar todo o texto do Edit
Veja que foi usado o comando CHR(key), este comando retorna o caractere ASCII
correspondente ao cdigo enviado de parmetro.
Este evento invocado toda vez uma tecla solta, inverso do onkeydown, ele segue os
mesmos parmetros do OnKeyDown j estudado.
Label
Encontrado Palheta Standard
Propriedades Principais
Eventos principais
OnClick, OnDblClick,
Pgina 21 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Principais eventos
Parmetros
Sender = j estudado
OnEnter (Sender:TObject);
Parmetro
Sender = J estudado
Pgina 22 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
OnExit (Sender:Tobject);
Este mtodo invocado quando o Edit perde o foco, ou seja, o foco enviado para outro
controle.
Parmetro
Sender = j estudado.
SetFocus
Self.Edit1.setfocus;
Button = Boto
Encontrado na Palheta Standard
Principais Propriedades
Caption = Texto do Boto, o uso do caractere & indica o caractere de atalho para o boto.
Exemplo: &Abrir = A Letra A ser o atalho (Alt A) pois foi precedida do caractere &
Principais eventos
Funes Auxiliares
Now - varivel global do tipo datetime que retorna a data e a hora atual
Showmessage(Teste de Mensagem);
Showmessage(A hora agora +timetostr(now)); //mensagem indicando a hora atual
Se uma Exceo ocorrer no sistema sem o uso do bloco Try Except o sistema paralisa a
execuo na linha que gerou o erro e mostra uma mensagem de erro na tela.
Pgina 23 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Try
//regras de negcios
Except
//tratamento do erro
End;
Exemplo
Try
Strtoint(esta conversao vai gerar um erro);
Showmessage(esta mensagem no ser mostrada);
Except
Showmessage (Erro na converso de string para inteiro);
//... aqui voc pode digitar outros comandos
End;
Pgina 24 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Exerccio 01
EdtValorInteiro
EdtOperador
EdtValorFloat
BtCalcula
BtLimpar
LbResultado (label com o texto 0,00)
Regras de Negcio
Ao entrar no programa os edits devem estar limpos, a lbresultado deve estar com o
valor 0,00 e o foco deve estar no edtvalorinteiro
Ao sair do EdtValorInteiro o sistema dever verificar se ele contm um valor inteiro
vlido, caso no tenha o sistema deve emitir uma mensagem de erro e retornar o foco
para o edtValorInteiro
Ao sair do Edtoperador o sistema dever verificar se ele contm um operador (+ - / *)
vlido, caso no tenha o sistema deve emitir uma mensagem de erro e retornar o foco
para o EdtOperador
Ao sair do EdtValorFloat o sistema dever verificar se ele contm um valor float vlido,
caso no tenha o sistema deve emitir uma mensagem erro e retornar o foco para o
EdtValorFloat.
Ao clicar no boto BtCalcula o sistema dever realizar a operao utilizando os valores
e o operador digitado, retornar o resultado na label LBRESULTADO e voltar o foco
para edtvalorinteiro.
Ao clicar no Boto limpar o sistema dever limpar os valores dos edits, deixar a
lbresultado com o valor 0,00 e setar o foco para o edtvalorinteiro
O foco deve estar correto de acordo com a ordem dos componentes na tela
Pgina 25 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Principais eventos
Exemplo
if (Self.CheckBox1.Checked=True)
then Showmessage('Caixa selecionada')
Else Showmessage('Caixa no selecionada');
Principais Propriedades
Principais eventos
Exemplo
if (Self.RadioButton1.Checked=True)
then Showmessage('Caixa selecionada')
Else Showmessage('Caixa no selecionada');
Panel = Painel
Encontrado Palheta Standard.
Pgina 26 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
um painel que pode ser usado para organizar os componentes e criar grupos, por exemplo
se um panel for desativado (enabled=false), nenhum dos componentes do Panel poder ser
acessado, se um panel for movido, todos os componentes do panel sero movidos juntos com
ele.
Principais Propriedades
Principais eventos
Exemplo
Self.Panel1.Enabled:=False;
Image = imagem
Encontrado na Palheta Additional.
Principais Propriedades
Picture = Propriedade que indica qual a imagem ser usada. Clique no boto mostrado abaixo
e escolha a figura que deseja que seja mostrada no Image.
Pgina 27 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Stretch = Indica se a imagem ser ajustada de acordo com o tamanho do objeto (esticada), no
recomendado em alguns casos devido a distoro da imagem no resultado final.
Exemplos
Para carregar uma imagem do disco via cdigo, use a funo loadfromfile da propriedade
picture
Exemplo:
Self.Image1.Picture.LoadFromFile('d:\exemplo.png');
Posso abrir imagens de diversos tipos, no exemplo acima eu abri uma imagem do tipo PNG,
neste caso necessrio adicionar a minha lista de uses uma unit especial para este
tratamento: Vcl.imaging.pngimage
Uma dica para no precisar decorar o nome das units, inserir dois Timages em um formulrio
e inserir uma imagem jpeg e uma png, depois compilar, voc perceber que sero adicionadas
as units automaticamente na seo interface, aps isso pode apagar os componentes do
formulrio que as units continuaro.
Para salvar uma imagem que esteja em um TImage no disco utilize o comando
Picture.SavetoFile
Exemplo
Self.Image1.picture.savetofile(c:\temp\teste.jpeg);
Lembrando que a extenso da imagem deve ser a mesma do arquivo que foi carregado, caso
necessite fazer converso, como por exemplo abrir um bitmap e salvar em Jpeg existem
funes especficas para isso.
Para limpar uma imagem do TImage sete a propriedade Picture para nil. Exemplo:
Self.image1.picture:=Nil;
OpenPictureDialog
Encontrado na Palheta Dialogs
Pgina 28 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
if (OpenPictureDialog1.Execute=False)
Then exit;
self.Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
SavePictureDialog
Encontrado na Palheta Dialogs
if (SavePictureDialog1.Execute=False)
Then exit;
Self.Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
BitButton
Encontrado na palheta Additional
Principais propriedades
Pgina 29 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
O MaskEdit um Edit porm a opo de mscara de digitao, ideal para formatar a digitao
de telefones, campos de documentos (CPF, CNPJ) e datas.
Principais Propriedades
EditMask = Mscara que ser aplicada, clique no boto mostrado abaixo para ver as opes de
mscaras pr-formatadas, porm nada impede que voc crie sua prpria mscara.
No exemplo acima foi utilizada uma mscara de data com dois dgitos no Ano.
Pgina 30 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Align, Alignment, AutoSize, Color, Font, Enabled, Visible, Maxlength, Text, CharCase,
TabOrder e PasswordChar (estudados em outros componentes)
Principais Eventos
Showmessage(Mensagem Simples);
Messagedlg(Msg,DlgType,[Buttons],HelpCtx,DefaultButton);
Onde
Msg = String com a mensagem.
DlgType = Tipo de cone que ir aparecer (mtwarning, mterror, mtinformation,
mtconfirmation)
Buttons = Botes que iro aparecer
mbOK, mbCancel, mbYes, mbNo, mbAbort, mbRetry, mbIgnore, mbAll,
mbNoToAll, mbYesToAll, mbClose
Cada boto desses tem um cdigo de resposta se quisermos capturar qual foi
pressionado
mrOK, mrCancel, mrYes, mrNo, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll,
mrYesToAll, mrClose
InputQuery(titulo,mensagem,variavelquevaireceber):boolean;
Exemplo de uso
Pgina 31 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
var
variavelString:String;
begin
variavelstring:= 'digite aqui... ';
if (inputquery('Ttulo da Barra de Ttulo','Texto da Mensagem - Digite seu nome',variavelstring)=True)
then Showmessage(' Seu nome '+variavelString)
Else Showmessage(' Processo cancelado');
end;
Exerccios
Dicas de Exerccio
Pgina 32 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Este componente usado para criao de Menus, aps adicion-lo no formulrio, d um duplo
click sobre ele para abrir o Editor de Menu.
Atravs do Editor possvel criar novos items do menu (TmenuItem), alterar e excluir os
existentes.
Arraste os items com o mouse para mudar a posio deles, pressione delete para apag-los e
insert para inserir novos itens.
Eventos
Para cada TMenuItem existe um mtodo OnClick onde deve ser digitado o cdigo que deseja
que seja executado.
Pgina 33 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Exemplo
Este menu usado como uma lista suspensa de opes (popup), segue o mesmo princpio do
MainMenu para configurao de novos itens, clique duas vezes sobre ele e adicione os itens
que desejar.
Aps configurar o PopupMenu necessrio indicar qual componente ir us-lo, para isso
escolha o componente (Edit, boto, formulrio) e depois escolha na propriedade PopupMenu o
componente configurado.
Pgina 34 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Exemplo em funcionamento
Mltiplos Formulrios
As vezes faz-se necessrio em uma aplicao conter mais de um formulrio (form), para que
as funes possam distribudas em mltiplas telas da aplicao.
Quando criamos uma Aplicao VCL ela composta por um nico formulrio, o formulrio
principal, caso este formulrio seja fechado a aplicao encerrada (o formulrio padro pode
ser alterado), para adicionar novos formulrios clique no menu File \ New \ Vcl Form - Delphi
Pgina 35 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para visualizar quais formulrios fazem parte da aplicao voc pode utilizar a Palheta View,
boto View Form (Shift+F12) conforme imagem abaixo:
Pgina 36 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Se rodarmos a aplicao o formulrio que ser mostrado o Fprincipal, porque ele foi primeiro
formulrio a ser criado, se quiser alterar essa configurao, acesse:
Nesta tela podemos tambm configurar quais formulrio sero criados automaticamente pela
aplicao (auto-create), caso seja retirado um formulrio desta lista necessrio fazer a
criao do mesmo (instanci-lo na memria) antes de us-lo e destru-lo aps o uso, porm
esse assunto no escopo do nosso curso bsico.
Supondo que o nosso Main Form seja o Fprincipal, para acessar o Fauxiliar necessrio um
comando para mostr-lo, existem duas formas de mostrar um formulrio:
Chamadas Modais (janelas restritas) - Quando invocamos um formulrio com uma chamada
modal todos os demais formulrios abertos no podero ser acessados at que este formulrio
seja fechado.
Showmodal
Show
Pgina 37 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Tanto em um mtodo quanto no outro necessrio que a Unit do formulrio que se deseja
invocar esteja listada na lista de units que sero usadas, elas podem estar adicionadas na lista
de uses do interface ou do implementation, caso voc compile a aplicao sem adicionar a unit
o prprio Delphi ir avis-lo disso:
O Formulrio Fprincipal est referenciando o formulrio Fauxiliar declarado na unit Unit4 que
no est na sua lista de USES. Deseja adicion-la?
Se voc escolher a opo Yes o prprio Delphi ir adicion-la a lista de uses, se escolhar no o
programa no ser executado.
Pgina 38 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Porm nada impediria que o Fauxiliar invocasse outro Formulrio qualquer em uma chamada
Showmodal.
Pgina 39 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Foi gerado um erro de Out of Memory, nas verses anteriores do Delphi seria gerado um Erro
de Referncia Circular, ou seja, duas units no podem referenciar uma a outra na seo de
interface, apenas na seo de implementation.
TStrings e TStringList
As classes TStrings e TStringList so classes poderosssimas do Delphi que simulam listas
encadeadas de strings, contendo mtodos para adicionar, remover, pesquisar, ordenar,
acessar e alterar itens desta lista, muitos componentes da VCL possuem propriedades do tipo
TStrings, portanto no possvel aprender estes objetos sem antes entender a classe Tstrings.
Para nossos exemplos iremos criar uma instncia da classe TStringList que uma
implementao da classe TStrings
TStringList
Para fazer nossos testes iremos adicionar um boto ao nosso formulrio e no evento on click
iremos codific-lo da seguinte maneira:
Lista.Clear;//limpa os itens
//adicionando itens
Lista.Add('e-String 1');
Lista.Add('d-String 2');
Lista.Add('c-String 3');
Lista.Add('b-String 4');
Lista.Add('a-String 5');
Pgina 40 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
//Gerar erro em caso de duplicao s funciona se a lista estiver marcada para ordenar na insero
Lista.Sorted:=True;//indica que a lista ser ordenada a cada insero
Lista.Duplicates:=dupError;//indicando que dever gerar erro se inserir um item duplicado
Try
Lista.Add('e-String 1');//forando o erro
Finally
FreeAndNil(Lista);
End;
end;
Lista:=TStringList.Create;
Neste comando estamos instanciando a classe TstringList na varivel Lista (criando ela na
memria)
Lista.Clear;//limpa os itens
Pgina 41 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Lista.Add('e-String 1');
No exemplo acima estamos usando o mtodo text que retorna uma string com a concatenao
de todas as strings da lista, note que na caixa de mensagem ele mostrou um item por linha,
isso se d pelo fato que o separador dos itens na lista so caracteres de quebra de linha e
retorno (#13 e #10)
Showmessage (lista[2]);
No exemplo acima estamos acessando um item especfico da lista, este comando retorna uma
string com o valor do item, o item de posio 3 da lista, digitamos 2 no exemplo porque o
primeiro item da lista o item 0.
No exemplo acima estamos usando o comando COUNT que um mtodo que retorna a
quantidade de itens da lista
lista.Delete(2);
O mtodo delete exclui um item da lista, no exemplo estamos excluindo o terceiro item da lista
Lista.Sort;
Lista.CaseSensitive:=true;
posicao:=lista.IndexOf('E-STRING 1');
O mtodo INDEXOF( ) retorna o ndice do texto pesquisado dentro da lista, caso no seja
encontrado retorna o valor -1
FreeAndNil(Lista);
A regra geral : Todo objeto que construmos manualmente, sem ligao de parents, temos
que desaloc-lo manualmente. A StringList um exemplo de classe que deve ser desalocada
manualmente pois em sua criao no permite que adicionemos um parent.
Lista.Duplicates:=dupError;
O mtodo Duplicates indicar como a Lista se comportar se receber um item duplicado, este
mtodo s pode ser usado para gerar erro se a lista estiver marcada para ser ordenada
durante a insero (Sorted=True) caso contrrio ele no ter efeito algum. No exemplo acima
Pgina 42 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
foi configurado para gerar erro em caso de duplicao de itens, porm para testar esse mtodo
necessrio que usemos o bloco de tratamento de excees (Try Except) caso contrrio a
exceo gerada pelo erro ir desviar o programa e a linha do freeandnil no ser executada,
para garantirmos essa execuo iremos utilizar o Bloco Try Finally
O bloco Try Finally utilizado quando queremos garantir que determinado comando seja
executado independente de algum erro que possa ocorrer, ou no, mesmo que seja executado
o comando exit; para sairmos de uma rotina, o comando que se encontra dentro do bloco
Finally ser executado.
Try
Lista.Add('e-String 1');//forando o erro
Finally
FreeAndNil(Lista);
End;
No exemplo acima, a lista que tentaremos adicionar um novo item igual a outro ir gerar um
erro, caso no tivssemos o bloco try finally o programa encerraria a execuo do
procedimento nesta linha, como temos um bloco try finally obrigatoriamente ele ir passar pelos
comandos que se encontram dentro do bloco Finally, neste caso o comando de liberao de
memria (freeandnil), poderamos utilizar tambm um bloco TryExcept, porm qualquer outro
desvio da aplicao pularia o comando de desalocao, o correto no uso do Try Finally
envolver todo o cdigo logo aps o comando create. O Correto seria:
Lista:=TStringList.Create;
Try
.... todo os comandos....
...
...
Finally
FreeAndNil(Lista);
End;
Memo = Memorando
Encontrado na Palheta Standard
Pgina 43 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Align, Aligment, BorderStyle, CharCase, Color, Font, Enabled, MaxLength, Height, Width,
WordWrap (estudado em outros componentes)
WantReturns = Indica se o Memo aceitar o uso da tecla ENTER para criar novas linhas
WantTabs = Indica se o Memo aceitar o uso de TABS dentro do MEMO
Text = Retorna uma String com todo o texto do Memo.
Lines = Propriedade do Tipo TStrings, controla as linhas do mesmo, podem ser aplicadas a
ela os mtodos : clear, add, text, delete, indexof, count e acesso a itens [ ] , entre outros.
Lines .SaveToFile(nomearquivo); = salva o contedo do Lines em um arquivo fsico
Lines.LoadfromFile(nomedoarquivo); = carrega o contedo de um arquivo texto para as linhas
do memo.
Principais Eventos
Pgina 44 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Align, BorderStyle, Color, Font, Enabled, Height, Width (estudado em outros componentes)
Exemplo de Uso
ITEMS = Propriedade do Tipo TStrings, controla as linhas do TListBox, podem ser aplicadas a
ela os mtodos : clear, add, text, delete, indexof, count e acesso a itens [ ] , entre outros.
Principais Eventos
Pgina 45 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Align, CharCase, Color, Font, Enabled, Height, Width, Sorted, ItemIndex (estudado em outros
componentes)
ITEMS = Propriedade do Tipo TStrings, controla as linhas do mesmo, podem ser aplicadas a
ela os mtodos : clear, add, text, delete, indexof, count e acesso a itens [ ] , entre outros.
Principais Eventos
Pgina 46 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
Align, Color, Font, Enabled, Height, Width, ItemIndex (estudado em outros componentes)
ITEMS = Propriedade do Tipo TStrings, controla as linhas do mesmo, podem ser aplicadas a
ela os mtodos : clear, add, text, delete, indexof, count e acesso a itens [ ] , entre outros.
Principais Eventos
TabbedNotebook
Encontrado na Palheta Win 3.1
Principais Propriedades
PageIndex : Propriedade do Tipo integer que usamos para saber qual a pgina atual e
para trocar a pgina atual.
Style : Configura o Estilo visual da Aba, os estilos so: tsButtons, tsFlatButtons,
Pages = Propriedade do Tipo TStrings que configura as pginas, clique no boto (...)
para iniciar o editor de Pginas do Componente, neste editor possvel editar o nome das
pginas, adicionar ou excluir novas pginas e alterar a disposio das mesmas.
Pgina 47 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Eventos
Esse evento invocado quando ocorre uma tentative de mudana de Aba, o parmetro
NewTab indica a aba que ser mostrada e o parmetro AllowChange indica se ser permitida
ou no a mudana, sete esse parmetro para false e a mudana no ocorrer.
PageControls
Encontrado na Aba Win32
Principais Propriedades
TabIndex : Propriedade do Tipo integer que usamos para saber qual a Pgina atual e
para trocar a pgina atual.
Style : Configura o Estilo visual da Aba, os estilos so: tsButtons, tsFlatButtons,
tsTabs
TabPosition : Configura a posio da Aba, s funciona para o Estilho tsTabs
Principais Eventos
Onchanging : Mtodo que invocado ao tentar mudar de aba, ele antecede a mudana,
podendo inclusive ser usado para abortar a mudana.
Para criar novas Abas clique com o boto direito e escolha a Opo New Page
Pgina 48 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
TrackBar
Encontrado na palheta Win32
Principais propriedades
Principal Evento
ProgressBar
Encontrado na palheta Win32
Pgina 49 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Principais Propriedades
StatusBar
Encontrado na palheta Win32
Principais Propriedades
Clique no boto (...) desta propriedade ou cliente com o boto direito sobre o componente no
formulrio e escolha a Opo Panels Editor
Pgina 50 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para acessar o texto do painel via cdigo use a propriedade Panels, no exemplo estamos
alterando o texto do Panel com ndice zero, para acessar outros painis altere o valor do
ndice.
StatusBar1.Panels[0].Text:='Teste';
ToolBar
Encontrado na palheta Win32
A Toolbar uma barra de ferramentas, ideal para adicionar botes. Para adicionar um boto
clique com o boto direito e escolha a Opo New Button, possvel tambm adicionar
separadores visuais entre os botes, para isso clique com o boto direito e escolha a opo
New Separator
Pgina 51 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
possvel configurar cada boto da ToolBar individualmente, basta selecionar o boto que
deseja alterar as propriedades.
Para adicionar imagens nos botes necessrio utilizar um ImageList, pois os botes no
possuem uma propriedade para inserir uma imagem por boto.
Adicione um ImageList
Timers
Encontrado na Palheta System
Principais Propriedades
Evento
Try
Pgina 52 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Finally
Timer1.Enabled:=True;
End;
end;
StringGrid
Encontrado na palheta Additional
Principais Propriedades
Pgina 53 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Exemplos:
Pgina 54 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Funes Importantes
ExtractFilePath(Application.ExeName);
FileExists(pcaminhodoexe);
Criando Units
Muitas vezes necessrio o reaproveitamento de cdigo, sendo assim a melhor maneira
criando funes que podem ser usadas diversas units ou at mesmo por diversos projetos,
para isso necessrio a criao de units, desvinculadas de formulrios, contendo as funes
importantes a serem reutilizadas, como orientao a objeto foge do escopo deste curso
ensinaremos a criao de units simples com funes.
A nova unit ser criada com um nome padro, salve essa unit no menu File \ Save
Pgina 55 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
No exemplo abaixo criaremos uma funo que mostra uma mensagem de informao
recebendo como parmetro uma string com a mensagem que desejamos que seja mostrada
Veja que foi necessrio a declarao do uso da unit Vcl.dialogs, pois a funo Messagedlg j
estudada anteriormente pertence a unit.
Agora se quisermos aproveitar essa funo em nosso programa basta que declaremos o uso
da Unit Uglobal nas units que queremos us-la.
Pgina 56 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Veja no exemplo acima que para poder utilizar as funes da unit Uglobal tivemos que declarar
o uso dela na seo implementation do form, isso pode ser feito utilizando o atalho Alt+F11 e
escolhendo a unit que desejamos usar.
Regra Importante
Pgina 57 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
A funo MostraMensagem2 no foi encontrada porque foi declarada depois da funo que
necessita utiliz-la. O correto seria:
Pgina 58 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Veja que a Unit Vcl.Forms teve que ser declarada na seo interface porque a classe TForm
est presente no parmetro da funo.
Pgina 59 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Entre no IboConsole, conecte-se ao servidor local, o usurio e senha padro do firebird so:
Sysdba
masterkey
Clique com o boto direito sobre a opo databases e escolha a opo Create Database
Pgina 60 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para executar comandos utilize a opo Execute Query, ou use um dos atalhos CTRL + E ou
CTRL+ENTER
Para navegar entre os comandos j executados use CTRL+P e CTRL+N (previous e next), ou
use os botes de atalho.
Criando Tabelas
Pgina 61 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
HORACADASTRO TIME,
No exemplo acima criamos uma tabela com diversos campos, os tipos usados acima foram
Integer = Inteiro
Varchar(100) = String de 100 caracteres
Varchar(20) = String de 20 caracteres
Date = Data
Decimal(6,2) = ponto fluante com preciso de duas casas decimais
Time = Hora
Foi definido que o campo cdigo ser a chave primria da tabela, ou seja, no poder se
repetir:
Comando Insert
Sintaxe
No exemplo abaixo estamos inserindo um registro com o cdigo 1 e o nome JOO, os demais
campos (colunas) ficaro com nulos pois no foram preenchidos no SQL
Cdigo 2
Nome Natal
Telefone 3411-7777
Data de Nascimento 31/12/2000
Salrio 1500,75
Hora do Cadastro 14:25
Veja no exemplo acima que os tipos Varchar, Date e Time foram inseridos utilizando um
apstrofo delimitando o contedo, o tipo Date no formato mm/dd/yyyy ou seja ms/dia/ano e
que o tipo Decimal quando temos valores decimais delimitamos por . (ponto) e no utilizamos o
separador de milhar.
Estrutura simples
Exemplo
Pgina 62 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Podemos utilizar o * (asterisco) para que o comando retorno todos os campos (colunas)
Exemplos
Usando and
Usando or
Usando and e or
Verificando nulos
Verificando no nulos
No exemplo abaixo pesquisamos nomes que contenham a letra a minscula em qualquer parte
do nome
Pgina 63 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
No exemplo abaixo estamos pesquisando os nomes que contem a letra A independente de ser
maiscula ou minscula, pois estamos convertendo o resultado da pesquisa em maiscula.
Comando Update
Sintaxe do comando
Comando Delete
Sintaxe
Exemplo
Controle Transacional
Comando Commit
Pgina 64 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Confirma as alteraes
Comando Rollback
Para o primeiro exemplo faremos toda a conexo e acesso ao banco em um nico formulrio,
para isso adicione um componente IbDatabase e um IbTransaction
Ibdatabase
Este componente responsvel por efetuar a conexo com o Banco de Dados, nele que
configuraremos o caminho do arquivo o usurio e a senha do Banco de Dados. Voc pode
configur-lo clicando duas vezes sobre o componente ou configurando propriedade a
propriedade no Object Inspector.
Pgina 65 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
IbTransaction
Clique duas vezes sobre o componente e configure a opo Transaction Properties para Read
Commited
Essa configurao indica que s veremos os dados j comitados, caso alguma outra
transao esteja aberta no conseguiremos enxergar as alteraes enquanto ela no for
commitada.
Pgina 66 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Ibquery
Pgina 67 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Ibquery1.Close;
Fecha a Query que estiver aberta, no podemos executar outra query sem antes fechar a
query anterior
Ibquery1.Sql.clear;
Ibquery1.Sql.add(...);
Ibquery1.Open;
Executa o comando digitado na propriedade SQL, caso o comando esteja errado ser gerado
uma excesso, use o tratamento de excesso (TRY EXCEPT) para controlar isso. Comandos
SELECT usam o comando OPEN, comandos insert, update e delete usam o comando
EXECSQL.
Pgina 68 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para visualizar os dados da Query usaremos um DBGRID da palheta Data Controls, porm
para ligar o DBGRID a Query necessrio um componente da palheta Data Access, o
TDataSource.
Pgina 69 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Veja que agora os comandos a serem executados sero os comandos digitados no MEMO1.
Pgina 70 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para executar estes comandos necessrio trocar o comando Open para ExecSql, esses
comandos no retornam resultados.
Toda vez que esses comando so executados eles geram transaes para controlar as
alteraes, quem responsvel por estas transaes o Componente IbTransaction, os
comandos Commit e Rollback devem ser usados como:
Ibtransaction1.CommitRetaining;
IbTransaction1.RollBackRetaining;
Existem tambm os comandos commit e rollback, mas no recomendo o uso pois ele fecha o
dataset depois de executados.
Para testar as transaes crie dois botes na aplicao um para cada comando, conforme
exemplo:
Pgina 71 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Agora basta executar comandos de update, insert e delete e testar o uso das transaes.
possvel navegar pelos registros retornados por uma consulta SQL, para isso dispomos dos
comandos abaixo;
First;
Move o cursor para o primeiro registro, por default quando a consulta executada o cursor j
se encontra no primeiro registro.
Last;
Move o cursor para o ltimo registro. Quando estamos neste registro e tentamos nos mover
mais um, a varivel EOF recebe o valor true, indicando que chegamos ao final do resultado
(EOF = End of file).
Prior;
Move o cursor para o registro anterior ao atual.
Next;
Move o cursor para o prximo registro.
Pgina 72 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
O resultado de uma consulta SQL preenche o que chamamos de Fields (campos), assim
podemos acessar cada Campo (coluna) do resultado retornado. Veja abaixo alguns comandos
que podem ser usados
Ibquery1.RecordCount;
Retorna quantos registros foram retornados na consulta SQL, no um comando aconselhvel
pois para que ele retorne o resultado completo necessrio que ele navegue por todos os
resultados para poder cont-los, ele pode ser til em casos de saber se retornou 0 ou no,
por exemplo, agora em caso de saber exatamente quantos registros retornados, recomendo
Pgina 73 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
que primeiro seja dado um last para mover o cursor para o ltimo registro, e logo aps seja lido
o valor de recordcount, isso trar maior confiabilidade no resultado, mas no uma tcnica
adequada para resultados com grande volume de dados, pois necessrio que todos os
registros sejam descarregados para a aplicao para que o recordcount retorne o valor
correto.
IbQuery1.Fields.Count;
Retorna quantos campos (colunas) foram retornadas na consulta
IBQuery1.Fields[0].AsString
Neste exemplo estamos capturando o valor da primeira coluna do Retorno, se o nosso sql
tivesse retornado as colunas Codigo|Nome|Valor estaramos resgatando o valor da Coluna
Cdigo.
AsString representa que queremos o resultado convertido em uma string, podemos usar as
seguintes converses:
IBQuery1.Fields[0].AsBoolean
IBQuery1.Fields[0].AsCurrency
IBQuery1.Fields[0].AsDateTime
IBQuery1.Fields[0].AsSingle
IBQuery1.Fields[0].AsFloat
IBQuery1.Fields[0].AsExtended
IBQuery1.Fields[0].AsInteger
Entre outras.
IBQuery1.FieldByName('codigo').asstring
Neste exemplo estamos resgatando o valor da coluna cdigo, independente da posio dela no
resultado e estamos convertendo esse valor para String.
Exemplo de uma consulta SQL que retorna apenas o cdigo de uma tabela, mostraremos
todos os registros do resultado em caixas de mensagem (showmessage)
Passando parmetros
Pgina 74 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Quando desejamos passar um parmetro para um comando, seja sele uma consulta, uma
insero, uma modificao ou at mesmo uma deleo, podemos usar o comando
ParamByName. Exemplo:
Veja que no comando foi adicionado um parmetro delimitado pelo :pcodigo isso indica ao
componente que naquele local do comando ser inserido o valor do parmetro PCODIGO, para
preencher esse valor usamos o comando
Ibquery1.ParamByName(pcodigo).asinteger:=1;
O uso de parmetros nos d liberdade de montarmos sqls mais facilmente, sem nos
preocuparmos com algumas regras de acordo com o tipo do campo. Exemplo:
Suponha que a coluna NOME seja do tipo varchar, ou seja, STRING, o correto em uma
consulta como essa seria usar o Apstrofo para delimitar o resultado que queremos consultar,
ou seja, ela deveria ser construda assim:
Agora usando o parmetro e indicando que o tipo do parmetro string (asstring) o prprio
componente se encarrega de montar o sql corretamente j adicionando o apstrofo no valor.
Pgina 75 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para saber em que linha do resultado o DBGRID encontra-se posicionado, basta acessarmos o
Dataset que gerou o resultado, ou seja, nos nossos exemplos a IbQuery1, o fato de
caminharmos, ou seja deslocarmos o ponteiro no DBGRID na verdade estamos caminhando
no resultado da Ibquery, porm possvel fazer um acesso atravs do DBGRID. Exemplo:
Veja a Ordem, o Grid acessa o DataSource, que Acessa o Dataset que no nosso exemplo a
IbQuery1
Ibquery1.Fieldbyname(codigo).asstring
Usando o TDbNavigator
Esse componente encontra-se na palheta Data Controls, e serve para navegar pelos
resultados.
Pgina 76 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
A propriedade VisibleButtons, indica quais botes devem ser mostrados, podemos omitir
botes que no sero usados, como os botes de insert, delete....
Como nosso datasource est ligado a um dataset Ibquery os botes de alterao dos dados
no so habilitados, eles se habilitariam se estivssemos trabalhando com outros
componentes, como por exemplo o IbDataset que um componente que configuramos os sqls
de modificao dos dados e de seleo, ou um IbTable.
Um dos recursos disponveis para controlar a chave primria como sendo sempre nica e
controlar a concorrncia de mltiplos usurios para que no ocorra a duplicao de chaves o
uso dos generators
Pgina 77 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pgina 78 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Arquivos INI so arquivos de texto simples com uma estrutura bsica. So normalmente
associados com o Microsoft Windows, mas tambm so utilizados em outras plataformas...
Propriedades
nome=valor
Sees
[seo]
Comentrios
Pgina 79 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
[CONFIGURACOES]
caminho=D:\AULA\Agenda\Agenda.FDB
Pgina 80 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Componente IbTable
Pgina 81 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pgina 82 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
O report builder no nativo no Delphi Xe3, portanto deve ser adquirido e instalado.
Esse componente ser responsvel por fazer a conexo com os componentes de Dados
(querys, tables...)
Esse componente ser responsvel pelo desenho do Relatrio e todo o controle de impresso.
Para que o ppDbPipeline possa se conectar a uma fonte de dados precisaremos "liga-lo a um
DataSource, indico ento que seja adicionada uma query e um datasource especfico para o
relatrio.
Pgina 83 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pgina 84 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Para construirmos um relatrio ser necessrio por hora estarmos conectado ao banco de
dados e com uma fonte de dados (query) aberta com dados, assim poderemos ver os campos
disponveis para serem usados, porm aps construir o relatrio desconecte o Database, para
que ele possa ser configurado dinamicamente, como j ensinado anteriormente, quando a
aplicao estiver em execuo.
Para conectar a aplicao, configure o IBdatabase manualmente, clicando duas vezes sobre
ele.
Agora insira o SQL de pesquisa na Ibquery responsvel pelo relatrio, atravs da propriedade
SQL
Pgina 85 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Pronto, agora que temos nossa aplicao conectada no banco de dados e com uma query com
dados, em tempo de desenvolvimento, vamos dar um duplo clique sobre o componente
ppReport para desenhar nosso relatrio
Pgina 86 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
O Report Builder trabalha com bandas, que so regies do relatrio que so mostradas de
acordo com sua funo, por exemplo:
Banda Title = Ttulo, mostrada apenas na primeira pgina do Relatrio, ideal para
adicionarmos informaes da empresa, logotipos e outras informaes que s devem aparecer
uma nica vez
Banda Summary = Sumrio, mostrada apenas na ltima pgina do Relatrio, ideal para
adicionar informaes finais, como totalizadores, frases finais, etc.
Header = Cabealho, mostrado em todas as pginas na parte superior, pode ser configurada
para ser mostrada ou no na primeira e na ltima folha
Footer = Rodap, mostrada em todas as pginas na parte inferior da pgina, pode ser
configurada para ser mostrada ou no na primeira e na ltima folha
Banda Detail = Detalhe, a banda principal do Relatrio, nela que ser mostrada as
informaes detalhes, ou seja, que se repetem, no relatrio. Por exemplo em um relatrio da
Pgina 87 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
agenda ela ir mostrar os dados propriamente ditos da agenda, como nome, telefone... de
acordo como quisermos, configuramos ela uma nica vez e ela se encarrega de se repetir
quantas vezes necessria de acordo com o nmero de registros a serem mostrados.
So componentes padres como labels, memos, linhas, cdigos de barras, vrias de sistemas
(data, hora, nmero de pgina). No so ligadas aos dados da fonte de dado, so
independentes.
Adicione uma Label da Palheta Standard Components na Banda Header e configure sua
caption para Relatrio de Agenda
Adicione tambm labels que sero usadas para Identificar as Colunas Cdigo, Nome e
Telefone, conforme desenho abaixo
Pgina 88 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Configure agora individualmente cada DbText fazendo a ligao ao campo desejado na fonte
de Dados
Pgina 89 de 90
Verso 05/04/2013
Centro de Treinamento Invictos Tecnologia (www.invictos.com.br/cti ) Delphi Bsico
Aps configurar o que desejar feche a janela do ReportBuilder e retorne para o projeto
Pgina 90 de 90
Verso 05/04/2013