You are on page 1of 49

Delphi 5 - Novos Recursos

Delphi 5 Novo Visual


Desktop
O recurso Desktop permite organizar as janelas do Delphi da maneira ideal para o seu trabalho. Voc posiciona as janelas de acordo com sua necessidade e pode gravar esta configurao como um Desktop. Os nicos itens ue no sofrem alterao com a mudana de desktop so o formul!rio e a palheta de componentes. Veja as figuras abai"o em direfentes tipos de Desktop#

Somente neste modo o Explorer exibido.

O Form se manteve estvel em diferentes Desktop s

O Object Inspector encontra-se direita.

$ag. %

Delphi 5 - Novos Recursos

O Novo Object Inspector


&ovidades visuais foram adicionadas ao Object 'nspector ue se manteve o mesmo desde a verso (.) do Delphi. *gora + poss,vel agrupar as propriedades por categorias pr+definidas pelo Delphi. $odemos ainda e"ibir ou ocultar estes grupos de propriedades .Bastando clicar com o boto direito do mouse no Object Inspector e selecion-los no menu View. A ordenao fica por conta do menu Arrange, onde selecionamos o modo con encional ou por grupo/. 0amb+m foi adicionada uma barra de status ue + utilizada para indicar a uantidade de itens ocultos. $ropriedades de 1ista suspensa como !olor e !ursor ganharam novo visual na escolha dos itens. *s propriedades do tipo "Brus# e "$en tamb+m e"ibem seus desenhos nas listas.

#ropriedades $olor e $"rsor em s"a real representa%&o.

!arra de Stat"s no Object Inspector.

To-Do List

$ag. (

Delphi 5 - Novos Recursos

2sta ferramenta + de grande valia para au"ili!-lo no desenvolvimento de seus projetos. 3om ela + poss,vel criar uma listagem de tarefas ue precisam ser implementadas no sistema. 4ua utilizao + bem simples5 basta clicar com o boto direito do mouse sobre a janela 6!ode %ditor7 e selecionar a opo 6Add "o-&o Item...75 para ue a janela *dd 0O-DO seja e"ibida#

$reencha corretamente as informa8es nos campos e5 em seguida5 voc ver! uma linha de coment!rio5 com uma codificao especial5 adicionada a sua 'nit#

{ TODO -oFelipe -cExcecoes : Rotina de tratamento de erro }


* janela To-Do List pode ser e"ibida clicando no menu 6 View ( "o-&o )ist7.

*o e"cluir os itens contidos nesta janela5 automaticamente a linha de c9digo ser! removida. :arcando 6 &one7 para o item5 o coment!rio na 'nit sofrer! a seguinte alterao#
$ag. ;

Delphi 5 - Novos Recursos

{ DONE -oFelipe -cExcecoes : Rotina de tratamento de erro }

Project Manager
* principal novidade do $roject :anager5 + a interatividade com o <indo=s 2"plorer5 permitindo o 6&rag And &rop.3licar e arrastar/7 entre ar uivos para adicion!-los ao seu projeto.

Object Bro ser


O Object >ro=ser + uma ferramenta antiga5 utilizada por programadores mais e"perientes. O objetivo b!sico desta ferramenta + listar hierar uicamente as classes contidas em seu projeto. &as vers8es anteriores do Delphi5 para acessar esta janela era necess!rio compilar o projeto5 mas agora isto + feito automaticamente.

$ag. ?

Delphi 5 - Novos Recursos

$ag. @

Delphi 5 - Novos Recursos

Objeto TFrame
O objeto TFrame + semelhante ao componente "$anel. O prop9sito deste componente + criar uma classe incorporada de v!rios outros componentes. O mais interessante + ue este novo *rame pode tamb+m ser adicionado a sua palheta de componentes5 sendo assim instanciado futuramente em suas outras aplica8es de forma independente da original. *s altera8es feitas em objetos "*rame so automaticamente refletidas nas instAncias ue a referenciam. O c9digo + mantido na 'nit do *rame. * utilizao de *rames + muito simples5 basta clicar em B *ile ( +ew *rame...B.

Cm novo Drame ser! criado em forma de um formul!rio. 'nclua os objetos ue deseja utilizar5 e adicione ao Dorm principal um objeto 0Drame da palheta de componentes.

$ag. E

Delphi 5 - Novos Recursos

4elecione o *rame criado na janela e"ibida5 e cli ue em O,. 4er! adicionado um objeto parecido com o "$anel no *orm contendo os objetos inclu,dos no *rame.

O objeto 'Frame inserido dentro de "m form"lrio.

$ag. F

Delphi 5 - Novos Recursos

Palheta ADO
O Delphi @ incorpora uma biblioteca de F componentes para acesso G camada *DO. * camada *DO + um novo padro :icrosoft para acesso a banco de dados. *ntes do *DO5 isto era feito com a camada OD>35 mas a :icrosoft percebeu ue este camada no serviria para aplica8es 'nternet. 4urgiu5 ento5 a O12 D> ue al+m de possuir drivers nativos para acessar banco de dados + altamente integrada G 'nternet. * camada *DO so classes de alto n,vel para acesso ao O12 D>. O Delphi5 at+ sua verso ?5 s9 acessava banco de dados atrav+s da >D2. :esmo uando era necess!rio utilizar o OD>35 a camada >D2 servia como intermedi!ria de comunicao. 3om o advento da programao para 'nternet e a difuso do desenvolvimento em mltiplas camadas5 a 'nprise viu a necessidade de e"tender o padro de acesso5 visto ue nem todos os provedores ou camadas :iddletier podero 0er o >D2 instalado. 4endo assim5 o Delphi @ permite o acesso tamb+m via *DO .*ctiveH Data Objects/5 de forma muita parecida com o acesso via >D2. Veja a ilustrao abai"o5 ue representa a cone"o via >D2 ou *DO#

Delphi c/ BDE

Delphi c/ ADO

BDE

ADO

ODBC

OLE DB

ODBC

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

Banco de Dados BDE compatvel

$ag. I

Delphi 5 - Novos Recursos

!"e#plo$% &rian'o u# Data(et co# T)DOTable%


2ste e"emplo demonstra o uso mais simples dos objetos *DO. * ui5 um objeto D>Jrid ser! preenchido com o contedo de uma tabela5 fornecido atrav+s de um objeto 0*DO0able# %/ 3rie uma nova aplicao5 e no formul!rio %5 insira um objeto 0*DO3onnectionK O objeto *DO 3onnection + e uivalente ao objeto 0Database5 e como este5 representa a cone"o com o banco de dados. *s transa8es e os parAmetros de cone"o sero realizados atrav+s deste objeto. (/ 2m seguida5 devemos configurar o objeto *DO3onnection%. D um cli ue duplo sobre o objeto5 para ue a janela 3onnection 4tring seja e"ibida#

2sta janela ir! indicar os parAmetros de cone"o com o banco de dados. *s op8es representam# Cse Data 1ink Dile# Cse 3onnection 4tring# *r uivo .CD15 ue cont+m os parAmetros de cone"o pr+ formatados. $ermite criar um novo ar uivo .CD15 com todos os parAmetros de cone"o.

&este caso5 selecione Cse 3onnection 4tring e cli ue no boto >uild. * janela Data 1ink $roperties ser! e"ibida#

$ag. L

Delphi 5 - Novos Recursos

3ada 'tem e"ibido nesta janela representa um mecanismo de cone"o aos dados. 1embrando5 o *DO no acesso o banco de dados sozinho5 ele se conecta a um motor de acesso para realizar a cone"o. 2ste motor pode ser uma cone"o OD>35 uma cone"o O12D> nativa5 uma cone"o M20 2ngine5 ou algum outro tipo de motor instalado. &o nosso caso5 usaremos o motor Met 2ngine5 para acessar o banco de dados *ccess. 4elecione o portanto5 o item NMet 2gine ?.) O12 D> $roviderO e cli ue em &e"t. * aba connection ser! e"ibida# Nota# 2sta aba ir! possuir uma interface diferente para cada banco de dados. &a opo nP %5 selecione o ar uivo .:D> do banco de dados ue ser! acessado por nossa aplicao. *bra o ar uivo D>D2:O4.:D>. *p9s cli ue em OQ5 para voltar ao 'D2 do Delphi. *ltere a propriedade 3onnected para 0RC25 a fim de conectar com o banco de dados.
$ag. %)

