Vous êtes sur la page 1sur 32

abril 2012

abril 2012

ndice
Editorial
Ol amigos do The Club, aqui estamos com mais uma edio da The Club Magazine , feita especialmente para vocs . Primeiramente gostaria de...

Delphi

Delphi

04 15

Curso Delphi - Parte I

Autor: Luciano Pimenta

05 28

Lendo artigos RSS (Feed) no Delphi

Autor:Eduardo Massud

12 30
03

Delphi
Delphi XE2 - Data Explorer, uma ferramenta prtica para nossos dias.
Autor: Vitor Scarso

Android
Android - Trabalhando com Widgets

Android
Linguagem C# - Estruturas de Repetio

Autor: Thiago C. Montebugnoli

18

Autor: Marcos Csar Silva

22

Dicas
- Dicas Delphi

Desafio The Club


- Cruzada

Legenda
Iniciante Intermedirio Avanado
abril 2012

Bem-vindo
Ol amigos do The Club, aqui estamos com mais uma edio da The Club Magazine, feita especialmente para vocs. Primeiramente gostaria de agradecer aos associados quem vem utilizando nosso suporte relacionado ao C# e ao Android. Para mim, sinceramente, um prazer poder auxili-los no aprendizado de uma nova linguagem de programao, possibilitando a abertura de novos caminhos em suas vidas. Quero agradecer tambm os programadores Delphi, que por sinal sua praticidade e compatibilidade se destacada a cada nova verso lanada. Comeamos com o artigo de nosso colaborador Luciano Pimenta, trazendo a primeira parte do Curso em Delphi XE2. Neste primeiro artigo ele abordar assuntos essenciais para quem est comeando a programar em Delphi e para aqueles mais experientes a possibilidade de se aprofundar um pouco mais no assunto. J o colaborador Vitor Scarso, que j trabalhou e escreveu muitos artigos para o The Club, est de volta e vem com um artigo relacionado ao Delphi XE2 junto com sua ferramenta Data Explorer, dandos dicas e exemplos prticos de utilizao. Nosso consultor Eduardo Massud nos ensina como ler artigos RSS no Delphi sendo que os mesmos tm como principal funo uma constante atualizao de dados para o usurio. Eu continuo escrevendo artigos relacionados ao Android, sendo que neste ms dou algumas dicas de manipulao dos principais Widgets desta plataforma. Marcos Csar Silva continua com a caminhada no aprendizado da Linguagem C#, aplicando em exemplos prticos as denominadas e conhecidas estruturas de repetio. A seo de Dicas Delphi est como sempre recheada das melhores dicas que com certeza um dia sero de grande utilidade. Como eu sempre digo, ou melhor, escrevo, fiquem a vontade para dar sugestes de artigos ou dicas, que faremos o possvel para atend-los. Um Forte abrao. Thiago Montebugnoli - Editor Chefe
thiago@theclub.com.br
04
abril 2012
Av. Prof Celso Ferreira da Silva, 190 Jd. Europa - Avar - SP - CEP 18.707-150 Informaes e Suporte: (14) 3732-1529 http://www.theclub.com.br Cadastro: cadastro@theclub.com.br Suporte: suporte@theclub.com.br Informaes: info@theclub.com.br Skype Cadastro: theclub_cadastro Skype Suporte: theclub_linha1 theclub_linha2 theclub_linha3

Internet

www.twitter.com/theclubbr

Copyright The Club 2012 Diretor Tcnico Marcos Csar Silva Diagramao Eduardo Massud Vitor M. Rodrigues Arte Vitor M. Rodrigues Reviso Eliziane Valentim Colunistas Eduardo Massud Luciano Pimenta Thiago Cavalheiro Montebugnoli Marcos Csar Silva Vitor Scarso Impresso e acabamento:
GRIL - Grfica e Editora Taquarituba-SP - Tel. (14) 3762-1345
Reproduo
A utilizao, reproduo, apropriao, armazenamento em banco de dados, sob qualquer forma ou meio, de textos, fotos e outras criaes intelectuais em cada publicao da revista The Club Megazine so terminantemente proibidos sem autorizao escrita dos titulares dos direitos autorais. Delphi marca registrada da Borland International, as demais marcas citadas so registradas pelos seus respectivos proprietrios.

Delphi

Curso Delphi Parte I


Um pouco de histria...
No dia 14 de fevereiro de 2012, comemorou-se 17 anos de umas das melhores linguagem e ferramenta da histria do desenvolvimento de softwares. O nosso querido Delphi. Para celebrar a The Club comea neste artigo uma srie sobre Delphi mostrando desde o iniciante, que quer aprender, assim como o desenvolvedor mais antigo. Quero mostrar aqui dicas de desenvolvimento, de IDE, caractersticas da produtividade do Delphi, ou seja, a srie vlida para o desenvolvedor iniciante, assim como o que esteja a mais tempo trabalhando com o Delphi. Em 1993 a Borland, comea a desenvolver um projeto para a criao de um ambiente visual para criar aplicaes Windows utilizando a linguagem Object Pascal. O mais interessante que o nome Delphi era o codinome do projeto, ou seja, verso beta e que por questes comerciais no deveria ter ligao com o nome final e comercial do produto. Mas quando da definio do nome final, nenhuma sugesto agradou, pesquisas com usurios betas, assim como pessoal especializado em marketing no chegaram a um consenso e o nome Delphi ficou popular, passando para o nome oficial do produto, lanado em 1995. Na Figura 1, temos a caixa do produto em sua verso 1.0.
Figura 1. Caixa do Delphi 1.0

O arquiteto do projeto e que ficou conhecido


abril 2012

05