Delphi 5 - Novos Recursos

(/ 'nsira um objeto 0*DO0able no formul!rio. 2ste objeto representa a cone"o com a tabela e + e uivalente ao objeto 00able. $rimeiramente5 devemos conectar este objeto ao 0*DO3onnection. Daa isto alterando a propriedade 3onnection5 indicando o objeto *DO3onnection%. 2m seguida5 indi ue o nome da tabela na propriedade 0able&ame. 4elecione 3ustomer. ;/ 'nsira um objeto 0Datasource no formul!rio5 e linke-o com o objeto *DO0able%. ?/ 'nsira um objeto 0DbJrid5 e conecte-o com o objeto Data4ource%. OkS >asta alterar a propriedade *ctive do objeto *do0able% para 0RC25 e seu formul!rio ser! parecido com a figura abai"o#

Cma descrio detalhada de todas as propriedade5 m+todos e eventos relevantes aos objeto da palheta *DO encontra-se dispon,vel a seguir#

T)DO&onnection
2ste componente + utilizado para criar uma nova cone"o com a camada *DO. T bastante semelhante ao componente 0Database5 sua utilizao tamb+m + opcional.
$ag. %%

Delphi 5 - Novos Recursos

Principais Propriedades
3ommand0imeout 3onnected 3onnect4tring 2sta propriedade permite especificar um determinado tempo de limite para obter uma resposta de um comando e"ecutado. 2specifica se e"iste ou no uma cone"o. Define a 4tring de cone"o entre a camada intercessora do banco de dados com o *DO. Ctilizamos esta propriedade para definir ual ser! o banco de dados e a camada para o ADO.-et, O&B!, O)% &B/. 2sta propriedade permite especificar um determinado tempo de limite para ser feita a cone"o com o banco de dados. 2sta propriedade define o tipo de cone"o. CoConnectUnspecified 2ste e o modo padrao do *DO. CoAsyncConnect 2ste modo e utilizado Uuando o servidor for muito lento. Define onde estar! o cursor para suas tabelas. Define um banco de dados padro para a cone"o uando uma cone"o via 3onnection4tring no for bem sucedida. Define o n,vel de isolamento entre do banco de dados. 2sta propriedade + semelhante G propriedade "ransIsolation do objeto &atabase. Define um modo de cone"o# 4omente leitura5 leitura e gravao e etc. 2specifica o m+todo de cone"o ue ser! utilizado pela camada *DO# Jet5 OLEDB5 ODBC5 etc.

3onnection0imeout 3onnectOption

3ursor1ocation DefaultDatabase 'solation1evel

:ode $rovider

Principais Eventos
*fter3onnect *fterDisconnect >efore3onnect >eforeDisconnect On>egin0ras3omplete On3ommit3omplete On3onnect3ompleted Ocorre ap9s efetuar uma cone"o. Ocorre ap9s desconectar. Ocorre antes de efetuar uma cone"o. Ocorre andes de desconectar. Ocorre uando + iniciada uma nova transao. Ocorre uando o comando 63ommit7 foi e"ecutado. Ocorre uando + feita uma cone"o.
$ag. %(

Delphi 5 - Novos Recursos

OnDisconnect On2"ecute3omplete On'nfo:essage On1ogin OnRollback0rans3omplete On<ill3onnect On<ill2"ecute

Ocorre uando + terminada uma cone"o. Ocorre uando uma cone"o com o *DO e"ecutou um comando.3ommand/. Ocorre uando uma cone"o + bem sucedida e informa8es adicionais so enviadas pelo $ro ider. Ocorre uando + aberta a janela 6)ogin$rompt7. Ocorre uando + e"ecutado um RollBack. Ocorre uando uma cone"o est! prestes a ser efetuada. Ocorre uando uma e"ecuo est! prestes a ser efetuada.

Principais mtodos
Open 3lose $ermite ativar uma cone"o 0ermina uma cone"o

T)DOTable
Objeto *DO0able de uma cone"o *DO + e uivalente ao objeto 00able da camada >D2.

Principais Propriedades
3ache4ize 'ndica uantos registros sero pedidos para o servidor por vez5 e armazenados na memoria local. &ovos pedidos so automaticamente controlados pelo objeto. Objeto 0*DO3onnection5 ue representa a instancia do banco de dados atual. $ode ser usado no lugar de um objeto "A&O!onnection. $ermite configurar uma string de cone"o com o servidor. 'ndica se o objeto ira trabalhar em modo 3hachedCpdates. 3aso esta propriedade esteja configurada para clCse3lient5 os dados serao armazenados no cliente5 e todas as operacoes realizadas .como insert5 update e delete/ permanecerao no mesmo. 3aso a propriedade seja clCse4erver5 as alteracoes serao automaticamente enviadas para o servidor.
$ag. %;

3onnection 3onnection4tring 3ursor1ocation

Delphi 5 - Novos Recursos

3ursor0Vpe

'ndica o tipo de cursor utilizado cliente. Os possiveis valores so#

pelo

ctUnspecified Cm tipo de cursor no pre-definido pelo objeto. ctOpenFor ardOnly 3ursor unidirecional. 3om este valor5 o usuario podera apenas navegar para frente5 nunca retornar os registros. ct!eyset 3ursor bi-direcional5 no concorrente. * ui5 o usuario pode navegar para frente e para tras no result set. *s alteracoes feitas por transacoes concorrentes no estarao acessiveis5 e os registros deletados5 apesar de visiveis5 no estarao disponiveis. ctDynamic >i-direcional e concorrente. 2ste tipo de cursor e o ue apresenta a pior performance e o ue gasta mais recursos do sistema. * ui5 o usuario visualiza as alteracoes5 insercoes e delecoes de outras transacoes. ct"tatic Cma simples copia dos registros. Uual uer tipo de alteracao concorrente no sera visualizada neste cursor. 1ock0Vpe 2specifica como o lock de registros sera e"ecutado. Os possiveis valores so# #tUnspecified Cm tipo de lock ue no foi pre-definido pelo objetoK itReadOnly 4omente leituraK it$essimistic 'mpede ue outras sessoes alterem o registro ue estiver locado pelo usuarioK itOptimistic 0odos podem alterar o mesmo registroK itBatc%Optimistic 'mpede ue outras sessoes alterem uando estiver em modo update >atch. Wtil apenas uando a tabela est! em 3lient-4ide. 'ndica uais registros sero devolvidos para o servidor ou para a camada middle=are. 4e o valor for mo&ars%alAll5 todos os registros sero enviados para o servidor. 3aso o valor seja mo&ars%al&odifiedOnly5 apenas os registros modificados sero devolvidos.
$ag. %?

:arshalOptions

Delphi 5 - Novos Recursos

:a"Records 0ableDirect

0able&ame

'ndica a uantidade m!"ima de registros e"ibidos pelo objeto. ) .zero/ indica todos os registros. Uuando False5 os dados sero sempre re uisitados via intru8es "'L "elect. &este caso5 a instruo + criada automaticamente pelo objeto. O valor Default e Dalse. &ome da tabela dentro do banco de dados.

Principais Eventos
On2ndOfRecordset Ocorre uando o ponteiro avana ap9s o ltimo registro carregado pelo Record"et. T importante notar ue esta ao no representa o final da tabela5 e sim5 o final do buffer. O parAmetro &oreData5 uando Tr(e5 ir! indicar a re uisio dos pr9"imos registros ue no foram carregados para o buffer. O parAmetro E)ent"tat(s indica se a operacao ue gerou o evento foi ou no bem sucedida. Ocorre uando uma re uisio de dados para o buffer + terminada. Ocorre durante a leitura dos dados para o buffer. O parAmetro $ro*ress indica a uantidade de registros lidos5 &a+$ro*ress a uantidade a ser lida e E)ent"tat(s se a operao foi bem sucedida. Ocorre ap9s a gravao de um valor para algum campo da tabela. Ocorre ap9s o ponteiro de registro realizar alguma movimentao. Ocorre ap9s um ou v!rios registros serem atualizados. Ocorre antes da edio do valor de um campo. Ocorre antes da edioXinsero de um registro. Ocorre antes da alterao de algum valor da tabela. Ocorre antes da movimentao do ponteiro para algum lugar.

OnDetch3omplete OnDetch$rogress

Onfield3hange3omplete On:ove3omplete OnRecord3hange3omplete On<ill3hangefield On<ill3hangeRecord On<ill3hangeRecordset On<ill:ove

$ag. %@

Delphi 5 - Novos Recursos

Principais Mtodos
function 4eek.const QeVValues# VariantK 4eekOption# 04eekOption Y soDirst2U/# >ooleanK Daz a pes uisa utilizando o ,ndice atual. O primeiro parAmetro + um arraV O12 .Var*rraVOf/ de valores de pes uisa. O segundo indica como a pes uisa ser! realizada. Os poss,veis valores para .ee,Option so# soFirstE' 3aso e"ista5 o ponteiro e posicionado na primeira ocorrencia. soLastE' 3aso e"ista5 o ponteiro e posicionado na ultima ocorrencia soAfterE' Record pointer positioned at matching record5 if found5 or just after =here that matching record =ould have been found. soAfter O ponteiro + posicionado no registro encontrado Z%. soBeforeE' Record pointer positioned at matching record5 if found5 or just before =here that matching record =ould have been found. soBefore O ponteiro 6e posicionado no registro encontrado [%

T)DO*uer+
Representa o objeto 0UuerV da palheta Data*ccess. O mais indicado para cone"8es com um banco de dados 3liente-4ervidor.

Principais Propriedades
3onnection 3ursor1ocation Objeto 0*DO3onnection ue representa a instAncia do banco de dados atual. 'ndica se o objeto ira trabalhar em modo 3hachedCpdates. 3aso esta propriedade esteja configurada para clCse3lient5 os dados serao armazenados no cliente5 e todas as operacoes realizadas .como insert5 update e delete/ permanecerao no mesmo. 3aso a propriedade seja clCse4erver5 as alteracoes serao automaticamente enviadas para o servidor.

$ag. %E

Delphi 5 - Novos Recursos

3ursor0Vpe

'ndica o tipo de cursor utilizado cliente. Os possiveis valores so#

pelo

ctUnspecified Cm tipo de cursor no pre-definido pelo objeto. ctOpenFor ardOnly 3ursor unidirecional. 3om este valor5 o usuario podera apenas navegar para frente5 nunca retornar os registros. ct!eyset 3ursor bi-direcional5 no concorrente. * ui5 o usuario pode navegar para frente e para tras no result set. *s alteracoes feitas por transacoes concorrentes no estarao acessiveis5 e os registros deletados5 apesar de visiveis5 no estarao disponiveis. ctDynamic >i-direcional e concorrente. 2ste tipo de cursor e o ue apresenta a pior performance e o ue gasta mais recursos do sistema. * ui5 o usuario visualiza as alteracoes5 insercoes e delecoes de outras transacoes. ct"tatic Cma simples copia dos registros. Uual uer tipo de alteracao concorrente no sera visualizada neste cursor. 1ock0Vpe 2specifica como o lock de registros sera e"ecutado. Os possiveis valores so# #tUnspecified Cm tipo de lock ue no foi pre-definido pelo objetoK itReadOnly 4omente leituraK it$essimistic 'mpede ue outras sessoes alterem o registro ue estiver locado pelo usuarioK itOptimistic 0odos podem alterar o mesmo registroK itBatc%Optimistic 'mpede ue outras sessoes alterem uando estiver em modo update >atch. Wtil apenas uando a tabela est! em 3lient-4ide. 'ndica uais registros sero devolvidos para o servidor ou para a camada middle=are. 4e o valor for mo&ars%alAll5 todos os registros sero enviados para o servidor. 3aso o valor seja mo&ars%al&odifiedOnly5 apenas os registros modificados sero devolvidos.
$ag. %F

:arshalOptions

Delphi 5 - Novos Recursos

:a"Records $aram3heck $arameters

'ndica a uantidade m!"ima de registros e"ibidos pelo objeto. ) .zero/ indica todos os registros. 4e Tr(e5 o objeto ir! considerar as e"pressoes N#variavelO como um nome de parAmetro. $ropriedade da classe T$arameters5 ue serve para a passagem de valores para os parametros da 4U1. * sinta"e + diferente da propriedade $arams do objeto "/uer0. 2"# *DOUuerV%.$arameters.$arams.$aram>Vn ame.6codigo\cliente7/.Value#Y%K 'nstruo 4U1 ue ser! e"ecutada pelo objeto.

4U1

Principais Eventos
On2ndOfRecordset Ocorre uando o ponteiro avana ap9s o ltimo registro carregado pelo Record"et. T importante notar ue esta ao no representa o final da tabela5 e sim5 o final do buffer. O parAmetro &oreData5 uando Tr(e5 ir! indicar a re uisio dos pr9"imos registros ue no foram carregados para o buffer. O parAmetro E)ent"tat(s indica se a operacao ue gerou o evento foi ou no bem sucedida. Ocorre uando uma re uisio de dados para o buffer + terminada. Ocorre durante a leitura dos dados para o buffer. O parAmetro $ro*ress indica a uantidade de registros lidos5 &a+$ro*ress a uantidade a ser lida e E)ent"tat(s se a operao foi bem sucedida. Ocorre ap9s a gravao de um valor para algum campo da tabela. Ocorre ap9s o ponteiro de registro realizar alguma movimentao. Ocorre ap9s um ou v!rios registros serem atualizados. Ocorre antes da edio do valor de um campo. Ocorre antes da edioXinsero de um
$ag. %I

OnDetch3omplete OnDetch$rogress

Onfield3hange3omplete On:ove3omplete OnRecord3hange3omplete On<ill3hangefield On<ill3hangeRecord

Delphi 5 - Novos Recursos

On<ill3hangeRecordset On<ill:ove

registro. Ocorre antes da alterao de algum valor da tabela. Ocorre antes da movimentao do ponteiro para algum lugar.

Principais Metodos:
Open 3lose 2"ec4U1 *bre a uerV Decha a UuerV 2"ecuta uma intruo 4U1

T)DOData(et
2ste objeto + a classe pai dos objetos TADOTa,le5 TADO'(ery e TADO"tored$roc. 4uas propriedades5 m+todos e eventos so os mesmo destes objetos.

T)DO&o##an'
&o possui e uivalente na palheta Data*ccess. 2ste componente representa o objeto *DO 3ommand5 da biblioteca *DO. 4erve apenas para enviar instru8es 4U1 para o servidor5 e no permite a ligao com objetos Data3ontrol. $ossui uma performance otimizada para instru8es ue no necessitem retornar dados para a aplicao. Opera8es como backup5 deleo de tabelas e update batc#s so mais r!pidos uando e"ecutados atrav+s deste componente. *plica8es 4U1 tamb+m podem ter um desempenho melhorado com este componente.

Principais Propriedades
3ommand0e"t 3ommand0imeOut 3ommand0Vpe 3onnection $aram3heck 'nstruo 4U1 ue ser! e"ecutada pelo servidor. 0empo ue o objeto ir! esperar pela resposta do servidor. 'ndica o tipo de instruo contida na propriedade 3ommand0e"t. Objeto 0*DO3onnection5 ue representa a instAncia do banco de dados atual. 4e Tr(e5 o objeto ir! considerar as e"pressoes N#variavelO como um nome de parAmetro.
$ag. %L

Delphi 5 - Novos Recursos

$arameters

$ropriedade da classe "$arameters5 ue serve para a passagem de valores para os parAmetros da 4U1. * sinta"e + diferente da propriedade $arams do objeto 0UuerV. 2"# *DO3ommand%.$arameters.$arams.$aram >Vname.6codigo\cliente7/.Value#Y%K

2ste objeto no possui eventos. $ara tratar os poss,veis resultados ue este objeto pode gerar5 utilize os eventos do objeto 0*DO3onnection.

Principais Mtodos
2"ecute 2nvia a intrucao 4U1 para o servidor