como pai do Delphi foi Anders Heilsberg (tambm criador da linguagem C#), mas podemos citar outros, como: Chuck Jazdzewski, Allen Bauer, Zack Urlocker, Richard Nelson e Danny Thorpe. Desde o inicio, Delphi sempre foi pioneiro em tecnologias para o desenvolvimento de softwares, como conexo com banco de dados, programao Orientada a Objetos, ambiente de desenvolvimento rpido (RAD - Rapid Application Development). A verso 2 do Delphi coincidiu com o Windows 95 e o desenvolvimento para 32 bits, mas como ficamos acostumados, Delphi era totalmente compatvel com verso 16 bits. Na verso 3, Delphi inovou mais uma vez, pois foi a primeira ferramenta a ter suporte para criar aplicaes multi-camadas em um ambiente RAD. O Delphi 4 trouxe suporte aos mais recentes padres de mercado naquele momento: CORBA, ORACLE 8, alm de criao de controles ActiveX/ Active Forms. O Delphi 5 inovou com o suporte a manipulao fcil de arquivos XML, alm de suporte a nova tecnologia de acesso a dados: ADO. Alm disso, apareceram novas ferramentas, como para controle de verso: TeamSource. A verso 6, trs suporte a Web Services, alm de mostrar: BizSnap, DataSnap e WebSnap. Juntamente com a verso 6, nasce o Kylix, primeira ferramenta RAD para Linux, para criao de aplicativos cross-plataform. No Delphi 7 aparecem os primeiros indcios de suporte a nova plataforma que estava nascendo, o .NET. Nessa verso, temos um compilador para .NET, mas o ambiente do Delphi ainda no da suporte, teramos que criar aplicaes, totalmente manuais, sem as facilidades de componentes e modelagem rpida. Ainda nessa verso, no temos mais o Object Pascal como linguagem, mas sim a Delphi Language, mudana de nome para fins comerciais. O Delphi 8, na minha opinio, foi uma das piores verses j lanadas, suportava apenas aplicaes .NET, o que confundiu alguns desenvolvedores e sua IDE mudou drasticamente, sendo mais pesada, consumindo muita memria. Temos agora o Delphi 2005, que promete ser a primeira ferramenta a ter ambiente de desenvolvi06
abril 2012

mento para Win32 e .NET (Delphi e C#). Teve inicio a arquitetura ALM desenvolvida pela Borland, onde temos ferramentas para controlar todo o clico de vida do projeto, desde requisitos at a finalizao do mesmo. O Delphi 2006, foi a ltima verso da Borland, que juntamente com o Delphi 2007, trouxe algumas novidades no desenvolvimento para .NET e Win32, com a criao de novos componentes para suporte ao Windows Vista e suporte a novas verses do .NET Framework. No Delphi 2009, j tivemos modificaes significativas, onde no existe mais o mesmo ambiente para Win32 e .NET. A empresa, em uma soluo radical (no olhar de alguns desenvolvedores), aproveitou que o Visual Studio (principal concorrente), libera o seu ambiente de desenvolvimento (shell) para outras linguagens, utilizou o mesmo e comeou a disponibilizar o Delphi Prism. Imagine voc desenvolver em Pascal (na verdade se chama Oxygene, da RemObjects, parceira da Embarcadero), usando o Visual Studio. Foi um verdadeiro choque na comunidade. Na defesa da Embarcadero, a vantagem de usar o ambiente do Visual Studio, seria que o desenvolvedor estaria sempre com a verso mais recente do .NET Framework, alm de tecnologias como LINQ, WPF, ASP.NET, Windows Forms etc. Mesmo assim, a verso Win32 do Delphi 2009, trouxe novidades como suporte a Generics, mto-

dos annimos e Ribbon. No Delphi 2010, tivemos o suporte a criao de aplicaes touchpad, para criar interfaces onde o usurio interage com a mesma usando toque no monitor. Uma grande novidade. Agora temos as verses XE e XE2. O XE trouxe suporte ao Windows Azure (desenvolvimento em nuvens) e novidades no DataSnap. O XE2 trouxe novidades significativas como suporte a desenvolvimento de projetos em 64 bits, aplicaes multi-plataformas para Windows e OS (Mac), criao de aplicaes 3D e HD com um framework chamado FireMonkey entre outros. Em 2010 foi lanado o Delphi for PHP, ambiente de desenvolvimento para aplicaes Web usando PHP. Nesse artigo, vamos usar a verso atual, XE2 para mostrar as caractersticas dessa ferramenta.

Conhecendo o Delphi XE2


Caso voc no tenha instalado o Delphi, acesse https://downloads.embarcadero.com/free/delphi para baixar uma verso trial de 30 dias. Sua instalao simples. Ao abrir o Delphi, temos a imagem da tela de Splash (Figura 2). Veja a figura 02. Aps essa tela, o ambiente mostrado (Figura 3). Na imagem, j criei uma aplicao do tipo VCL Forms.

Figura 2. Tela de abertura do Delphi XE2

Veja a figura 3. Para entender o ambiente, na parte superior temos os menus e botes na barra de ferramentas, onde podemos: criar projetos, criar novos itens de projeto, salvar, executar, depurar o projeto etc. no painel do lado esquerdo, temos o Object Inspector, que contm as propriedades e eventos dos controles selecionados na parte central da janela (Figura 4). Veja a figura 04. No painel esquerdo, temos vrias ferramentas, distribudas em abas. A primeira que aparece, o Project Manager, onde temos os arquivos do nosso projeto, e onde podemos excluir, adicionar novos projetos ou arquivos. Temos tambm o Model View (Figura 5) onde podemos criar diagramas UML.

Figura 3. Ambiente de desenvolvimento do Delphi XE2

Figura 5. Criando diagramas no Model View

A outra aba o Data Explorer para podermos criar conexes com banco de dados (os mais diversos) como podemos ver na Figura 6. Veja a figura 6. Ainda no lado direto, temos a Tool Palette (Figura 7) que possui os componentes da VCL, umas das bibliotecas de componentes visuais mais ricas
Figura 4. Object Inspector para configurar propriedades e eventos

abril 2012

07

Figura 7. Algumas abas da Tool Palette do Delphi XE2

Figura 6. Criando conexes com vrios tipos de SGBD no Data Explorer

das ferramentas de desenvolvimento. Esta presente no Delphi desde a sua primeira verso e a cada nova verso ganha mais componentes, sem perder claro, a compatibilidade com verses anteriores. Veja a figura 7. Essa configurao dos painis a padro, mas isso no quer dizer que voc no possa colocar o layout da ferramenta, com a sua configurao. Os painis so dockveis, ou seja, podem ser arrastados e adaptados em qualquer dos dois lados (direita ou esquerda). Para salvar sua configurao, basta digitar uma nova na caixa de seleo de layout na parte superior e clicar no boto ao lado para salvar (Figura 8).
Figura 9. Padro clssico do ambiente do Delphi

Para configurar as opes temos um editor para deixar o Delphi como queremos. Acesse o menu Tools>Options e veja a quantidade de in-

formaes que podemos customizar como: cores do editor de cdigo, componentes da Tool Palette entre outras (Figura 10).

Figura 8. Salvando a configurao do layout

Nessa caixa de seleo, temos algumas configuraes prontas, como a Classic Undocked, onde todas as janelas no ficam dockveis, padro das primeiras verses do Delphi (Figura 9), assim como a Tool Palette na parte superior.
08
abril 2012

Figura 10. Editor de opes do Delphi

Veremos algumas dessas opes com mais calma, no decorrer dos nossos artigos. Ainda no editor, podemos customizar em muitas caractersticas a Tool Palette, seja em tamanho dos cones, cores, modo de exibio, etc. Acesse o item Tool palette no editor e veja na Figura 11 as configuraes que temos para a paleta de componentes do Delphi XE2. Veja a figura 11 No item Colors, podemos formatar as opes de cores que queremos ou ainda, escolher os esquemas de cores pr-definidos. Veja na Figura 12 um pouco de configurao da Tool Palette.

Figura 11. Configurando a opes da Tool Palette

Figura 12. Tool Palette com Caption lateral, novas cores

Primeiros passos
Bom, agora que conhecemos o ambiente, precisamos usar o mesmo. Vamos criar uma aplicao simples, um conhecido: Al mundo. No Delphi, acesse o menu File>New>Other e na janela que se abre, escolha Console Application (Figura 13). Veja a figura 13. Nota: vou tomar por base que o leitor j possui algum conhecimento em lgica de programao. Assim, focarei na sintaxe do Delphi em si no desenvolver do curso.

Figura 13. Criando uma aplicao console

Voc deve estar se perguntando: mas Luciano, voc no falou que Delphi, desde a primeira verso, foi sucesso por que criava aplicaes rpidas para Windows. E Voc mostra uma aplicao console?. Calma, uma coisa de cada vez, estamos iniciando no Delphi . Aps criada a aplicao, veja que no editor, aparece apenas algumas linhas de cdigo. Digite

entre o bloco try e except, o seguinte cdigo:

Writeln(Al mundo); Writeln(The Club); Readln;

Nota: Note que para escrever um texto


abril 2012

09

usamos aspas simples (). Assim que o Delphi identifica que vamos referenciar um texto (string). Veremos mais detalhes sobre isso e outras caractersticas nas prximas edies da nossa srie. O cdigo ir escrever duas linhas na janela do DOS. O comando Readln usado para que sua tela fique parada aps a execuo dos dois primeiros cdigos. Sem ela, a tela do DOS apenas piscar e voc no conseguir ver o texto apresentado. Aperte F9 para executar a aplicao. Veja na Figura 14 a aplicao rodando. Vejaa figura 14. Para terminar a execuo do programa, basta fechar a janela do DOS. Simples no. Mas agora, vamos melhorar isso. Figura 14. Aplicao console em execuo

Aplicaes Windows
Acesse o menu File>New>VCL Forms Application. Um formulrio padro Windows ser criado. Aperte a tecla F12 e veja que o editor de cdigo, possui muito mais cdigo, pois nosso formulrio uma classe. Ele tem vrias caractersticas j implementadas, como por exemplo, os botes de fechar, minimizar e maximizar. No precisamos nos preocupar com o fechar do formulrio quando clicarmos no boto X. Aperte F9 para visualizar o formulrio em execuo. Vamos fazer o mesmo exemplo anterior, escrever um texto. Mas agora, vamos usar controles de tela: boto, caixa de texto e rtulo. Assim, adicione no formulrio (aperte F12 novamente, para voltar ao formulrio e sair do editor) um Button, um Edit e um Label, que esto na aba Standard da Tool Palette. Veja na Figura 15 como ficou os componentes distribudos no formulrio. Se voc quiser limpar o valor Edit1 da caixa de texto, selecione o componente e acesse a propriedade Text no Object Inspector. Para alterar entre as propriedades dos componentes, basta selecionar o mesmo que no Object Inspector trar apenas as propriedades do controle selecionado.

Figura 15. Distribuio dos componentes no formulrio

Qual o objetivo desse programa. O usurio digitar um texto na caixa de texto e ao clicar no boto, temos que mostrar no Label o valor digitado. Bem simples n? Para pensar: onde devemos digitar o cdigo? (barulho de relgio: tic tac tic tac). Bom, se o usurio deve digitar um texto, clicar no boto para o mesmo aparecer no Label acredito eu que deva ser no boto. OK, o boto, mas agora, o que fazer? Os componentes possuem eventos, de acordo com suas caractersticas, por exemplo: o boto possui o evento Click, por que o usurio vai clicar nele para executar alguma tarefa. No boto tambm temos um evento que ocorre quando o usurio coloca o mouse sobre o componente. Nem todos os controles possuem o evento Click, pois no de sua caraterstica receber o clique do mouse. J achamos o evento, agora precisamos saber como fazer o cdigo. D um duplo clique no

boto e veja que fomos direcionados para o editor de eventos em um cdigo chamado Button1Click. Esse evento executado quando clicamos no boto, ento nosso cdigo de mostrar no Label o valor do Edit, deve ser aqui. Digite o seguinte cdigo:

Label1.Caption := Edit1. Text;

Para voc que no conhece muito de Delphi, a idia preencher a propriedade Caption do Label com o valor digitado no Edit, que esta armazenada na propriedade Text. Se voc digitou o nome do objeto Label1 e Edit1 e digitou ponto (.), deve ter notado que uma caixa com cdigo apareceu. o Code Insight do editor de cdigos do Delphi (Figura 16). Veja a figura 16.

10

abril 2012

Ele mostra as propriedades que o objeto que precede o ponto (.) possui. Assim, fica fcil de encontrar uma propriedade, pois o Code Insight filtra os nomes, de acordo com o que for sendo digitado. Voc tambm pode usar uma combinao de teclas para acessar o Code Insight. Em qualquer parte do editor de cdigo, basta apertar Ctrl + Space (barra de espao) que o Code Insight ser mostrado. til para quando no lembrarmos o nome de algum controle em tela ou varivel. Voc tambm pode configurar para que o mesmo aparea sempre que utilizarmos o teclado (ao digitar qualquer tecla). Acesse o editor de opes (Figura 10) e no item Editor Options>Code Insight, marque a opo Auto Invoke. No esquea de escolher em Source file type a opo Pascal (Figura 17). Veja a figura 17. Podemos configurar ainda o tempo de aparecimento do Code Insight (Delay), hints etc. Agora, precisamos testar nossa primeira aplicao em Delphi. Aperte F9 para executar e mostrar o formulrio. Digite algum texto e clique no boto. O valor digitado ser mostrado no Label (Figura 18).

Figura 16. Code Insight no Delphi

Figura 18. Aplicao em execuo Figura 17. Configurando o Code Insight

Parabns, voc criou seu primeiro programa em Delphi .

Concluses
Iniciamos nesse artigo, uma srie para voc aprender Delphi ou se j tem conhecimento, aprofundar um pouco mais sobre essa maravilhosa ferramenta de desenvolvimento. Nos prximos artigos vamos conhecer mais a fundo a linguagem Delphi com sua sintaxe e comandos mais comuns para o desenvolvimento de aplicaes Windows. Um grande abrao a todos e at a prxima!
abril 2012

Sobre o autor
Luciano Pimenta
Tcnico em Processamento de Dados, desenvolvedor Delphi/C# para aplicaes Web com ASP.NET e Windows com Win32 e Windows Forms. Palestrante da 4 edio da Borland Conference (BorCon). Autor de mais de 60 artigos e de mais de 300 vdeos aulas publicadas em revistas e sites especializados. consultor da FP2 Tecnologia (www.fp2.com.br) onde ministra cursos de programao e banco de dados. desenvolvedor da Paradigma Web Bussiness em Florianpolis-SC.

www.lucianopimenta.net

11

Lendo artigos RSS (Feed) no Delphi


Os artigos RSS (Rich Site Summary) so uma forma simplificada de apresentar o contedo de um site, todo documento RSS baseado na linguagem XML e geralmente exibe um grande volume de informaes existentes em uma pgina na internet, exibindo um contedo resumido ao leitor, e que por ter essa caracterstica de alimentar notcias constantemente, esses artigos ganharam o nome de Feeds. O primeiro passo baixar um arquivo temporrio, que o arquivo XML que ir servir de base para receber todos os feeds dos sites.
finally Free; end; end; function BaixarXML(const link, Temporaria : TFileName) : boolean; begin Result:= True; with TDownLoadURL. Create(nil) do try

Veja a figura 1

Para que possamos criar um leitor RSS precisamos fazer com que ele leia esses arquivos XML, uma curiosidade que todo arquivo XML dos Feeds tem a mesma estrutura, o que facilita a vida dos programadores ao precisar ler os ns (nodes) do arquivo XML, tornando assim um padro para todos os arquivos.

URL:= link; Filename:= Temporaria; try ExecuteTarget(nil); except Result:= False; end;

Aps baixar o arquivo XML, iremos salvar o arquivo temporrio (tambm padro para leitura de arquivos RSS), o qual tem o nome de temp. adpheadlines.xml, esse arquivo armazena todos os dados de arquivos gerado temporariamente no computador, funcionando como um motor de leitura dos arquivos RSS, ele ir retornar toda a estrutura padro de arquivos XML que possibilitar ler a estrutura de um arquivo RSS de qualquer site.

12

abril 2012

procedure TForm1. btnAtualizarClick(Sender: TObject); var link, STitle, sDesc, sLink, Temporario: String; StartItemNode, ANode: IXMLNode; begin link:= edUrlXml.Text; Temporario:= IncludeT railingPathDelimiter(Ex tractFilePath(Applicat ion.ExeName)) + temp. adpheadlines.xml; Screen.Cursor:= crHourglass; then begin Screen.Cursor:= crDefault; raise exception. Create(No foi possvel encontrar as Headlines); try if not BaixarXML(link, Temporario) begin Screen.Cursor:= crDefault; Raise Exception. CreateFmt(Impossvel conectar Internet, veja se voc j est conectado!,[]); Exit; end; StartItemNode:=XMLDoc. DocumentElement. ChildNodes.First. ChildNodes. FindNode(item); ANode := StartItemNode; repeat if not FileExists(Temporario) sTitle:= ANode. ChildNodes[title].Text; sDesc:= ANode. then Exit; end; lvFeedList.Clear; XMLDoc.FileName := Temporario; XMLDoc.Active:=True; with lvFeedList. Items.Add do begin Caption:= STitle; SubItems. Add(sLink); SubItems. Add(sDesc) end; ANode:= ANode. ChildNodes[description]. Text; sLink:= ANode. ChildNodes[link].Text; Figura 1. Arquivo temporrio gerado

Interessante fazer uma verificao se o arquivo XML temporrio e o Feed da pgina solicitada foi baixado, caso no tenha sido, verifique se h conexo com a internet.

Caso o arquivo esteja correto ele ir ler as tags XML correspondente a cada artigo, que estaro exibidos em um componente ListView, neste exemplo

NextSibling; until ANode = nil; finally DeleteFile(Temporario); Screen.Cursor:= crDefault; end; end;

E caso o arquivo do RSS contenha erro ou no esteja em seu destino ser informado tambm um aviso de erro ao usurio.

E por fim, para exibirmos o contedo de cada Feed, foi inserido um WebBrowser na aplicao que ir abrir a pgina correspondente ao artigo listado na RSS no momento que o usurio der um duplo clique no artigo.
abril 2012

13

Figura 2.

procedure TForm1. lvFeedListClick(Sender: TObject); var i: integer; url: String; begin url:= lvFeedList. Items[lvFeedList.selected. index].SubItems[i]; WebBrowser1. Navigate(url); end;

1 ListView, que ir listar em grade todas as matrias em destaque da RSS, 1XMLDocument, que ser o responsvel por gerenciar os arquivos XML temporrio e do site, alm de 1 WebBrowser que ir exibir a pgina do artigo selecionado.

Concluso
Todo RSS tem a funo de informar o leitor com matrias atuais sem perder a agilidade, o que traz muita vantagem em aplicaes que contm reas de leituras especificas onde a informao fundamental e constante, como no meio rural, onde clima e condies especficas influenciam o produtor rural, assim como em outras reas.

Sobre o autor
Eduardo Massud
Consultor Tcnico The Club.

Veja a figura 2.

Obs: Os componentes utilizados neste


exemplo foram 1Edit, que recebe a url (que informada pelo site de notcias) do RSS,

eduardo@theclub.com.br

14

abril 2012

Data Explorer, uma ferramenta prtica para nossos dias.

Delphi XE2

Sem dvida o Delphi uma ferramenta prtica e produtiva. Trabalhando com a verso Delphi XE2 vou destacar algumas ferramentas que tal verso oferece para tornar o desenvolvimento dos nossos projetos mais rpidos. A primeira ferramenta o Data Explorer, um painel que nos fornece uma conexo direta com o banco de dados, oferecendo as principais funes para manipular nosso BD (Banco de Dados), facilitando a consulta s informaes do nosso BD eliminando o uso de aplicaes de terceiros. Normalmente o Data Explorer est localizado do lado direito da interface do Delphi XE2 (Figura 01).

Nessa matria vou trabalhar com um BD do Firebird, criei um banco com o nome LABDADOS. FDB, voc poder usar qualquer banco que tenha para acompanhar a matria.

Criando Conexo
Agora criaremos um acesso ao banco de dados Firebird, clique com o boto direito no item Firebird e escolha a opo Add New Connection, depois digite o nome da conexo e clique em OK. Observe que na rvore do item Firebird j aparece o objeto da nova conexo que criamos. No projeto que estou trabalhando adicionei uma conexo chamada Laboratorio. Clique com o boto direito no item Laboratrio e escolha Modify Connection. Adicione o caminho, usurio e senha de acesso ao Banco de dados nos campos Database, User e Password. (Figura 02)
Figura 01: Data Explorer.
abril 2012

Podemos observar que o do DBEXPRESS pode acessar diversos tipos de bancos de dados como: MySQl, Firebird, Interbase e outros.

15

Explorando o BD
Aps concluir a conexo observe que na rvore do Data Explorer no item Laboratrio j possvel ter o acesso as tabelas, procedures da base de dados. Um recurso interessante o acesso as Procedures e Functions do banco de dados, isso muito bom at porque um BD pode ter vrios procedimento e funes e podemos acessar de maneira individual cada um deles. Claro que cada funo do Data Explorer depende o objeto escolhido na rvore, para mostrar as opes disponveis para cada objeto basta clicar com o boto direito do mouse sobre o objeto. Veja a Figura 03 selecionei o objeto procedure: SP_GEN_DESPESA e cliquei na opo View parameters. A IDE do Delphi vai mostrar todos os parmetros desta procedure e tambm a opo de execut-la. Veja a figura 3.

Figura 02: Conexo.

Opes de cada objeto do Data Explorer


Providers - Provedores: Os seguintes comandos esto disponveis quando selecionamos os objetos como Interbase, Firebird, MySQL, DB2: Refresh - Atualiza todas as conexes defenidas do provedor. Add New - Connection Adicionar uma nova conexo no Data Explorer.

Comandos de uma determinada conexo ao provedor: Os seguintes comandos esto disponveis quando selecionamos um determinado acesso ao BD. Como no caso da matria selecionamos o objeto Laboratrio que pertence ao provedor FIREBIRD. Refresh - Atualiza as informaes da conexo. Delete Connection - Apaga a conexo. Modify Connection - Modifica as informaes de acesso ao BD. Close Connection - Encerra a conexo com o banco de dados. Rename Connection - Renomeia a conexo.
16
abril 2012

Figura 03: Opes.

SQL Window - Abre o Query Builder, aonde voc pode editar e escrever comandos SQL. Quando voc utiliza essa ferramenta para digitar os comandos os resultados do SQL so exibidos na parte de baixo da tela. O uso dessa ferramenta pode facilitar muito o trabalho do programador. Mas isso assunto para outra matria.

Comandos do objeto TABLE : comandos quando selecionamos uma tabela: Refresh - Atualiza as informaes. Retrieve Data From Table - Abre o Code Editor, mostrando todos os dados da tabela selecionada. Nessa tela pode organizar e modificar os dados,

mas as alteraes no sero salvas no BD. Drop Table - Excluir a tabela selecionada. Alter Table - Abre o Code Editor. Podendo modificar a estrutura das tabelas, no final das alteraes poder confirmar as alteraes na tabela no BD. Copy Table - Copia a estrutura e os dados da tabela selecionada. Paste Table - Com essa opo possvel migrar uma tabela para provedores diferentes, copia a estrutura e os dados, porem os dados no sero substitudos se j existirem.

Figura 04: Arrastar e Soltar.

Migrates the table structure and data copied from a given provider to the selected provider. Although you must select a table in the target provider, no data will be overwritten.

nente TSQLConection com todas as informaes da conexo que criamos no DataExplorer. (Figura 04) Veja a imagem 4.

Comandos do objeto VIEW:


Refresh Atualizar as informaes.

Concluso
Enfim a ferramenta DataExplorer nos oferece

muitos recursos para a manipulao, edio de dados. Tambm oferece um acesso a ferramenta QueryBuilder para trabalhar com o BD que criamos. Cada vez mais vemos que o Delphi tem se tornado uma ferramenta prtica e produtiva, logo publicarei mais temas sobre o Delphi e suas verses. Se desejar saber sobre um assunto especfico ficarei feliz em ajudar, entre em contato por email ou pelo The Club. At mais!

Retrieve Data From View Exibe os dados da VIEW (viso) selecionada. Poder modificar os dados e organiza-los como desejar, porem as alteraes no sero salvas.

Comandos do objeto Stored Procedure: Quando selecionamos uma procedure apresenta os seguintes comandos: Refresh - Atualiza as informaes. View Parameters - Abre o CodeEditor e exibe todas as informaes da procedure selecionada. Oferencendo a opo de executar a SP na prpria IDE do Delphi. Como foi mostrado no exemplo da matria.

Sobre o autor
Vitor Scarso
Consultor Tcnico do The Club, trabalha com programao h 10 anos e formado em Tcnico de Informtica.

suporte@theclub.com.br

Drag and Drop


Um recurso interessante do Data Explorer a opo de arrastar-e-soltar (drag and drop). Se selecionarmos o objeto Laboratorio, que a conexo com o BD podemos arrastar e soltar no nosso projeto Delphi, assim criado um compoabril 2012

17

Trabalhando com Widgets


Quando se fala em Widgets todo mundo pensa em mini aplicativos para personalizar seu celular ou tablet, aplicativos que oferecem diversas opes, por exemplo: relgios personalizados, indicadores de carga de bateria ou at mesmo botes e funes que facilitam o uso do aparelho. Na realidade eu gosto muito destas tecnologias, acho legal e interessante deixar meu Smartphone ou tablet um tanto diferente dos outros, mas para quem no sabe, os denominados Componentes em linguagem de programao Delphi ou C# so os conhecidos Widgets na programao para Android. Montarei alguns exemplos bsicos de utilizaes destes componentes, como: o TextView, EditText, Button, RadioButton, CheckBox, entre outros.

Android
Algumas propriedades fundamentais quando se trata de componentes no Sistema Android seria o layout_width, o layout_height e o id. O primeiro corresponde largura, o segundo a altura do componente podendo ser do tipo fill_parent ou wrap_content. A propriedade id identifica o campo na aplicao, a identificao do componente em si. Exemplo:
layout_width = fill_parent: ocupa o tamanho mximo disponvel na tela.

Conceitos Bsicos
A classe View responsvel pela criao de qualquer componente grfico, sendo a base para os componentes visuais. J a classe Widget a classe filha de View, representando os componentes.

layout_height na tela.

= wrap_content:

ocupa apenas o tamanho necessrio id = @+boto/btnSalvar

Exemplo: EditText android.widget. EditText.

Depois de aprendermos conceitos bsicos e fundamentais a respeito dos Widgets, explorarei mais a fundo um a um para entendermos melhor.

18

abril 2012

TextView
Este um dos mais simples, ele representa um texto, no Delphi se compara a um Label. Exemplo:

cdigo XML fica da seguinte maneira. Exemplo:

<Button android:id=@+boto/btSalvar android:layout_width=fill_ parent android:layout_height=wrap_ content android:text=Salvar Dados />

<TextView android:id=@+label/txtlabel android:layout_width=fill_ parent android:layout_height=wrap_ content android:text=Exemplos de Widgets />

A Figura 01 nos proporciona todos os controles utilizados at o momento.

EditText
Este controle representa um campo editvel, onde podemos inserir quais dados que desejarmos. Exemplo:

<EditText android:id=@+Edit/Editar android:layout_width=fill_ parent android:layout_height=wrap_ content android:text=Digite aqui />

Figura 01: Controles utilizados.

CheckBox
Permite criar um controle para checar uma ou vrias opes, este controle muito utilizado. No exemplo abaixo criei uma possibilidade para o usurio checar se Estudante e Trabalhador. Veja a Figura 02 para maiores detalhes. Exemplo:

Button
Este controle nos possibilita a utilizao de um boto para realizar tudo o que desejar, como por exemplo: executar uma rotina ao clicar no mesmo, o
<CheckBox android:id=@+checkbox/

abril 2012

19

ckEstudante android:layout_width=fill_parent android:layout_height=wrap_ content android:text=Estudante /> <CheckBox android:id=@+checkbox/ ckTrabalhador android:layout_width=fill_parent android:layout_height=wrap_ content android:text=Trabalhador />

<RadioGroup xmlns:android=http:// schemas.android.com/apk/res/ android android:orientation=vertical android:layout_width=fill_ parent android:layout_height=fill_ parent> <RadioButton android:id=@+radio/ rbMasculino android:layout_width=fill_ parent android:layout_height=wrap_ content android:text=Masculino/> <RadioButton android:id=@+radio/rbFeminino android:layout_width=fill_ parent android:layout_height=wrap_ content android:text=Feminino/> </RadioGroup>

Figura 02: Utilizao do CheckBox.

RadioGroup e RadioButton
Estes controles trabalham juntos. O RadioGroup permite agrupar controles RadioButton, utilizvel em tipos de campos booleanos por exemplo, no nosso caso utilizamos estes componentes para indicar se o usurio do sexo masculino ou feminino. Ver Figura 03. Exemplo:
20
abril 2012

Figura 03: Uso do RadioButton.

Concluso
Este artigo abordou alguns Widgets bsicos para se trabalhar com o Sistema Android. importante ressaltar que o uso bem fcil e intuitivo, os senhores podem perceber que o cdigo muda muito pouco de componente para componente. O XML praticamente o mesmo para todos, basta aprenderem um pouco de suas funcionalidades que fica fcil a implementao no que desejar no projeto. Fica a dica para testar outros Widgets, tais como: o ImageView que permite a insero de imagem, o AnalogClock ou DigitalClock ambos possibilitam colocar um relgio tanto analgico como digital, o DatePicker a manipulao de Data (dia, ms e ano) ou at trabalhar com Cronmetro utilizando o Chronometer. Um forte abrao e at o ms que vem!

Sobre o autor
Thiago Cavalheiro Montebugnoli
Thiago Cavalheiro Montebugnoli tecnlogo, formado pela Faculdade de Tecnologia de Botucatu SP (FATEC) foi consultor tcnico do The Club, j desenvolveu softwares utilizando a plataforma .NET, Delphi junto com Banco de Dados SQL Server e Firebird. Atualmente trabalha no Centro de Processamento de Dados da Prefeitura Municipal de Ita-SP. Possui as seguintes certificaes: MCP - Microsoft Certified Professional, MCTS - Microsoft Certified Technology Specialist, MCAD - Microsoft Certified Application Developer e MCSD - Microsoft Certified Solution Developer.

thiago@theclub.com.br

abril 2012

21

Linguagem C#
Neste segundo artigo veremos as estruturas de repetio, os denominados laos ou loop. As estruturas de repetio so usadas para controlar a execuo de cdigos repetidamente at que uma condio seja verdadeira. Falarei tambm um pouco dos controles de fluxos como o: Break e o Continue.

Estruturas de Repetio

Inicie um novo projeto do Visual Studio 2010 e crie uma aplicao Windows Forms. Trabalharemos tambm neste artigo com o controle ListBox para armazenar os dados obtidos das rotinas de repeties, para isto coloque 6 botes e um ListBox em nosso formulrio encontrado na palheta Common Controls. Este componente o mesmo utilizado no Delphi, tendo suas propriedades e mtodos bem parecidos. A Imagem 01 ilustra a estrutura do formulrio. Sendo que cada boto responsvel por uma rotina, neste caso iremos mostrar o resultado no ListBox ao Lado.
22
abril 2012

Figura 01: Estrutura Inicial do Formulrio.

Utilizando o #Region
Antes de iniciarmos nossa codificao darei uma dica interessante, o uso de um recurso cha-

mado Region. Para quem no sabe, o Microsoft Visual Studio implementa este recurso para facilitar a vida de ns programadores. O mesmo visa diminuir visualmente o cdigo e deix-lo agrupado por tipos de utilizao.

Exemplo: Exemplo: Cdigos para Insero, Excluso, Alterao, etc...


#region While private void button1_Click(object sender, EventArgs e) { int numero = 1; listBox1.Items.Clear(); listBox1.Items. Add(Comando While); while (numero <= 20) #region Comando Do/While <Bloco de Comandos> <Bloco de Comandos> #endregion { listBox1. Items.Add(numero. ToString()); numero += 1; } } #endregion

Comando Do/While
O Do/While tem quase a mesma funcionalidade do While, a nica diferena que com o uso dele teremos os comandos executados ao menos uma nica vez. Sintaxe:

No caso especfico deste artigo agruparemos por tipos de Estrutura de Repetio. Sintaxe:

Do { //Comandos } While(condio)

#region Comando While <Bloco de Comandos> <Bloco de Comandos> #endregion

Exemplo:

Aps a implementao acima o Visual Studio insere um sinal de menos - ou um de mais + para poder minimizar ou maximizar esta regio do cdigo. Os blocos ficariam da seguinte maneira:

#region Do/While private void button2_Click(object sender, EventArgs e) { int numero = 20;

Veja a figura 2.

Comando While
O comando While geralmente utilizado quando no sabemos quantas vezes necessrio repetir um bloco de comandos para que obtenhamos uma condio verdadeira. Esta condio de retorno deve ser booleana. Sintaxe:

while (teste condicional) { //Comandos } Figura 02: Resultado do Comando While.


abril 2012

23

listBox1. Items.Clear(); listBox1. Items.Add(Comando Do/ While); do { listBox1. Items.Add(numero. ToString()); numero -= 1; } while (numero >= 1); } #endregion

Figura 03: Resultado do Comando Do/While.

Veja a figura 3. A diferena do Resultado dos comandos citados acima que no segundo estamos decrementando o valor. Notem que no C# temos a facilidade para fazer esta tarefa, sendo que: += Incrementa um valor -= Decrementa um valor

Comando For
O famoso comando For possui exatamente a mesma funcionalidade do comando While. Ele trabalha checando uma condio para executar um bloco de comandos at que esta condio seja verdadeira. Sintaxe:

Figura 04: Resultado do Comando For.

for (int i =0; i <= 20; i++) { //Comandos }

dos, neste caso especfico executaremos 20 vezes. O terceiro argumento (i++) indica o incremento automtico desta varivel. Poderamos tambm decrementar um valor (i--) Exemplo:

sender, EventArgs e) { listBox1. Items.Clear(); listBox1. Items.Add(Comando For); for (int i = 1 ; i <=20; i++) { listBox1.

#region For private void button3_Click(object

A primeira parte (int i= 0) temos uma varivel inteira inicializada com o valor 0, na segunda (i <= 20) uma condio para executar o bloco de coman24
abril 2012

Items.Add(i.ToString()); } } #endregion

Veja a figura 4.

Comando Foreach
Quando descobri este comando fiquei surpreso com sua utilidade. O lao Foreach utilizado quando desejamos percorrer todos os elementos de um array ou de colees de dados, como por exemplo, um ArrayList. Podemos tambm usar um For rodando enquanto uma determinada varivel for menor que a largura de um array (geralmente usado a propriedade Length). O Lao Foreach uma boa ideia quando se trata na leitura e apresentao dos dados, sendo de uma implementao muito rpida. Sintaxe:

Figura 05: Resultado do Comando Foreach.

Veja a figura 5.
{ lista. Add(Nmero_+i. ToString()); }

Controles de fluxo
Utilizamos dois controles de fluxo em estruturas de repetio: o Break e o Continue. O primeiro utilizado para sada de laos e o segundo quando dever mover a execuo para a prxima iterao no lao.

foreach (var item in collection) { //Comandos }

foreach (var item in lista) { listBox1. Items.Add(item); } } #endregion

Comando Break
Sintaxe:

O var pode ser do tipo int, float, string, etc... seria o tipo da varivel. O item ser o nome do elemento atual do array e collection o array a ser manipulado. Veja exemplo a seguir:

#region Foreach private void button4_Click(object sender, EventArgs e) { ArrayList lista = new ArrayList(); for (int i = 1; i <= 20; i++)

Neste exemplo, no primeiro momento utilizamos um tipo de varivel ArrayList , sendo necessrio importar o seguinte namespace:

for (int i = 1 ; i <=20; i++) { //Comandos If (condio1 == condio2) Break; }

using System.Collections;

Foi criado um For para alimentar nosso Array e logo em seguida um Foreach para percorr-lo e mostrar o resultado no Listbox.

Ressalto que neste exemplo utilizei o Operador For, O Break pode ser usado tanto em While, Foreach, Do/While, vejamos o cdigo a seguir.

abril 2012

25

#region Break private void button5_Click(object sender, EventArgs e) { listBox1. Items.Clear(); listBox1. Items.Add(Comando Break); for (int i = 1; i <= 20; i++) { listBox1. Items.Add(i.ToString()); if (i == 15) { break; MessageBox.Show(Comando Break, n + i.ToString()); } } } #endregion

Figura 06: Comando Break.

Figura 07: Comando Continue.

No cdigo criado anteriormente usei um If para verificar se o nmero de repetio igual a 15 e logo em seguida interrompi o lao mostrando ao usurio uma mensagem, ou seja, interrompemos nosso lao e tudo o que vier aps o comando Break. Ver Imagem 06. Veja a figura 6.

for (int i = 1 ; i <=20; i++) { //Comandos If (condio1 == condio2) Continue; //Comandos }

Veja o exemplo a seguir:

Comando Continue
Sintaxe:

#region Continue private void button6_Click(object sender, EventArgs e) { listBox1. Items.Clear();

26

abril 2012

listBox1. Items.Add(Comando Continue); for (int i = 1; i <= 20; i++) { if ((i == 10) || (i == 11) || (i == 12)) continue; listBox1. Items.Add(i.ToString()); } } #endregion

No cdigo utilizei um If para verificar se o nmero de repetio igual a 10,11 ou 12, caso a condio seja verdadeira utilizei o continue. Notem que estes nmeros no foram adicionados no Listbox pelo fato de pularmos e irmos para a prxima iterao do lao. Ver Imagem 07. Veja a figura 7.

Concluso
Pudemos aprender neste artigo as denominadas estruturas de repetio com exemplos prticos e fceis. Continuaremos nossa caminhada no aprendizado desta linguagem de programao. Abrao e at o ms que vem!

Sobre o autor
Marcos Csar Silva
Consultor de Sistemas na consultoria de sistemas DataSmart e Consultor Tcnico do The Club, Bacharel em Cincia da Computao, MBA em Gesto Empresarial, Certificaes MCAD (Microsoft Certified Application Developer) e MCSD.NET (Microsoft Certified Solution Developer .NET)

thiago@theclub.com.br

abril 2012

27

Dicas DELPHI
Validadndo cdigo ISBN (International Standard Book Numbers)
Os cdigos ISBN so nmeros de cdigo que servem para identificao de livros, que so compostos por treze caracteres, sendo eles nmericos 0 a 9, o hfen, e a letra X, que esto divididos em quatro partes, estando separadas por hfens, sendo que a primeira parte identifica os a regio e idiomas de onde origina o livro, a segunda parte identifica o editora do livro, a terceira parte identifica um determinado livro na coleo de um editor, e a quarta e ltima parte o digito verificado, assim como funciona com a numerao de documentos e cartes. Para verificarmos a validade de um cdigo ISBN precisamos primeiro verificar os nove primeiros dgitos trs primeiras partes se o ISBN, multiplicando cada dgito por um nmero inferior a 11 contando as posies de esquerda cada dgito e acrescentando o resultado da multiplicao ao dgito verificador, e em seguida divide-se esse nmero por 11, formando assim um cdigo ISBN vlido.

begin if (Pos(Numero[i], 0123456789) > 0) then begin Val(Numero[i], NConsulta, Erro); SomaValores := SomaValores + NConsulta * (11 - Contador); Inc(Contador); end; end; if (SomaValores mod 11 = 0) then IsISBN := True else IsISBN := False; end else IsISBN := False; end;

function ISBNValido(ISBN: string): Boolean; var Numero, DigitoVerificador: string; NConsulta, SomaValores, Erroo: Integer; i, Contador: Word; begin DigitoVerificador := Copy(ISBN, Length(ISBN), 1); Numero := Copy(ISBN, 1, Length(ISBN) - 2); if (Length(Numero) = 11) and (Pos(DigitoVerificador, 0123456789X) > 0) then begin if (DigitoVerificador = X) then SomaValores := 10 else Val(DigitoVerificador, SomaValores, Erro); Contador := 1; for i := 1 to 12 do

Concluso
Esta funo do exemplo no exige a necessidade de se informar os hfens, que podem ser posteriormente adicionados para padronizar o layout da dos cdigos ISBNs exibidos. Outra caracterstica que pode ser incluida a verificao dos trs hifens do cdigo, se eles so ou no adequadamente includos.

Verificar a Taxa de utilizao do CPU

A taxa de utilizao ou processamento do CPU o indicado de quanto de memria e execues de processos so gerados naquele momento, essa dica serve para monitorarmos constantemente essa taxa e identificar possveis falhas de processos ou o alto consumo da execuo de uma aplicao pela memria. Para que possamos ler est taxa precisamos pegar todos os dados que ficam disponveis la nos registros da aplicao (Windows Registry), e sero necessrios tambm os componentes, 2 Buttons, 1 Label e 1 Timer. Primeiro iremos declarar duas variveis globais, sendo elas como do mtodo private neste exemplo, elas serviro para ler os dados dos registros do Windows e outra do tipo boolean para saber se a aplicao ainda est fazendo a verificao da taxa de bytes sendo utilizados ou no.

28

abril 2012

private { Private declarations } iniciado: boolean; reg: TRegistry;

O primeiro boto ter a funo de ler os dados dos bytes que esto sendo utilizados e retornar o valor.

Reg.OpenKey(PerfStats\ StatData, false); Reg.ReadBinaryData(KERNEL\ CPUUsage, TaxaUtilCPU, SizeOf(Integer)); Reg.CloseKey; Label1.Caption := IntToStr(TaxaUtilCPU) + %; end; end;

procedure TForm1. Button1Click(Sender: TObject); var bytes: array[0..1024] of byte; begin Reg := TRegistry.Create; Reg.RootKey := HKEY_DYN_DATA; Reg.OpenKey(PerfStats\ StartStat, false); Reg.ReadBinaryData(KERNEL\ CPUUsage, bytes, Sizeof(bytes)); Reg.CloseKey; iniciado := true; end;

E por ultimo encerramos a consulta e finalizamos a consulta aos dados da taxa de utilizao do CPU.

O Componente Timer, junto com o componente Label fica a funo de ler e exibir constantemente ao usurio os valores que esto armazenados nos registros

procedure TForm1. Button2Click(Sender: TObject); var bytes: array[0..1024] of byte; begin Reg.OpenKey(PerfStats\StopStat, false); Reg.ReadBinaryData(KERNEL\ CPUUsage, bytes, SizeOf(bytes)); Reg.Free; iniciado := false; end;

procedure TForm1. Timer1Timer(Sender: TObject); var TaxaUtilCPU: integer; begin if iniciado then begin

Concluso
O controle da taxa de utilizao dos dados do CPU til para a verificao constante da taxa de utilizao da aplicao, se h sobrecarga em algum momento, se o banco de dados est trabalhando acima da taxa ideal, o que so as principais causas de um Crash na aplicao.

abril 2012

29

Horizontal

Vertical

30

abril 2012

abril 2012

abril 2012

Vous aimerez peut-être aussi