T)DO(tore'Proc
2 uivalente ao objeto ".tored$roc5 da palheta Data*ccess. $ermite acionar uma procedure armazenada no servidor de banco de dados.

Principais Propriedades:
3onnection $arameters $rocedure&ame Objeto "A&O!onnection ue representa a instAncia atual do banco de dados. Define os parAmetros ue sero passados ou recebidos da .tored $rocedure. &ome da 6.tored$rocedure7.

TRD(&onnection
Objeto para criao de aplica8es multi-camadas. 2ste objeto serve como :iddletier para cone"8es *DO em v!rias camadas. 2"istem outras alternativas e solu8es mais interessantes para Delphi5 como &#DA" e CORBA. $ortanto5 no daremos nfase ao 1emote &ata .pace.

$ag. ()

Delphi 5 - Novos Recursos

Palheta Interbase
* palheta 'nterbase fornece e o melhor m+todo para criar uma aplicao Delphi acessando base de dados 'nterbase. Cma aplicao compilada em Delphi @5 utilizando os componentes da palheta 'nterbase apresentar! uma performance superior do ue as aplica8es compiladas em vers8es anteriores do Delphi. 'sto por ue os novos componentes 'nterbase dispensam a camada >D2 [ ou ual uer outra camada. Cma aplicao constru,da com estes componentes ter! o c9digo de acesso ao banco Nbuilt-inO5 ou seja5 dentro do pr9prio e"ecut!vel. Repare na figura % a e"emplificao desta diferena#

Delphi

Delphi

BDE

Banco de Dados

Banco de Dados

*l+m de maior performance5 o desenvolvedor passa a ganhar tamb+m em recursos. 3om os novos objetos + poss,vel e"trair v!rias informa8es do servidor5 como mem9ria dispon,vel5 espao em disco5 banco de dados utilizado5 porcentual de recursos dispon,veis5 e outras. Cm maior controle do 4U1 e das transa8es realizadas tamb+m foram adicionadas aos componentes. *pesar de todas estas vantagens5 os componentes 'nterbase oferecem um 9bvio ponto negativo# Cma aplicao constru,da com estes componentes dever! ser totalmente reconstruida caso o cliente resolvar mudar de banco de dados.

Componentes da palheta Interbase


* seguir encontra-se uma breve descrio dos principais componentes da palheta. 2les esto listados por ordem de importAncia dentro do projeto#
$ag. (%

Delphi 5 - Novos Recursos

TIBDatabase
2 uivalente ao componente "&atabase5 da palheta Data*ccess. Representa a instAncia do banco de dados da aplicao5 e realiza a cone"o ao banco5 atrav+s da propriedade !onnected.

Principais Propriedades:
3onnected Databasename Default0ransaction 'dle0imer Uuando Tr(e5 inicia a cone"o com o servidor. &ome do ar uivo de banco de dados. 'ndica um objeto 0'>0ransaction como objeto de transao &efault. 2specifica uanto tempo o cliente ir! esperar caso o servidor no envie nenhuma resposta. 4e o tempo for ultrapassado e o servidor no responder5 a cone"ao ser! desfeita. 4e Tr(e5 o objeto pedir! nome e senha ao usu!rio. 'ndica o c9digo de dialeto 4U1 utilizado pelo cliente. 'ndica uais sero as a8es monitoradas pelo objeto 0'>4U1:onitor.

1ogin$rompt 4U1Dialect 0raceDlags

Principais Eventos
*fter3onnect *fterDisconnect >efore3onnect >eforeDisconnect On'dle0imer On1ogin Ocorre ap9s a cone"o ser realizada. Ocorre ap9s a cone"o ser terminada. Ocorre ao pedido de cone"o. Ocorre ao pedido de t+rmino da cone"o. Ocorre en uanto o cliente espera por uma resposta do servidor. 2ste evento pode ser usado para subtituir o pedido de username e password do objeto. *o definir alguma rotina neste evento5 automaticamente a janela de login no ser! e"ibida e o nome e a senha devero ser passados via c9digo.

$ag. ((

Delphi 5 - Novos Recursos

TIBTransaction
Cm dos componentes mais interessantes da nova palheta. O componente '>0ransaction representa a instAncia da transao atual e simplifica muito o controle de transa8es. 3om este objeto5 + poss,vel controlar transa8es concorrentes origin!rias da mesma cone"o com o banco de dados5 ou em 0hreads independentes.

Principais Propriedades:
*ctive Default*ction Uuando Tr(e5 e"ecuta o m+todo .tart"ransaction no servidor. 'ndica ual sera o metodo e"ecutado uando a aplicacao e"ceder o tempo de idle time out5 ou seja uando nenhum comando for mais enviado para o servidor. 4eus possiveis valores so# taRoll,ack 2"ecuta a instruo 1ollBac,. taCommit 2"ecuta a instrucao !ommit. taRoll,ackRetainin* 2"ecuta a instruo 1ollBac,5 e mant+m o #andle da transao aberto.os dados continuam na tela/. Dispon,vel apenas na verso E.) ou superior do #nter,ase. TaCommitRetainin* 2"ecuta a instruo !ommit e mant+m o #andle da transao aberto.os dados continuam na tela/. 'ndica a instAncia do banco de dados no ual a transao ser+ iniciada. 2specifica uanto tempo o objeto ir! esperar para e"ecutar o m+todo especificado na propriedade &efaultAction. O tempo comea a ser contado a partir ue nenhuma instruo for enviada para o servidor.

DefaultDatabase 'dle0imer

Principais Eventos
On'dle0imer Ocorre en uanto a aplicao no envia nenhuma instruo 4U1 para o servidor.

$ag. (;

Delphi 5 - Novos Recursos

Principais Mtodos:
3ommit 3ommitRetaining Rollback RollbackRetaining 3onfirma a transao no servidor. 3onfirma a transao e mant+m o #andle aberto. &este caso5 os dados permanecem na tela. 3ancela a transao atual. 3ancela a transao e mant+m o #andle aberto. &este caso5 os dados permanecem na tela. Dispon,vel apenas a partir da verso E do 'nterbase. 'nicia a transao. Rettorna a mensagems de erro baseado no 6%rror !ode7 passado como parAmetro.

4tart0ransaction 3all

TIBTable
Representa uma cone"o com alguma tabela do banco de dados. 2 uivalente ao objeto 00*ble da palheta Data*ccess. O uso do objeto 0'>0able apresenta desvantagens em relao ao uso do objeto 0'>UuerV5 visto ue este componente envia uma uantidade de instruo muito maior ao servidor. T recomendavel o uso do objeto 0'>UuerV.

Principais Propriedades
*ctive Database 0able&ame 0ransaction *bre a cone"o com a tabela. Objeto 0'>Database. &ome da tabela dentro do banco de dados. Objeto 0'>0ransaction5 ue representara a transao ativa para as a8es e"ecutadas atrav+s deste objeto.

Os demais m+todos e eventos so os mesmos encontrados no objeto 00able5 da palheta Data*ccess.

TIB*uer+
Representa uma cone"o 4U1 com o banco de dados. $raticamente toda a linguagem 4U1.DD1XD:1/ suportada pelo banco de dados pode ser utilizada atrav+s deste objeto. $ara utilizar o objeto 0UuerV como um objeto de edio5 e recomend!vel o seu uso juntamente com o objeto 0Cpdate4U1.
$ag. (?

Delphi 5 - Novos Recursos

Principais Propriedades
Database 4U1 0ransaction Objeto T#BData,ase5 ue representa a instAncia do banco de dados. 39digo 4U1 a ser enviado para o servidor. Objeto 0'>0ransaction5 ue representar! a transao ativa para as a8es e"ecutadas atrav+s deste objeto.

Os demais eventos e m+todos deste objeto so os mesmos encontrados no objeto 0UuerV5 da palheta Data*ccess.

TIB(tore'Proc
$ermite e"ecutar uma procedure armazenada 2 uivalente ao objeto 04tored$roc5 da palheta Data*ccess. no servidor.

Principais Propriedades
Data>ase 4tored$roc&ame Objeto 0'>Database5 ue representa instAncia do banco de dados &ome da procedure armazenada. a

Os demais eventos e m+todos so os mesmos do objeto 04tored$roc.

TIB,p'ate(*L
$ermite configurar o objeto 0'>UuerV 1eadOnl0 para trabalhar com Li)e Res(lt "ets. 3om este objeto5 + poss,vel definir instru8es 4U1 para cada m+todo Append5 %dit ou &elete. O objeto Cpdate4U1 garante maior performance para editar uma tabela5 pois a uerV trabalha em modo ReadOnlV.

Principais Propriedades
'nsert4U1 :odifV4U1 Delete4U1 Define a instruo 4U1 a ser e"ecutada uando o m+todo *ppend for chamado. Define a instruo 4U1 a ser e"ecutada uando a tabela for editada. Define a instruo 4U1 a ser e"ecutada uando algum registro for deletado.
$ag. (@

Delphi 5 - Novos Recursos

Refresh4U1

Define a instruo 4U1 a ser e"ecutada uando o m+todo Refresh for e"ecutado.

Os demais eventos e metodos so os mesmos do objeto 0Cpdate4U15 da palheta Data*ccess.

TIBData(et
2ste componente + o objeto ancestral para os componentes de acesso a dados da palheta 'nterbase. 4ua utuilizao no + escencial5 pois o objeto 0UuerV possui todos os seus recursos.

Principais Propriedades
*ctive >uffer3hunks Database Delete4U1 'nsert4U1 :odifV4U1 Refresh4U1 4elect4U1 CpdateRecord0Vpes 'ndica se a uerV sera aberta. &umero de registros no buffer. Objeto 0'>Database5 ue representa o banco de dados atual. 'nstruo 4U1 ue ser! e"ecutada uando algum registro for deletado. 'nstruo 4U1 ue ser! e"ecutada uando algum registro for inserido. 'nstruo 4U1 ue ser! e"ecutada uando algum registro for alterado. 'nstruo 4U1 ue ser! e"ecutada uando o metodo 1efres# for chamado. 'nstruo 4U1 ue ser! e"ecutada uando a uerV for aberta. 'ndica uais registros estaro vis,veis uando a propriedade !ac#ed'pdates estiver setada para 0rue. $or default5 as propriedades c(s&odified5 c(s#nserted5 e c(sUnmodified estao setadas para 0rue5 o ue significa ue os registros atuais e inseridos estaro vis,veis.

Principais Eventos
On*fterDatabaseDisconnect Ocorre ap9s o t+rmino da cone"o com o banco de dados.

$ag. (E

Delphi 5 - Novos Recursos

On*fter0ransaction2nd

>eforeDatabaseDisconnect On>efore0ransaction2nd DatabaseDree 0ransactionDree

Ocorre ap9s a e"ecuo de uma transao .com 3O::'0 ou RO11>*3Q/. 2ste evento captura apenas as transacoes N#ardO5 ou seja5 terminadas com o metodo Commit ou RollBack. Os m+todos CommitRetainin* e Roll,ackRetainin* no so capturados por este evento. Ocorre antes do t+rmino da cone"o com o banco de dados. Ocorre antes da e"ecuo de um comando Commit ou RollBack. Ocorre ap9s a liberao dos #andle2s alocados pelo objeto 0'>Database. Ocorre ap9s a liberao dos #andle2s alocados pelo objeto 0'>0ransaction.

Os demais m+todos deste objeto so mesmos encontrados na classe 0Data4et5 pai de v!rios componentes como 00able e 0UuerV.

TIB(*L
3omponente para e"ecutar instru8es 4U1. 4ua diferenca para com o objeto 0UuerV5 + ue este apresenta a maior performance de e"ecuo5 e aloca o m,nimo de recursos poss,veis. 2m contrapartida5 este objeto no oferece interface para cone"o com objetos Data3ontrol [ ele apenas e"ecuta as instru8es. T recomend!vel o seu uso em opera8es ue e"ijam uma r!pida performance5 como por e"emplo5 rotinas de backup. 2ste componente tamb+m pode ser utilizado para criao de aplicacoes D4U1 .DVnamic 4U1/5 ou seja5 aplica8es em ue o pr9prio usu!rio cria as intru8es 4U1.

Principais Propriedades
Database Jo0oDirstRecordOn2"ecute Objeto 0'>Database ue representa o banco de dados atual. 4e Tr(e5 vai para o primeiro registro ap9s a e"ecuo de uma intruo "'L Li)e Res(lt "et

$ag. (F

Delphi 5 - Novos Recursos

$aram3heck

4U1 0ransaction

2sta propriedade deve ser 0rue uando o objeto 0'>4U1 possuir uma instruo 4U1 DD1 com parAmetros. 4e Tr(e5 o objeto ir! prevenir de no misturar os parAmetros definidos na propriedade 4U1 com os parAmetros contidos dentro da instruo 4U1. $or e"emplo5 se a instruo criar uma 4tored $rocedure com um parAmetro5 setar esta propriedade para 0rue ir! prevenir o objeto de tentar substituir o parametro da instruo CREATE $ROCEDURE por um valor da propriedade $arams. 'nstruo ue ser! e"ecutada. Objeto 0'>0ransaction ue ir! representar a transao atual.

Principais Eventos
On4U1changing Ocorre uando modificada. a instruo 4U1 +

Principais Metodos
3all Dunction 3all.2rr3ode# '43\40*0C4K Raise2rror# >oolean/# '43\40*0C4K Retorna a mensagem de erro correspondente ao c9digo de erro. Jera uma e"ceo uando a uerV est! aberta. Jera uma e"ceo uando a uerV est! fechada. Jera uma e"ceo se a uerV no possuir uma cl!usula 4U1 v!lida. 2limina os #andles gerados pela uerV. function 3urrent# 0'>H4U1D*K Retorna o tipo '>H4U1D* atualmente alocado pela uerV. 2ste descriptor representa uma !rea de transferncia de dados entre o banco de dados e aplicao cliente. 0oda e"ecuo de uma instruo 4U1 cria uma instAncia deste 1ecord. 2"ecuta a uerV 4U1.
$ag. (I

3heck3losed 3heckOpen 3heckValid4tatement 3lose 3urrent

2"ecUuerV

Delphi 5 - Novos Recursos

Dield>V&ame &e"t $repare

Ctilizado para acessar um campo da tabela atrav+s de seu nome. :ove o ponteiro para o pr9"imo registro. Ctilizado antes de passar parAmetros para o objeto. $ermite preparar uma UuerV para e"ecuo.

TIBDatabaseIn-o
Retorna varias informa8es a respeito do banco de dados especificado. >asta inserir um componente 0'>Database'nfo5 configurar sua propriedade Database para o objeto 0'>Database correspondente5 e capturar os valores de suas propriedades.

Principais Propriedades:
*llocation >ackout3ount >ase1evel 3urrent:emorV Data>ase D>Dilename Db'mplementation3lass Db'mplementation&o Db4ite&ame Db4U1Dialect Delete3ount 2"punge3ount Detches Dorced<rites 'nsert3ount :arks :a":emorV Retorna o nmero de p!ginas alocadas. 'ndica o nmero de vezes ue um registro do banco de dados foi removido. Retorna o nmero de verso do banco de dados. Retorna a uantidade de mem9ria atualmente alocada pelo servidor. Objeto 0'>Database5 ue indicar! o banco de dados provedor das informa8es. Retorna o nome do ar uivo de banco de dados. Retorna o nmero de classe do banco de dados. Retorna o nmero de implementao do banco de dados. Retorna o nome do site do banco de dados. Retorna o nmero "'L Dialect atualmente utilizado pelo servidor. Retorna o nmero de &eletes e"ecutados desde a ltima cone"o com o servidor. Retorna o nmero de registros removidos. Retorna o nmero de *etc#s realizados. 'ndica como a gravao de dados est! sendo realizada. ) para ass,ncrono e % para s,crono. Retorna o nmero de Inserts e"ecutados desde a ltima cone"o com o servidor. Retorna o nmero de grava8es efetuadas no buffer Retorna5 em bVtes5 a uantidade de mem9ria utilizada desde a primeira
$ag. (L

Delphi 5 - Novos Recursos

cone"o realizada &oReserve &um>uffers OD4:ajorVersion OD4:inorVersion $age4ize $urge3ount Read'd"3ount ReadOnlV Reads Read4e 3ount 4=eep'nterval Cpdate3ount Cser&ames Version <rites 'ndica se espao reservado para backup de registros modificados no banco 'ndica o nmero de buffers alocados Retorna a parte superior da verso do OD4 Retorna a parte inferior da verso do OD4 Retorna o nmero de bVtes alocados por p!gina Retorna o nmero de $urgings realizados Retorna o nmero de leituras realizadas atrav+s de ,ndices. 'ndica uando o banco de dados + ou no read-onlV Retorna o nmero de p!ginas lidas no banco Retorna o nmero de leituras se ]enciais realizadas nas tabelas do banco Retorna o nmero de transa8es confirmadas entre Ns=eepsO Retorna o numero de 'pdates e"ecutados desdes a ltima cone"o com o servidor. Retorna em uma lista de 4tring5 os usu!rios conectados no banco de dados. Retorna a verso do 'nterbase. Retorna o nmero de p!ginas de dadosescritas no banco.

TIB(*LMonitor
$ermite criar um log de todas as opera8es e instru8es 4U1 ue foram enviadas ao servidor. 3omo o aplicativo 4U1 :onitor no pode monitorar as intru8es 4U1 enviadas pelos componentes 'nterbase.pois trabalha no n,vel da camada >D2/5 o desenvolvedor precisa usar este componente para monitorar e otimizar a aplicao cliente. O uso deste objeto + muito simples. &o e"istem propriedades a serem configuradas5 basta inserir um componente '>4U1:onitor na aplicao.ou em outro aplicativo/. *p9s5 o usu!rio deve configurar a propriedade TraceFla*s do objeto Database da aplicao cliente5 indicando uais sero os comandos filtrados pelo objeto '>4U1monitor. *s instru8es 4U1 podem ser capturadas atrav+s do evento On"'L do objeto. 2ste evento passa um parAmetro E)entTe+t5 do tipo string5 indicando o comando enviando para o servidor. $or e"emplo5 a aplicao poderia ter um 1ist>o" para receber as instru8es#
$ag. ;)

Delphi 5 - Novos Recursos

procedure TForm1.IBSQLMonitor1SQL(EventText: String); begin ListBox1.Items.Add(EventText); end;


3om este c9digo5 todos os comando enviados ao servidor .definidos na propriedade "race*lags do objeto Database/ seriam e"ibidos no 1ist>o".

TIB!vents
3omponente para utilizar os NeventosO do 'nterbase. O conceito de eventos no 'nterbase + muito interessante# o desenvolvedor pode programar eventos no banco de dados5 ue sero e"ecutados em instru8es como #N"ERT5 U$DATE ou DELETE. 2stes eventos podem ser programados em "riggers ou .tored $rocedures5 e as aplica8es ue registrarem os eventos atrav+s do objeto 0'>2vents5 recebero uma notificao toda vez ue algum registro for inserido ou deletado5 por e"emplo. 2ste objeto + muito til para criar telas de refresh autom!tico. $or e"emplo5 um evento poderia ser criado toda vez ue um registro for inserido na tabela. 0odas as m! uinas clientes iriam receber este evento5 e o soft=are poderia ser programado para dar um 1efres# em suas UuerV7s abertas5 criando o efeito de 1efres# autom!tico sem causar O er#ead de 3$C. 2ste objeto roda em um 0hread separado5 e no degrada a performance do sistema.

Principais Propriedades
Database 2vents Registered Objeto 0'>Database5 ue representa o banco de dados atual. &ome dos eventos ue sero recebidos pelo objeto. 4e Tr(e5 indica ue o objeto estar! ativo.

Principais Eventos
On2vent*lert Ocorre uando algum evento + recebido pelo objeto. 4etar o parAmetro CancelAlerts para Tr(e5 indica ue o evento recebido dever! ser ignorado. $ara retornar e receber determinado evento5 basta chamar o m+todo '(e(eE)ents. &em todas as opera8es envolvendo objetos da V31 podero ser e"ecutadas
$ag. ;%

Delphi 5 - Novos Recursos

neste evento5 visto 0hread separado.

ue ele roda em um

Principais Metodos
3ancel2vents Uueue2vents Register2vents CnRegister2vents 3ancela o recebimento dos eventos pendentes. 'ndica ao objeto para iniciar o recebimento dos eventos. Registra os eventos listados na propriedade E)ents. 2ste m+todo j! e"ecuta o m+todo '(e(eE)ents. 3ancela o recebimento dos eventos listados na propriedade % ents.

$ag. ;(

Delphi 5 - Novos Recursos

Palheta Servers
2sta palheta permite uma cone"o 3O:.3omponents Object :odel/ com aplicativos da fam,lia Office. O 3ontrole destes aplicativos j! estavam dispon,veis no Delphi ?5 atrav+s de O12 *utomation5 por+m5 a interface 3O: + o mais novo padro da :icrosoft e5 al+m de oferecer mais poder ao desenvolvedor5 ser! a tendncia dos novos aplicativos para <indo=s. * ar uitetura 3O: se baseia em pe uenos objetos5 com funcionalidade pr9pria5 ue podem se conectar a outros objetos e formar o aplicativo. &esta viso5 podemos dizer ue o <ord e o 2"cel so5 na verdade5 um grande conjunto de objetos 3O: interfaceados e fornecendo uma soluo integrada. 2ste objetos podem ser acessados por objetos 3O: de outros aplicativos5 e a reutilizao de fun8es pode ser conseguida de uma maneira muito pr!tica. Vamos imaginar5 por e"emplo5 ue estiv+ssemos construindo uma aplicao calculadora cient,fica em 3ZZ. $rimariamente5 dever,amos construir uatro objetos 3O:# um para cada operao matem!tica b!sica .somar5 diminuir5 multiplicar e dividir/. 3om estes uatro objetos5 poderiamos prosseguir e criar mais uatro# fatorial5 porcentual5 seno e cosseno. 0er,amos uma fam,lia de objetos 3O: parecida com a ilustrao abai"o#

Soma Multiplicao

Subtrao Diviso

$asso %# 3riao dos objetos b!sicos.

$asso (# 3riao de novos objeto a partir dos objetos bas,cos.

atorial Seno

!ercentual Cosseno

Soma Multiplicao

Subtrao Diviso

3om a calculadora criada5 imaginemos agora ue iniciaremos a construo de um aplicativo cont!bil em Delphi. 3ertamente iremos
$ag. ;;

Delphi 5 - Novos Recursos

precisar das fun8es imbutidas na calculadora5 mas no reescrever o c9digo. 0er,amos trs op8es#

ueremos

3riar uma D11 em 3 com as fun8es da calculadora e"portadasK 3riar um objeto .O3H contendo as funcoes da calculadoraK Ctilizar os objetos 3O: do aplicativo calculadora diretamente da aplicao D21$^'K &este caso5 a opo ; oferece as vantagens#

&o caso da D115 se alguma funo fosse inclu,da5 dever,amos nos preocupar em atualizar tanto a D11 uanto a aplicao cliente5 visto ue esta precisa de um header para importar as fun8es. Outro problema se refere a mem9ria5 pois a D11 seria carregada uma vez para cada processo. 'sto tambem vale para a O3H5 j! ue cada processo cria uma instAncia completa da O3H em uesto. M! ao utilizarmos o objeto 3O: diretamente do aplicativo calculadora5 ter,amos maior facilidade para manuteno5 j! ue no precisar,amos declarar N#eadersO nas aplica8es clientes. Outro ponto positivo se deve ao fato de ue apenas os objetos necess!rios seriam instanciados5 e no todo o aplicativo .a D11 e a O3H seriam carregadas por completo na mem9ria5 mesmo ue estiv+ssemos utilizando apenas uma parte do todo/. $odemos tamb+m oferece a calculadora como um objeto distribuido .D3O: [ Distributed 3O:/5 e instalar o aplicativo apenas no servidor. *s m! uinas clientes iriam se conectar ao objeto 3O: atrav+s da 1*&5 e desta forma5 ao atualizar alguma das fun8es do objeto5 dever,amos apenas atualizar a calculadora no servidor5 nada mais. A pal%eta "er)ers oferece a f(ncionalidade CO& dos aplicativos da fam,lia Office. 2ntendemos isto como# :4<ord5 :42"cel5 :4$o=er$oint5 :s>rinder5 :4Outlook e :4*ccess. 2 importante notar ue ual uer outro aplicativo ou objeto 3O: pode ser acessado atrav+s do Delphi5 por+m via c9digo. * funcionalidade 3O: dos aplicativos Office + muito e"tensa5 e o objetivo desta apostila no + o de ser uma referncia sobre o assunto. 4egue abai"o alguns e"emplos pr!ticos sobre o uso desta palheta#

Iniciali.an'o o /or'
'nsira um componente 0<ord*pplication e utilize o codigo#

WordApp i!"tion1.#onne!t; WordApp i!"tion1.$isi% e :& Tr'e;


$ag. ;?

Delphi 5 - Novos Recursos

)brin'o u# 'ocu#ento e# branco no /or'%


'nsira um objeto 0<ordDocument5 e e"ecute o metodo &e='nstance#

Word(o!'ment1.A!tiv"te; (n o e necessario! Word(o!'ment1.)e*Inst"n!e;

//Exibe o aplicativo Word //"ria #m novo doc#mento

Inserin'o te"to no -inal 'o ar0uivo%


v"r Texto :WideString; %egin Texto :& +Wor,S-op (e p-i . )ovos Ee!'rsos+ /!-r(10)/!-r(11)/ +***.! '%ede p-i.!om.%r+; Word(o!'ment1.#ontent.InsertA2ter(t);

(ubstituin'o u#a palavra%


&este caso5 a palavra de indice ( sera substituida pela string >orland Delphi.

Word(o!'ment1.Words.Item(3).Text:& +Bor "nd (e p-i+;

)lteran'o a -or#ata12o 'e u#a palavra%


'nsira um objeto 0<ordDont e um 0<ordDocument. 2m seguida5 digite o codigo#

Var

T: WideString; begin WordFont1.#onne!tTo(Word(o!'ment.#ontent.Font); WordFont1.Bo d:&1; WordFont1.It" i!:&1; Word(o!'ment1.#ontent.InsertA2ter(t); //o texto sera inserido com a $ormatacao ne%rito e italico End;

Inserin'o te"to no #eio 'e u# ar0uivo %


$ag. ;@

Delphi 5 - Novos Recursos

var T: WideString; begin T :& +# '%e (e p-i+; Word(o!'ment1.Words.Item(3).InsertA2ter(t); //Este comando ira inserir a strin% &"l#be Delp'i& apos a (e%#nda palavra end;

Inserin'o u#a -igura 'entro 'o ar0uivo%


var 2orm"to : Word; ("t" : T4"nd e; 5" ette: 45ALETTE; begin Im"ge1.5i!t're.S"veTo# ipBo"rdForm"t(Form"to6("t"65" e tte); //copia o conte#do do ob)eto ima%e para o clipboard # ipBo"rd.SetAs4"nd e(Form"to6("t"); Word(o!'ment1.#ontent.5"ste; //cola a area de trans$erencia dentro do doc#mento end;

$ag. ;E

Delphi 5 - Novos Recursos

Control Panel Applet


*r uivos .3$1 agora podem ser facilmente criados com o Delphi. *r uivos 3$1 .3ontrol $anel 2"tension/ nada mais so do ue os aplicativos reconhecidos pelo <indo=s como contedo do $ainel de 3ontroles. Cm ar uivo 3$1 possui a mesma estrutura de um ar uivo e"ecut!vel5 por+m5 seu cabealho + diferente.

3ada ,cone representa um ar uivo .3$15 localizado no diret9rio <indo=sX4Vstem

3eja#os co#o criar u#a aplica12o &PL%


V! no Object 1epositor0 e selecione Control $anel ApplicationK Repare ue um objeto 0*pplet:odule ser! e"ibido#

$ag. ;F

Delphi 5 - Novos Recursos

3rie agora o formul!rio ue ser! chamado pela aplicao5 atrav+s do menu Dile5 &e= form. 4elecione o objeto *pplet:odule% e altere o seu evento On*ctivate#

procedure TApp etMod' e1.App etMod' eA!tiv"te(Sender: T7%8e!t; ("t": Integer); begin Form1.S-o*Mod" ; end;
*ltere as propriedades do objeto *pplet:odule% de acordo com a tabela abai"o# *pplet'con 3aption ^elp _cone ue ser! e"ibido no $ainel de 3ontrole. 4elecione algum ar uivo .'3O do diret9rio de imagens do Delphi. 0e"to ue ir! aparecer abai"o do ,cone5 representando o nome da aplicao. Digite 0este. 0e"to ue ser! e"ibido na barra de status do painel de controle. Digite N*plicao de testeO.

2m seguida5 salve o projeto. 3li ue com o boto direito sobre o objeto *pplet:odule% e selecione a opo #nstall Control $anel Applet5 para ue a aplicao seja copiada para o diret9rio 4Vstem do <indo=s. *bra o $ainel de 3ontrole e teste o seu aplicativoS Nota- O processo de instalao do aplicativo no $ainel de 3ontrole se limita apenas G c9pia do ar uivo .3$1 para o diret9rio 4Vstem do
$ag. ;I

Delphi 5 - Novos Recursos

<indo=s. &enhum tipo de alterao no registro + necess!rio. O mesmo vale para a desinstalao do aplicativo.

Objeto T)ppletMo'ule Principais Propriedades:


*pplet'con 3aption ^elp Resid'con Resid'nfo Resid&ame _cone ue ser! e"ibido no $ainel de 3ontrole. 0e"to ue ir! aparecer abai"o do ,cone5 representando o nome da aplicao. 0e"to ue ser! e"ibido na barra de status do painel de controle. 'ndica o nmero do ,cone a ser e"ibido. 1embre-se ue um aplicativo pode possuir v!rios ,cones. 'ndica o nmero do 1esource da string de help. V!rias strings de ^elp s9 podem ser adicionadas com um editor de recursos. 'ndica o nmero do 1esource da string referente ao !aption. V!rios 3aptions s9 podem ser adicionados com um editor de recursos.

Principais Eventos
On*ctivate On'n uirV On4top On4tart<$arams On3reate OnDestroV Ocorre uando o usu!rio inicia a aplicao atrav+s do painel de controle. Ocorre uando o <indo=s.$ainel de 3ontrole/ l as informa8es de recurso do aplicativo5 como ,cones5 te"tos e outros. Ocorre uando o <indo=s .$ainel de 3ontroles/ inicia o processo de .#ut&own do aplicativo. Ocorre uando o aplicativo + iniciado por outro aplicativo5 e no pelo usu!rio. Ocorre uando o Applet3odule + instanciado. Ocorre uando o Applet3odule + removido da mem9ria.

$ag. ;L

Delphi 5 - Novos Recursos

$ag. ?)

Delphi 5 - Novos Recursos

Internet E press
2sta palheta vem adicionar um recurso muito interessante para o desenvolvedor Delphi# o fato de poder e"portar dados em formato .&L. * H:1 .%4tended 3ar,up )anguage / + uma e"tenso da ^0:15 e traz v!rias melhorias no sentido de performance e fle"ibilidade. Cma das principais diferenas para uem trabalha com banco de dados5 + ue a H:1 Nbufferi5aO os dados no Browser5 no necessitando e"ecutar um pesado 1e6uest a cada movimentao de registro feita pelo usu!rio. 2nviar e receber dados em pacotes H:1 + uma tarefa ue tamb+m necessita de uma camada 3I&A. para captura da informao no banco de dados. &ote a diferena de camadas em uma aplicacao I.A$I normal e uma aplicacao I.A$I 73)#

Servidor "EB

Servidor "EB

Aplicao C$%

Midas Server

C$% ,ML

!edido &'e(uest)

'esposta &'esponse)

!edido &'e(uest)

!"ffer dos re*istros+

Bro#ser Cliente

Bro#ser Cliente

$ag. ?%

Delphi 5 - Novos Recursos

3a#os criar passo a passo u#a aplica12o para prover in-or#a14es e# pacotes 5ML%
$rimeiramente5 devemos criar o pe ueno servidor :'D*4 buscar as informa8es no banco de dados. 3rie um novo projeto no Delphi# Dentro da nova aplicao5 abra o Reposit9rio de ObjetosK 4elecione a aba :ulti0ierK 3li ue duas vezes sobre o item Remote Data :odule5 a seguir ir! aparecerK ue a janela ue ir!

3onfira na tabela abai"o o significado das op8es# 3o3lass&ame 'nstancing &ome da classe ue ser! registrada no <indo=sK 'ndica como o Datamodule ser! instanciado. Os poss,veis valores so# #nternal 3ria a instAncia do Data:odule dentro do pr9prio processo. Recomend!vel uando o servidor ue estiver sendo constru,do for uma D11K "in*le #nstance Cma instAncia da aplicao ser! criada para cada cliente conectadoK &(ltiple #nstance *penas uma instAncia da aplicao ser! criada. Cma instAncia do Data:odule ser! criada para cada cliente conectado5 por+m5 dentro do espao de processo da aplicao.
$ag. ?(

Delphi 5 - Novos Recursos

0hreading :odel

Ctilizado apenas uando o Remote Data :odule est! sendo criado dentro de uma D11. 3onfira os poss,veis valores# "in*le 4omente uma re uisio ser! processada por vez. *s demais permanecero em filaK Apartment O Datamodule% + instanciado para cada re uisio do cliente. &esta situao5 os dados esto seguros5 pois todos os acessos sero safe-thread5 ou seja5 livre de conflitos de mem9ria. 2sta opo + recomend!vel para aplica8es ue utilizem o >D2K Free 2ste thread 0er! um comportamento parecido com *partment5 por+m5 neste caso5 os dados no estaro 0hread-4afe. *s concorrncias devero ser tratadas para ue um conflito de acesso a mem9ria no ocorraK Bot% 'gual a opo *ree5 por+m5 o retorno para o cliente ser! feito em fila5 e no em threads.

>aseado nisto5 vamos configurar a cai"a de di!logo conforma a tabela abai"o# 3o3lass&ame 'nstancing 0read :odel 3O:idas4erver :ultiple 'nstance *partment

*p9s dar OQ na cai"a de di!logo5 o objeto 0remoteData:odule ir! aparecer#

$ag. ?;

Delphi 5 - Novos Recursos

$rimeiramente5 devemos colocar um objeto 04ession5 ue ir! controlar as a8es de v!rios usu!rios concorrentes dentro da aplicao. T importante tamb+m configurar a propriedade *uto4ession&ame para 0RC2. 2sta propriedade ir! criar um nome de seo diferente para cada usu!rio conectado na aplicao. *p9s5 um objeto Database deve ser inserido no Data:odule%. 3onfigure corretamente o objeto database para ue aponte para o alias D>D2:O4. 25 em seguida5 colo ue um objeto 0table no Data:odule. 1inke o table com o objeto Database e aponte-o para a tabela *nimals. Devemos agora inserir o objeto ue ira prover os dados para a aplicacao H:1. 2ste objeto ser! da classe 0data4et$rovider5 e ele se encontra na palheta :'D*4. 3olo ue um objeto Data4et$rovider e configure-o de acordo com a tabela abai"o# Data4et &ame 0able% $rovider*nimals

2 OQS 4alve a aplicao e gere o e"ecut!vel. * partir deste momento teremos um servidor midas instalado na ma uina. Devemos agora criar a aplicacao H:15 ue ir! recuperar os dados atrav+s do servidor :'D*4 e fornec-los para a m! uina cliente atrav+s do protocolo ^00$. 3rie uma nova aplicao no Delphi.
$ag. ??

Delphi 5 - Novos Recursos

*bra o reposit9rio de objetos e selecione a opo <eb 4erver *pplication. * janela de seleo <eb 4erver *pplication ser! e"ibida#

'4*$'X&4*$'

3J'

<inX3J'

* aplicao ser! gerada em forma de D11. 2sta opo ir! oferecer melhor desempenho e menos consumo de mem9ria. * aplicao ser! gerada em forma de e"ecut!vel ..2H2/. 2sta opo5 apesar de ser bem pr!tica5 oferece desempenho inferior ao '4*$'. Variao do 3J' criada para ser utilizada em servidores <indo=s %E bit.

4elecione a opcao '4*$' e d OQ. Cm novo objeto 0=eb:odule ser! e"ibido#

$ag. ?@

Delphi 5 - Novos Recursos

$rimeiramente5 colo ue um objeto 0D3O:3onnection .palheta :'D*4/. 2ste objeto ir! realizar a cone"o com nosso servidor :'D*4. 3onfigure suas propriedades de acordo com a tabela abai"o# 4erver&ame 3omputer&ame &ome do servidor :idas a ser conectado Deve ser preenchido apenas uando o servidor midas no estiver local. &este caso5 o nome da m! uina onde o servidor est! instalado deve ser assinalado nesta propriedade 0RC2

3onnected

2m seguida5 insira dois objetos 0H:1>roker .palheta :'D*4/ dentro do <eb:odule. 2ste objeto ir! recuperar os dados das tabelas contidas dentro do servidor. 3onfigure suas propriedades de acordo com a tabela abai"o# &ame Remote4erver $rovider&ame H:1>roker% Objeto 0D3O:3onnection5 ue representa a cone"o com o servidor :'D*4. 4elecione D3O:3onnection% &ome do objeto Data4et$rovider ue representa as tabelas e"portadas pelo servidor :'D*4. 4elecione $rovider*nimals. H:1>roker( D3O:3onnection% $rovider3lients

&ame Remote4erver $rovider&ame

2m seguida5 devemos inserir a ltima classe re uerida5 0midas$age$roducer. 2ste objeto ir! criar a p!gina H:1 baseada nos dados da tabela. 'nsira um objeto 0midas$age$roducer no formul!rio. 4elecione o objeto :idas$age$roducer% e d um cli ue duplo sobre a propriedade <eb$age'tems do objeto. O 2ditor ^0:1 ser! e"ibido#

$ag. ?E

Delphi 5 - Novos Recursos

3li ue com o boto direito sobre o item :idas$age$roducer% e selecione a opo &e= 3omponent.2m seguida5 escolha Dataform. *p9s5 cli ue com o boto direito sobre o novo item5 DataDorm. Desta vez5 selecione Datagrid. 4elecione o novo item5 DataJRid% e configure sua propriedade H:1>roker para o nome do objeto H:1>roker ue ir! prover os dados convertidos em H:1. &este caso5 selecione H:1>roker%. Repare ue o DbJrid j! ir! e"ibir o t,tulo das colunas. O ltimo passo + criar uma ao para e"ecutar este :idas$age$roducer. 3li ue com o boto inverso no objeto <ebData:odule e selecione a opo actions editor. &o editor de a8es5 crie uma nova ao atrav+s do boto &e= *ction. Cm objeto 0=eb*ction ser! criado. 3onfigure suas propriedades de acordo com a tabela abai"o# Default 0RC2. 'sto ir! e"ecutar est! uando o usu!rio digitar o nome do aplicativo no bro=ser5 sem nenhum parAmetro. 2"# ===.clubedelphi.com.brXproject%.e"e &ome do objeto respons!vel pela reposta ao cliente. &este caso5 ser! o objeto :idas$age$roducer%5 ue retornar! uma p!gina H:1 para o cliente.

$roducer

$ag. ?F

Delphi 5 - Novos Recursos

$ath'nfo

$arAmetro ue o usu!rio dever! digitar na CR1 para e"ecutar esta ao. 3omo esta + a ao default5 no + necess!rio informar esta propriedade

2 OkS 3ompile o projeto5 e repare ue o aplicativo project%.dll ser! adicionado no diret9rio da aplicao. O pr9"imo passo + copiar o aplicativo para algum diret9rio de aplica8es do servidor <2>. &o diret9rio da aplicao5 alguns ar uivos Mava4cript devero ser copiados. 2stes ar uivos esto no diret9rio `Delphiab4ourceb<eb:idas# Hmldb.js Hmldisp.js Hmldom.js Hmlerrdisp.js Hmlsho=.js T importante notar ue o servidor <2> dever! estar corretamente configurado e ajustado para ue a aplicaco funcione de forma est!vel.

,tili.an'o o DBNavigator co# 5ML


Vamos criar um outro tipo de interface para a nossa ^omepage# Os dados sero e"ibidos em campos e o usu!rio poder! navegar entre eles atrav+s de uma barra de navegao. $ara a construo deste e"emplo5 abra o cliente H:1 constru,do anteriormente. 'nsira um novo :idas$age$roducer. 3om este5 iremos contruir a nova p!gina de visualizao dos dados. D um cli ue duplo sobre a propriedade <eb$age'tems5 para o editor de p!ginas seja e"ibido. ue

4elecione o item :idas$age$roducer% e cli ue com o boto inverso do mouse. 4elecione a opo &e= 3omponent... &a janela de seleo5 selecione a opo DataDorm. 3li ue sobre o item dataform% e pressione o boto inverso do mouse. 4elecione a opo DieldJroup. 3li ue novamente sobre o item Dataform% e adicione o item Data&avigator.

$ag. ?I

Delphi 5 - Novos Recursos

OkS 4er! necess!rio criar uma ao para este $age$roducer. 3li ue com o boto inverso sobre o <ebData:odule e selecione a opo *ction 2ditor. 3rie uma nova ao e configure sua propriedade $roducer para o objeto :idas$age$roducer(5 ue acabara de ser criado. 3ompile o projeto e instale-o no servidor <eb. $ara testar a aplicao basta digitar a url# http#XXservidor=ebXdiretorio\da\aplicaoXproject%.e"eX:idas$age $roducer( 2 o resultado ser! parecido com a ilustrao abai"o#

$ag. ?L

You might also like