32

EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

Embed Size (px)

Citation preview

Page 1: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio
Page 2: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio
Page 3: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

3

THE CLUBAv. Profº Celso Ferreira da Silva, 190

Jd. Europa - Avaré - SP - CEP 18.707-150Informações: (14) 3732-3689

Suporte: (14) 3733-1588 - Fax: (14) 3732-0987

Internethttp://www.theclub.com.br

Cadastro: [email protected]: [email protected]

Informações: [email protected]

DúvidasCorrespondência ou fax com dúvidas devem

ser enviados ao - THE CLUB, indicando"Suporte".

OpiniãoSe você quer dar a sua opinião sobre o clube

em geral, mande a sua correspondência para aseção "Tire sua dúvida".

ReproduçãoA utilização, reprodução, apropriação,

armazenamento em banco de dados, sobqualquer forma ou meio, de textos, fotos e

outras criações intelectuais em cada publicaçãoda revista “The Club Megazine” são

terminantemente proibidos sem autorizaçãoescrita dos titulares dos direitos autorais.

Impressão e acabamento:HIPERGRAF Indústria Gráfica

Tel.: (14) 3641-1665 - Cep 17340-000Rua Francisca A. Pereira Borges, 436

Barra Bonita - Vila São CaetanoTiragem: 5.000 exemplares

Copyright The Club Megazine 2007

Diretor TécnicoMauro Sant’Anna

ColaboradoresMauro Sant´Anna, Alexandre Tarifa,

Fábio Camara

EDITORIAL

Editorial

Editorial .................................................................................. 03Instalando a versão Trial do Delphi 2007 for Win 32 .............. 04Visual Studio “Orcas” - Primeiras Impressões ....................... 07FreeReportMais uma boa opção de gerador de relatório freeware .......... 10Especificando atividades do negócio:Diagrama de Atividades.......................................................... 16Criando um componente ........................................................ 18Dicas & Truques .................................................................... 23Perguntas & Respostas ......................................................... 28Delphi é marca registrada da Borland International,

as demais marcas citadas são registradaspelos seus respectivos proprietários.

Olá amigo!

Você está recebendo mais uma edição da revista The Club Megazine. Nesta ediçãoestamos trazendo muitas novidades. O nosso consultor técnico Thiago traz umamatéria que mostra como se fazer a instalação do Delphi 2007 for Win32.

O nosso colaborador Alexandre Tarifa, traz uma matéria sobre a sua opinião emrelação ao Visual Studio “Orcas”.

O nosso consultor Claudinei Rodrigues está trazendo duas matérias com assuntosque foram muito solicitados ao suporte técnico. A primeira é sobre geradores derelatório. Ele está trazendo informações sobre mais um gerador freeware, oFreeReport. A outra matéria tem a ver com componentes. Veja como criarcomponentes.

O nosso colaborador Fábio Camara, traz informações interessantes sobrediagramas.

Além disso estamos trazendo a seção de Dicas & Truques, além da seção dePerguntas & Respostas com as ultimas solicitações feita ao suporte técnico.

Tenha uma boa leitura.

Page 4: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

4

Instalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doDelphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32

Delphi

Instalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doInstalando a versão Trial doDelphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32Delphi 2007 for Win 32

Neste artigo abordarei a instalação do Delphi 2007 for Win32. Esta versão é válida por 14 dias onde vocês poderão utilizar eavaliar suas novidades. A instalação é realizada pela internet, ouseja, o arquivo que vocês baixam do site é de aproximadamente 4Mb e o resto do download é realizado durante sua instalação, eurecomendo que utilizem uma boa conexão de banda larga, poissua instalação é um pouco demorada.

Primeiramente ressalto que para efetuar o download doDelphi 2007 é necessário ter um cadastro na CodeGear. Emseguida estarei explicando passo a passo como se deve realizareste cadastro. Entre no site http://www.codegear.com/ e acesse naregião superior o LOG ON, como precisamos criar uma contaclique em “Create a new account”(Criar uma nova conta). Logoem seguida preencha com seus dados cadastrais e clique em“Create Count” (Criar Conta). Após efetuar o cadastro clique nomenu Downloads/ Trial and Free Versions e escolha

“Delphi® - Revolutionize your Windows® development” e emseguida Delphi 2007 Enterprise Trial.

Após seguir estas etapas, a Codegear irá solicitar maisalgumas perguntas, basta selecionar as respostas que melhor oatende e clicar no botão submit, automaticamente será enviadono seu e-mail a ativação para utilizar o Delphi. Efetue o downloaddo arquivo DELPHI07TRIALSETUP.exe clicando no item FTP.Acesse seu e-mail cadastrado na Codegerar e verifique aexistência do seguinte e-mail “Codegear Product Registration”com o seguinte corpo:

Delphi 2007 for Win32 Enterprise TrialSerial Number: (serial recebido no e-mail)CDN Login Name: theclub (digitar seu login)First Name: Thiago (digitar seu First Name)Last Name: Cavalheiro (Digitar seu Last Name)

Copie para um editor de textos qualquer estes dados, quemais tarde servirão para registrar o nosso Delphi.

Lembrando, se não efetuar o cadastro não será possívelinstalar o Delphi 2007, pois é necessário ter este Número Serialdisponibilizado pela Codegear. A instalação do Dephi é muitosimples e fácil. Estarei abordando algumas das principais fasesde sua instalação.

Depois de baixado o arquivo, dê um duplo clique sobre oexecutável e em seguida aparecerá uma janela para escolher alinguagem a ser utilizada e a seguinte tela (Figura 01), que é afase para coletar os arquivos necessários para realizar ainstalação, clique em next.

Figura 01. instalação

Aparecerá a seguinte janela com os termos de licença, leiaatentamente, marque o checkbox e em seguida clique em next.

Page 5: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

5

Figura 02. Termos de Licença.

De acordo com a Figura 03 preencha com o número serialadquirido pela Codegear, em seguida clique em next. A próximafase da instalação indica quais componentes deverão serinstalados. Por padrão instale tudo.(Figura 04)

Figura 03. Número Serial

Figura 04. Componentes

De acordo com a Figura 05, irá pedir para selecionar os tiposde arquivos existentes no computador para serem associados como Delphi 2007. Deixe como padrão todos os arquivos selecionados.

Logo após seguir estes passos o Delphi 2007 entrará na fasede instalação em seguida finalize clicando no botão finish.(Figuras 06)

Figura 05. Associar os arquivos.

Figura 06. Finalizando a Instalação.

Delphi

Page 6: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

6

Depois de finalizado, vá até o menu iniciar e procure peloDelphi 2007 instalado com o seguinte nome “Codegear RADStudio”. Neste momento iremos Registrar o produto com onúmero serial que recebemos da Codegear no e-mail. Clique emNext (Figura 08) e em seguida entre com o Número serial, porpadrão ele já vem preenchido (Figura 09).

Figura 07. Registrar o Produto

Figura 08. Preencher com o número serial.

Preencha com o usuário que utilizou para se registrar no siteda Codegear e sua senha respectivamente. (Figura 09)

Depois de passar por mais algumas janelas finalmenteiremos concluir o processo de registro do Delphi 2007.(Figura 10)

Figura 09. Usuário e Senha

Conclusão

Neste artigo demonstrei como que se faz para adquirir aversão Trial Delphi 2007 for Win32 deste o cadastro no site daCodegear até sua instalação. Como mencionei no início desteartigo, vocês terão 14 dias para avaliar e testar o Delphi. Muitosdizem que é o melhor Delphi já lançado, outros já dizem ocontrário, que este Delphi é apenas uma tentiva desesperadorada Codegear de conquistar Mercado. Um abraço a todos eestamos abertos para ouvir opiniões a respeito do novo produto daCodegear, O Delphi 2007 For Win32.

Figura 10. Registro Completo.

Sobre o autorThiago Cavalheiro Montebugnoli é tecnólogo,

formado pela Faculdade de Tecnologia de Botucatu –SP (FATEC) e consultor técnico do The Club.

Delphi

Page 7: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

7

Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Primeiras ImpressõesPrimeiras ImpressõesPrimeiras ImpressõesPrimeiras ImpressõesPrimeiras Impressões

Visual Studio

Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Visual Studio “Orcas”Primeiras ImpressõesPrimeiras ImpressõesPrimeiras ImpressõesPrimeiras ImpressõesPrimeiras Impressões

A Microsoft anunciou e disponibilizou recentemente para acomunidade a versão beta 1 do Visual Studio “Orcas”acompanhado da versão 3.5 do Framework .Net. Esta linha deevolução já estava programada principalmente devido aolançamento do Windows Vista, pois ainda não existia nenhumaferramenta da Microsoft para desenvolvimento na sua novaplataforma. Além desta razão, existe também a evolução naturalda plataforma .Net.

Todas as versões do Visual Studio “Orcas” já estãodisponibilizados em versão beta 1, são elas:

· Ferramentas Express – versões gratuitas do produto, tendoversões separadas por linguagem/especialização, exemplo: VisualBasic Express, C# Express, Visual Web Developer, J# Express eC++ Express.

· Visual Studio Professional – versão mais utilizada nomercado para desenvolvimento comercial.

· Visual Studio Team Edition – versões do Visual StudioTeam System.

Faça o download das versões Express gratuitamente no link:http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx oupara quem é assinante MSDN Subscribe, faça download daversão Professional.

Recursos em destaque

Como sempre o grande objetivo de uma nova ferramenta, éde alguma forma melhorar a produtividade e qualidade do quevem sendo desenvolvido, e mais uma vez a Microsoft investiubastante neste sentido.

WPF e Silverlight (WPF/e)

O Windows Presentation Foundation e o Silverlight são evoluções

de interface baseado em XAML e Windows Vista, nesta versãoteremos suporte para desenvolver esses tipos de aplicações.

WCF

O Windows Comunication Foundation é a nova plataforma deserviços da Microsoft e teremos também suporte a este tipo dedesenvolvimento.

Asp.Net Ajax

Recurso de scripts poderosos que melhoram a usabilidade deaplicações Web, passam a ser nativos no Visual Studio, nãodependendo mais de instalações a parte.

Modelagem E/R – Entidade / relacional

A muitos anos a comunidade de desenvolvedores pediam aMicrosoft algum posicionamento sobre este assunto. Já surgiramdiversas soluções de terceiros, como por exemplo o nHibernate,mas até então nada nativo no produto. Temos então umabiblioteca chamada Linq onde temos estes recursos dentro doDLinq além de ferramenta gráfica para modelagem.

Aplicações Office 2007

Desenvolvimento baseado no Office 2007 através do VSTO(Visual Studio Tools for Office) onde podemos desfrutar de todopoder de usabilidade e conhecimento do usuário em nossasaplicações.

Suporte

O Visual Studio “Orcas” oferece suporte a 3 versões de

por Alexandre Tarifa

Page 8: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

8

framework: Framework 2.0, Framework 3.0 e Framework 3.5,sendo assim para aplicações de legado não teremos mais anecessidade de instalar diversas versões de Visual Studio.Infelizmente isso não serve para aplicações criadas sobre oFramework 1.1 e 1.1.

Linguagens

Com a chegada do Framework 3.5, as linguagens deprogramação chegam com novidades para suporte a essesrecursos. O Visual Basic chega com grande estilo na versão 9.0 eo C# chega na versão 3.0.

As linguagens também apostaram na simplicidade e algunsrecursos e sintaxes ganham “atalhos” para facilitar ainda mais oentendimento de código.

ADO.Net

O ADO.Net chega na sua versão 3.0 com inúmeros novos

recursos e principalmente o refinamento dos recursos jáexistentes. Destacando o ADO.Net Entity Framework quepermite a programação entre entidades de banco de dados enegócio.

Outro recurso fantástico está no editor de DataSet tipado,onde podemos através de uma DataSet tipado gerar as classes denegócio e entidade, ou seja, suporta o desenvolvimento ncamadas.

Prática

Vamos conhecer na prática esta nova versão do VisualStudio:

Abra o Visual Studio “Orcas” e crie um projeto clicando emFile > New > Project. Selecione um projeto do tipo Visual Basic /Windows e o template Console Application e clique em OK. (verfigura acima)

Visual Studio

Page 9: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

Vamos criar uma coleção de números e utilizando o Linqvamos criar uma query que recupera valores dentro destacoleção.

Dentro da sub Main entre com o seguinte código:

Sub Main() Dim numbers() =

{5, 4, 1, 3, 9, 8, 6, 7, 2, 0} Dim lowNums = From n In numbers _ Where n < 5 _ Select n Console.WriteLine(“Numbers < 5:”) For Each x In lowNums Console.WriteLine(x) Next Console.ReadLine() End Sub

Note que fazemos uma consulta na coleção: From n Innumbers Where n < 5 e isso nos resulta em todos os númeroscontidos na coleção menor que 5.

Conclusão

Este artigo mostrou apenas uma pequena introdução sobre opoder da nova versão do Visual Studio, teremos futuramentediversos artigos que demonstrará grande parte destes recursosauxiliando ainda mais os desenvolvedores nos seus projetos.

Sobre o autorAlexandre Tarifa, escreve artigos para a revista MSDNMagazine e para os sites Linha de Código, MSDN Brasil eEnterpriseguys.

Visual Studio

Page 10: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

10

FreeReportFreeReportFreeReportFreeReportFreeReportMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freeware

FreeReportFreeReportFreeReportFreeReportFreeReportMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freewareMais uma boa opção de gerador de relatório freeware

Por Claudinei Rodrigues – [email protected]

Quando se inicia um novo projeto é muito comum oprogramador se perguntar sobre qual gerador de relatório ele vaiutilizar. Aqui em nosso suporte técnico somos questionados sobreisso quase que diariamente. Os clientes sempre querem saberqual é o gerador mais fácil, qual tem mais recursos, qual é o maisprodutivo, qual está sendo mais utilizado. Existem inúmerosgeradores de relatórios no mercado, como por exemplo,ReportBuilder, Cristal Reports, Fortes Report entreoutros. Além é claro do QuickReport que acompanhou oDelphi até a versão 7 e depois disso o Rave Reports. Oproblema é que muitos não se adaptaram ao RaveReports e o QuickReport não acompanhou mais o Delphiapós o a versão 7. No mês de Março de 2006 o nossocolaborador Marcos César trouxe uma matéria sobreoutro gerador freeware, o Fortes Reports. Neste artigoestou trazendo mais uma opção de gerador de relatórios,o FreeReport, e vou utilizá-lo no Delphi 7 que porenquanto é a versão mais utilizada por nossos clientes.

Download e instalação

O primeiro passo será fazer o download docomponente. Para isto vamos acessar o site da FastReports Inc., diretamente no link de download que éhttp://www.fast-report.com/en/download/free-report-download.html. Neste link você terá acesso a váriasversões do FreeReport. Nesta matéria eu estou fazendo odownload da versão 2.34 que foi liberada no dia 06/04/2006. Esta versão é compatível com o Delphi 4/5/6/7 e o2005.

O nome do arquivo que você vai baixar é o fr234.zip.

Descompacte este arquivo em um diretório de sua escolha. Nomeu caso eu descompactei no seguinte path: D:\Componentes Delphi7\fr234.

Estando com o Delphi 7 aberto vá até ao menu e clique emTools | Environment Options, mostrado na figura 1.

Figura 01: Tela de opções do ambiente

Sobre o autorClaudinei Rodrigues,Consultor Técnico do The [email protected]

Delphi

Page 11: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

11

Clique na aba Library e depois clique no botão ... em Library pathe inclua o caminho onde você descompactou o arquivo, como estásendo mostrado na figura 2.

Figura 02: Incluindo o path de localização do componente

Relembrando que este caminho é o exemplo que eu utilizei,você deverá incluir o caminho de sua escolha, ou melhor, ocaminho que você descompactou o arquivo fr234.zip.

Feito isto, vamos instalar o nosso componente. Volte ao menudo Delphi em File | Open e localize no diretório onde vocêdescompactou, o componente, e selecione o arquivoFREEREP7.dpk.

Ao abrir este arquivo você terá acesso a todos os seus fontescomo está sendo mostrado na figura 03.

Figura 3: Instando pacotes

Clique no botão Compile e depois no botão Install. Quando eleterminar de instalar uma tela semelhante a mostrada na figura4 lhe será apresentada. Agora vamos criar um exemplo deutilização deste componente.

Figura 4: Componentes instalados

Criando um exemplo

Como primeiro contato com este gerador, vamos criar umexemplo bem simples para facilitar o entendimento. Com o seuDelphi aberto, crie um novo projeto. Depois vá até a abaFreeReport e arraste para o seu formulário dois componentes. Oprimeiro é o componente frReport e o segundo componente é ofrDBDataSet. O componente frReport é responsável pela criaçãodo relatório. Será neste componente que vamos desenhar todo orelatório. Já o componente ftDBDataSet é responsável para fazera ligação entre o componente de acesso a dados com o relatório.Vamos utilizar também um componente ClientDataSet que estána palheta Data Access. Será através dele que iremos acessarum arquivo com dados para ser utilizado no relatório. Sendoassim as configurações ficarão da seguinte forma:

ClientDataSet1

Propriedade Valor

FileName C:\Arquivos de programas\Arquivoscomuns\Borland Shared\Data\employee.xml

Name CDS

frDBDataSet1

Propriedade Valor

CloseDataSource True

DataSet CDS

OpenDataSource True

frReport

Propriedade Valor

DataSet frDBDataSet1

StoreInDFM True

Delphi

Page 12: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

12

Entendendo as configurações

Agora eu vou explicar para vocês o que é cada propriedadeque alteramos em cada componente. Começando pelo componenteClientDataSet eu fiz o seguinte: Informei na propriedadeFileName o nome de um arquivo XML que vem junto com opróprio Delphi. Para montarmos este exemplo a forma mais fácilfoi utilizando este arquivo, mas você pode ligar a uma base dedados sem nenhum problema. Esta forma que utilizei foi apenaspara simplificar.

No componente frDBDataSet eu alterei as propriedadesCloseDataSource e OpenDataSource. Estas duas propriedadestêm a finalidade de fechar e abrir, respectivamente, o acesso abase de dados. Já a propriedade DataSet tem a finalidade de ligarao componente de acesso a dados.

No componente frReport nós informamos na propriedadeDataSet o nome do componente de ligação frDBDataSet etambém alteramos a propriedade StoreInDFM para True. Estaultima propriedade é muito importante, pois ela dirá que aestrutura do relatório será gravada no arquivo DFM doformulário em que estiver o componente ftReport. Caso contrárioa estrutura do arquivo terá que ser gravada em um arquivoexterno.

Desenhando relatório

Agora faça o seguinte. Dê um duplo clique no componentefrReport1. Fazendo isto você terá acesso a uma tela semelhante a

mostrada na figura 5.

Será aqui que vamos desenhar o nosso relatório. Baseado naimagem você pode ver uma barra de componentes do ladoesquerdo. Este gerador também trabalha com o conceito debandas. Clique no segundo componente. E depois clique na áreado relatório. Assim que você clicar na área do relatório você veráuma tela igual a mostrada na figura 6.

Figura 5:Editor de relatório

Figura 6: Escolhendo o tipo de banda

Delphi

Page 13: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

13

Nesta tela você vai escolher o tipo de banda. Como você podever existem vários tipos. Neste nosso exemplo vamos começarescolhendo pelo tipo Page header, ou seja, um cabeçalho depágina para o nosso relatório. Clique no botão OK.

Agora volte a barra de componentes, e clique sobre o primeirocomponente e depois clique sobre o Page header. Ao fazer istovocê terá um acesso ao editor de texto, uma tela semelhante aomostrado na figura 7.

Este é o componente que mais utilizaremos em nossorelatório. É através dele que colocaremos textos explicativos,acessaremos as informações da base de dados, etc. Sendo assimpreencha este editor de texto da forma que lhe acharconveniente. Neste exemplo eu incluí o texto demonstrado nafigura 7 apenas como demonstração. Feito isto clique em OK.Depois disso, você terá que redimensionar o componente deixandodo tamanho desejado. Mas isto é muito simples, basta clicar como mouse sobre os pontos da borda do componente e arrastar daforma que quiser. Inclua quantos componentes achar necessárioe monte o seu Page header da forma que achar melhor.

Agora vamos ligar a base de dados. Repita a operaçãoanterior onde incluímos uma banda como Page header. Só queagora utilize a opção Master Data. Ao fazer isto você terá acesso àtela que irá solicitar qual a base de dados principal, como estásendo mostrado na figura 8.

Figura 7: Montando o relatório

Figura 8:Selecionando a origemdos dados.

Agora selecione frDBDataSet e clique no botão OK. Agora váaté a barra de componente e clique sobre o primeiro componente earraste-o para a nova banda.

Ao fazer isto você terá acesso novamente ao Text Editor.

Então faça o seguinte: Clique no botão DB Field. Isto farácom que você tenha acesso aos campos do arquivo, como estásendo mostrado na figura 9.

Figura 9: Campos da tabela.

Repita esta última operação para quantos campos você acharnecessário. Neste nosso exemplo eu utilizei apenas 04 campos.

Vamos também incluir uma banda para que seja ocabeçalho, ou seja, onde vamos colocar o nome de cada coluna.

Clique novamente sobre a banda e depois clique sobre odesign do relatório e escolha a opção Master header.

Depois inclua tantos quantos componentes achar necessário.Coloque os nomes das colunas.

Feito isto você terá um relatório semelhante ao mostrado nafigura 10.

Delphi

Page 14: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

14

Na barra de ferramentas que se localiza no topo da janela, oquarto botão é o Preview. Clique sobre ele e veja o resultado dorelatório. Feito isto você terá uma tela semelhante à mostrada nafigura 11.

Uma dica que eu acho interessante neste relatório é quepodemos formatar a exibição do campo salário, pois como vocêpode ver ele apareceu alinhado a esquerda, e nós queremosalinhá-lo a direita e incluir uma máscara nele. Para isto dê umduplo clique sobre ele. Clique sobre o botão Format. Na próximatela escolha Number no primeiro combobox, no segundo escolhaCustom. Na caixa de texto infome R$ ###,##0.00. A sua telaficará semelhante à mostrada na figura 12

Agora volte a barra de ferramentas no topo da janela e cliqueno botão Preview para ver o resultado.

Figura 10: Relatório montado

Figura 11: Relatórioem execução

Conclusão.

Este foi um exemplo bem simples que tem a finalidade demostrar como utilizar este gerador de relatório freeware. Nostestes que fiz o FreeReport se mostrou bem rápido e é mais umaalternativa freeware para os programadores em Delphi. Até apróxima.

Figura 12:Formatandovalor.

Delphi

Page 15: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio
Page 16: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

16

Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Diagrama de AtividadesDiagrama de AtividadesDiagrama de AtividadesDiagrama de AtividadesDiagrama de Atividades

UML

Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Especificando atividades do negócio:Diagrama de AtividadesDiagrama de AtividadesDiagrama de AtividadesDiagrama de AtividadesDiagrama de Atividades

Por Fábio Camara

Apesar de alguns conceituadores considerarem como umaforma especializada de diagrama de estado, o diagrama deatividades na minha leitura, pode perfeitamente ser utilizado nadocumentação de atividades de um negócio.

Para expressar o funcionamento do negócio utilizamos odiagrama de atividades com sua representação à nível de: atores,fluxos de trabalho (Atividades), organização, decisões e objetos donegócio. Dificilmente utilizaremos todos os símbolos disponíveisna UML para os diagramas de atividades. Sinais, estados econstraints raramente são utilizados na representação dasatividades de um negócio.

Veja a notação dos símbolos do diagrama de atividades:

{<=78}

Transição (Junção): Utilizado para direcionar o processo de duas ou mais atividades para uma

única atividade;

Transição (Bifurcação): Utilizado para direcionar o processo de uma única atividade para duas ou

mais atividades;

Objeto: Representa um objeto, produto de uma atividade que alimenta uma outra. Os objetos são

representados geralmente em cima da linha fronteira das raias de natação (Swim lanes).

Nota: A nota é um símbolo que pode ser utilizado em qualquer diagrama da UML para representar

descrições breves de uma situação ou observações daquela parte do diagrama.

Transição de Objeto: É utilizado quando representamos a passagem de objeto de uma

atividade para outra.

Sinais (Enviado): Representa os sinais enviados de uma atividade para outra.

Sinais (Recebido): Representa os sinais recebidos de uma atividade pela outra.

Estados: Representa um estado do processo que aguarda uma interação ou sinal para disparar

mudança de estado ou disparo de uma atividade.

Constrains (Regras): Notas que representam as regras aplicadas em um ponto específico do

processo.

Estado inicial: Indica o inicio das atividades de um processo;

Estado final: Indica o término das atividades de um processo;

Atividade: Indica as atividades que estão sendo executadas naquele processo. O nome das

atividades deve sempre ser expresso no infinitivo;

Transição: Representa a mudança de uma atividade para outra, une uma atividade a outra ou

ao estado inicial e final do processo;

Condição: Direciona o processo dada uma condição do fluxo;

Sobre o autorFabio Camara ([email protected]) é MCP,MCSA, MCAD Charter, MCDBA, MCSE, MCSD.NET e MSFPractitioner – Utiliza MSF em seus projetos há mais de 4 anose sonha com uma ferramenta como esta desde que começou acoordenar projetos de software com grupo de pessoas.

Page 17: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

17

SwinLanes:

As swinlanes (raias de natação), são retângulos verticaisusados para dividir os diagramas de atividades, essas divisõesservem para agrupar atividades relacionadas.

Nos diagramas de atividades que representam o processo deum negócio, devemos utilizar as swinlanes para representar osatores do negócio. Veja no exemplo abaixo a representação dosatores: Cliente e Caixeiro: (ver figura ao lado)

Antes e Depois

Muitas vezes o problema a ser solucionado está baseado naforma como acontecem os processos do negócio, logo entendemosque a solução é inovar os processos em si e não apenasautomatizá-lo.

Nestes casos sugerimos construir dois diagramas deatividades, um que irá representar a solução atual (o “antes”) eum para representar como fica os processos depois daimplantação o sistema (o “depois”).

Conclusão

O dinamismo dos negócios está cada vez mais exigindorespostas rápidas por parte dos desenvolvedores.

Utilizar o diagrama de atividades para elucidar acompreensão do negócio e propor soluções factíveis é um caminhomais produtivo e efetivo, principalmente quando comparado comespecificações baseadas em textos que permitem dúvidas deinterpretação.

Clientes Caixeiro

Iniciar Compras

Coletar Produto

Pagar Compras

RegistrarProduto - Caixa

Finalizar Compra

Receber Pagamento

[Não]Fima da listade compras?

[Sim]

[Sim]

Fima da listade compras?

Seção PérolasSeção PérolasSeção PérolasSeção PérolasSeção PérolasEu? Confuso?Tem como um texto que está em um dbloockup ser copiado para um edit, afim de que o

usuário faça apenas o complemento?Ex. Anel... (....Rod. Elo coração), está confuso? Até mais...*

Anotar para quê?Dias atrás conversei com André sobre um algoritmo para controle de saldos em conta

corrente num sistema financeiro de caixa/bancos que também permitisse lançamentosretroativos. Não anotei nada e, como o tempo passou, gostaria de uma revisão sobre otema. Obrigado.

UML

Page 18: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

18

Criando um componenteCriando um componenteCriando um componenteCriando um componenteCriando um componente

Por Claudinei Rodrigues – [email protected]

Neste artigo eu vou mostrar para vocês como podemosadicionar recursos a um componente do Delphi já existente,mostrando como usar os objetos em nosso próprio componente, oque eles são e etc.

Eu vou utilizar como base uma dúvida de um sócio querecentemente entrou em contato conosco e gostaria de saber comofazer um componente TLabel ficar piscando no formulário. Aforma mais simples seria colocar um componente Timer econtrolar através deste componente a propriedade Visible doLabel.

De acordo com o intervalo de tempo configurado nocomponente Timer nós alteraríamos a propriedade Visible docomponente Label fazendo com ele piscasse no formulário. Mascomo o Delphi é uma linguagem muito poderosa, vamostrabalhar melhor isso. Vamos criar um componente com estacaracterística em especial. Então vamos criar o TLabelPiscante.

Então vamos criar um componente idêntico ao TLabel, mascom a capacidade de piscar. Ou seja, este nosso novo componenteirá mostrar uma mensagem que irá piscar com uma certafreqüência. Para isso, nós vamos precisar controlar o tempo deintervalo. Vamos medir este intervalo em milisegundos,mantendo o padrão do componente TTimer.

Eu vou utilizar o Delphi 7, pois a maioria de nossos clientesainda utiliza esta versão, mas isso não impede que você crie ouutilize este componente em qualquer outra versão posterior.

Abra o seu Delphi 7 e vá até ao menu e selecione a opção File| Close All. Fazendo isso teremos certeza que não existiránenhum arquivo aberto no Delphi.

Agora volte ao menu do Delphi e clique em Component | NewComponent. Assim você terá acesso a uma tela semelhante amostrada na figura 1:

Figura 1: Criando o novo componente

Existem algumas alterações que você deverá fazer. Tomecomo base a figura 1. No campo Ancestor type informe TLabel[StdCtrls], em Class Name você irá informar o nome da nossanova classe que é TLabelPiscante, no campo Palette Page euutilizei o nome THE CLUB, mas você pode colocar o nome quequiser. Este nome será o nome da nova palheta onde seráinstalado o componente. Em Unit file name informe o caminhocompleto e o nome onde será gravado o arquivo.

Depois de efetuada as devidas alterações clique no botão OK.Depois de clicar no botão OK, você terá acesso ao código fontesimilar ao mostrado na listagem 1:

unit LabelPiscante;

interface

uses

Delphi

Page 19: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

19

SysUtils, Classes, Controls, StdCtrls;

type TLabelPiscante = class(TLabel) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end;

procedure Register;

implementation

procedure Register;begin RegisterComponents(‘THE CLUB’,[TLabelPiscante]);end;

end.

Listagem 1: Código fonte inicial do componenteTLabelPiscante.

Agora vamos fazer as implementações necessárias nestecódigo.

Primeiro vamos adicionar os métodos necessários paraconstruir e posteriormente destruir o objeto. Para realizar estatarefa vamos trabalhar com os métodos constructor e destructor.Vamos conhecer melhor estes dois métodos:

Método Constructor

Os objetos que declaramos em um componente não existemem memória até que o objeto seja criado. Um constructor não énada mais que um método que fornece memória ao objeto eaponta-o a esta memória. Ao chamar o método create, oconstrutor nomeia a instância do objeto para uma variável.

Ele serve para que todos os componentes herdem um métododenominado create que se encarrega de criar o componente emmemória. No método create os valores de certos campos docomponente podem ser inicializados, o que podemos chamar devalores padrão ou valor default.

No método create do nosso componente nós vamos criarobjetos adicionais como o controle de intervalo.

Método destructor

Quando nós terminamos de usar um objeto, nós devemosdestruí-lo, ou seja, liberar a memória que ele estava ocupando.Esta operação é feita através do método destroy que todos oscomponentes herdam de TComponent.

Se nós criarmos qualquer objeto adicional, nós tambémdevemos destruí-lo no método destroy.

O Delphi cria e destrói o componente automaticamentequando é necessário, como já mencionei, os métodos create edestroy são herdados do TComponent.

Mas se usarmos algum objeto em nosso componente, o Delphinão o cria e destrói automaticamente. Nós devemos fazer istomanualmente. Podemos fazer isto adicionando o códigonecessário nos métodos create e destroy. É importante lembrarque nós vamos escrever o mesmo código novamente nocomponente, e podem sobrecarregar o código novo.

De uma forma geral isto é feito da seguinte forma:

Na seção public do nosso componente nós vamos declarar osmétodos o create e destroy seguidos pela palavra chave overrride,como está sendo mostrado na listagem 2:

type TLabelPiscante = class(TLabel) private { Private declarations } protected { Protected declarations } public constructor create(AOwner : TComponent);override; destructor destroy; override; published { Published declarations } end;

Listagem 2: Estrutura do componente.

Depois que você declarar os dois métodos acima, nós vamoster que criar a implementação. Vai aqui uma dica bastanteinteressante principalmente para os iniciantes no Delphi.Posicione o cursor sobre a palavra constructor e depois pressione

Delphi

Page 20: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

20

simultaneamente as teclas Ctrl+C.

Ao fazer isto você verá que o Delphi automaticamente irácriar os códigos mostrados na listagem 3.

constructor TLabelPiscante.create(AOwner: TComponent);begin inherited;

end;

destructor TLabelPiscante.destroy;begin

inherited;end;

Listagem 3: Implementação dos métodos

O mais importante é que quando sobrecarregamos umconstrutor, a primeira coisa que deve ser feita é uma ligação aoconstrutor original. Isto está sendo feito através da instruçãoinherited como mostrado na listagem 3. Após essa instrução vocêpode acrescentar o código necessário para criar o objeto. Damesma forma é quando trabalhamos com o desctructor . Osobjetos criados antes devem ser liberados e a última linha deveser uma chamada ao destructor

Implemementando o novo recurso

Agora nós vamos implementar o recurso para que o nossocomponente fique piscando na tela. Eu disse que quando o eventoacontece o método será executado. Sendo assim ele mostrará eocultará a mensagem dando uma sensação de “pisca-pisca”. Asolução é mais simples do que parece.

Agora vamos criar a nossa propriedade onde controlaremos otempo. Vá a seção published e inclua a seguinte instrução:

property Tempo : integer read FTempo write SetTempodefault 500;

Novamente posicione o cursor sobre o comando property epressione simultaneamente as teclas Ctrl + C.

Feito isto o código de implementação será criado no final daunit semelhante ao mostrado na listagem 4:

procedure TLabelPiscante.SetTempo(const Value: integer);begin FTempo := Value;end;

Listagem 4: Definindo a propriedade

Note também que a seção private também foi alterada,ficando semelhante a mostrada na listagem 5.

private FTimer : TTimer; FTempo: integer; procedure SetTempo(const Value: integer);

Listagem 5: Novos valores da seção Private.

Agora, com a estrutura pronta, podemos implementar orestante do código para finalizar o nosso novo componente.Primeiro vamos trabalhar com método constructor, veja alistagem 6.

constructor TLabelPiscante.create(AOwner:TComponent);begin inherited Create(AOwner);

//Chama o constructor original FTimer := TTimer.Create(Self);

//Criamos o timer FTempo := 500;

//Define a velocidade padrão FTimer.Enabled := True;

//Ativa o timer FTimer.OnTimer := mostra;

//Pega o método mostra FTimer.Interval := FTempo;

//Pega o intervaloend;

Listagem 6: Implementação do método create

Na listagem 6 na primeira linha nós chamamos o métodocreate da classe que herdamos o componente. Depois disso, nóscriamos um objeto TTimer para que possamos controlar o tempode intervalo que o nosso componente vai piscar. Como você podever na listagem 5 eu defini uma variável do tipo FTimer na seçãoPrivate. Definimos também um tempo padrão que neste caso éem milisegundos. Ativamos a contagem de tempo, atribuímos anossa função que vai controlar a exibição do componente ao

Delphi

Page 21: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

21

evento OnTimer e também controlamos o tempo de intervalo.

Na listagem 7, você pode ver o código que irá controlar aexibição do componente se o timer estiver ativado.

procedure TLabelPiscante.mostra(Sender : TObject);begin //Mostra e oculta a mensagem se o timerestiver ativado if FTimer.Enabled then Visible := not(Visible);end;

Listagem 7: Controlando a visibilidade

Na listagem 8 temos a rotina que irá controlar aconfiguração de tempo do componente. Se o valor introduzido napropriedade Tempo for nulo, a mensagem deverá permanecerfixa em tela. Isto é possível ativando o componente quando forintroduzido o valor de tempo na propriedade do Object Inspector.Deste modo, se for informado 0 como valor, ele simplesmenteserá invalidado e ele mudará o valor da propriedade Visível paraTrue. Se o valor informado for diferente de zero, o timer seráhabilitado e conseqüente a procedure mostra.

procedure TLabelPiscante.SetTempo(const Value: integer);begin if FTempo <> Value then // Verifica se o // valor introduzido é diferente // do padrão begin if Value < 0 then FTempo := 0; FTempo := Value; //Aceita o valor if FTempo = 0 then FTimer.Enabled := False else FTimer.Enabled := True; //Se FTempo for igual a 0 // a mensagem deve estar sempre visível FTimer.Interval := FTempo; Visible := True; end;end;

Listagem 8: Controlando o componente.

Agora o nosso componente já está pronto. Veja na listagem 9

todo o código fonte do componente.

unit LabelPiscante;

interface

uses SysUtils, Classes, Controls, StdCtrls,ExtCtrls;

type TLabelPiscante = class(TLabel) private FTempo: integer; FTimer : TTimer; procedure SetTempo(const Value: integer); { Private declarations } protected { Protected declarations } procedure mostra(Sender: TObject); public constructor create(AOwner :

TComponent); override; destructor destroy; override; published { Published declarations } property Tempo : integer read

FTempo write SetTempo default 500; end;

procedure Register;

implementation

procedure Register;begin RegisterComponents(‘THE CLUB’,[TLabelPiscante]);end;

{ TLabelPiscante }

constructor TLabelPiscante.create(AOwner: TComponent);begin inherited Create(AOwner);

//Chama o constructor original FTimer := TTimer.Create(Self);

//Criamos o timer FTempo := 400; //Define a velocidade padrão

Delphi

Page 22: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

22

FTimer.Enabled := True;//Ativa o timer/

FTimer.OnTimer := mostra;//Pega o método pisca

FTimer.Interval := FTempo;//Pega o intervalo

end;

destructor TLabelPiscante.destroy;begin FTimer.Free;

//Liber o timer} inherited destroy;

//Chama o destructor original

end;

procedure TLabelPiscante.SetTempo(const Value: integer);

begin if FTempo <> Value then // Verifica se ovalor introduzido é diferente do padrão begin if Value < 0 then FTempo := 0; FTempo := Value; //Aceita o valor if FTempo = 0 then FTimer.Enabled := False else FTimer.Enabled := True; //Se FTempo for igual a 0 a

// menssagem deve estar sempre visivel FTimer.Interval := FTempo; Visible := True; end;

end;

procedure TLabelPiscante.mostra(Sender : TObject);begin //Mostra e oculta a mensagem se o timerestiver ativado if FTimer.Enabled then Visible := not(Visible);end;

end.

Instalando o componente no Delphi

Agora que o nosso componente está pronto vamos instalá-lo.Acesse no menu do Delphi a opção Component / Install Compo-nent. Na janela que será aberta, selecione a aba Into newpackage.

Na caixa de texto Unit file name indique a path com o nomeda unit do nosso componente e na caixa de texto package filename indique a path e o nome do arquivo de pacote (.dpk ) queserá criado pelo Delphi. Neste exemplo eu coloquei o nome do dpkcomo pk_LabelPiscante. Feito isto você terá uma tela semelhantea mostrada na figura 2.

Figura 2: Instalando o componente

Agora clique em OK. O componente será compilado einstalado corretamente no Delphi, ficando visível na aba TheClub. Depois de instalado você verá que foi criada a aba The Clubcom o nosso novo componente. Basta que agora você crie umanova aplicação e utilize o nosso novo componente. No final destamatéria você tem o link para download do nosso novocomponente.

Conclusão

Este foi um exemplo bem simples que mostrou como podemosimplementar novas funcionalidades a componentes já existentesno Delphi. Recursos como estes podem nos ajudar muito emnosso dia a dia. Obrigado e até a próxima.

Download: http://www.theclub.com.br/revista/download/LabelPiscante.zip

Sobre o autorClaudinei Rodrigues,Consultor Técnico do The [email protected]

Delphi

Page 23: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

23

Dicas & Truques

Abreviando nomes

A rotina a seguir mostra como você pode abreviar nomes deforma simples e rápida. Vamos montar um exemplo bem simples.Com o seu Delphi aberto, crie um novo projeto. Inclua no seuform um componete TEdit e um componente TButton. Inclua ocódigo abaixo no evento OnClick do componente TButton

procedure TForm1.Button1Click(Sender: TObject);begin ShowMessage(AbreviaNome(Edit1.Text));end;

Agora inclua na sua unit a rotina que faz a abreviação denomes.

function AbreviaNome(Nome: String): String;var Nomes: array[1..20] of string; i, TotalNomes: Integer;begin Nome := Trim(Nome); Result := Nome; {Insere um espaço para garantir que

todas as letras sejam testadas} Nome := Nome + #32;

{Pega a posição do primeiro espaço} i := Pos(#32, Nome); if i > 0 then begin TotalNomes := 0; {Separa todos os nomes} while i > 0 do begin Inc(TotalNomes); Nomes[TotalNomes] :=

Copy(Nome, 1, i - 1); Delete(Nome, 1, i); i := Pos(#32, Nome); end; if TotalNomes > 2 then begin {Abreviar a partir do segundo

nome, exceto o último.} for i := 2 to TotalNomes - 1 do begin {Contém mais de 3 letras?

(ignorar de, da, das, do, dos, etc.)}

if Length(Nomes[i]) > 3 then {Pega apenas a primeira

letra do nome e coloca um ponto após.}

Page 24: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

24

Nomes[i] :=Nomes[i][1] + ‘.’;

end; Result := ‘’; for i := 1 to TotalNomes do Result := Result +

Trim(Nomes[i]) + #32; Result := Trim(Result); end; end;end;

Agora pressione a tecla F9 para rodar o programa. Digite oseu nome completo no componente TEdit e clique no botão. Vocêreceberá uma mensagem mostrando o nome abreviado.

Criando arquivos DBF com índices compostos

Quem trabalha com arquivos DBF’s já encontrou problemaspara criar índices compostos, ou seja, um índice que tenha maisde um campo, em tempo de execução.

Isto ocorre devido a existência de um parâmetro nãodocumentado, necessário para arquivos DBF’s chamadoixExpression que informa ao Delphi que se trata de um índicecom mais de um campo. Como alguns programadores aindatrabalham com DBF’s é interessante solucionar este problemada melhor forma possível.

Assim a criação do índice fica para logo depois da criação databela, como mostra o segmento de código abaixo.

uses SysUtils, WinTypes, WinProcs, Messages,Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, DB, DBTables;

procedure TForm1.Button1Click(Sender: TObject);var Table1 : TTable;begin { Criar arquivos }Table1 := TTable.create(Application); { Cria arquivo }with Table1 do begin Active := False; DatabaseName := ‘C:\’;

TableName := ‘teste’; TableType := ttdBASE; with FieldDefs do begin Clear; Add(‘Name1’, ftString, 20, False); Add(‘Name2’, ftString, 20, False); Add(‘Name3’, ftString, 20, False); Add(‘Name4’, ftString, 20, False); end; CreateTable; AddIndex(‘Indice1’, ‘Name1 + Name2’,

[ixExpression]); AddIndex(‘Indice2’, ‘Name2 + Name3’,

[ixExpression]); AddIndex(‘Indice3’, ‘Name3 + Name4’,

[ixExpression]); end;end;

Na prática, criar os índices com AddIndex() logo apósCreateTable, não vai influenciar em nada o seu programa.

Incluindo um componente ProgressBar em umStatusBar

Coloque um componente StatusBar no seu formulário.Adicione dois ítens a propriedade Panels do seu StatusBar.Ajuste as propriedades do primeiro painel conforme abaixo:

Style = psOwnerDrawWidth = 150

Coloque uma ProgressBar no seu formulário e mude suapropriedadeVisible para false. No evento OnDrawPanel daStatusBar digite o código abaixo:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);begin { Se for o primeiro painel... } if Panel.Index = 0 then begin { Ajusta a tamanho da ProgressBar

de acordo com o tamanho do painel } ProgressBar1.Width := Rect.Right -

Rect.Left +1; ProgressBar1.Height := Rect.Bottom -

Dicas & Truques

Page 25: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

25

Rect.Top +1; { Pinta a ProgressBar no DC (device-

context) da StatusBar } ProgressBar1.PaintTo(StatusBar.Canvas.Handle,

Rect.Left, Rect.Top); end;end;

Coloque um componente Button no seu formulário. Inclua noevento OnClick do Button o código abaixo:

procedure TForm1.Button1Click(Sender: TObject);var I: integer;begin for I := ProgressBar1.Min toProgressBar1.Max do begin { Atualiza a posição da ProgressBar } ProgressBar1.Position := I; { Repinta a StatusBar para forçar a

atualização visual } StatusBar1.Repaint; { Aguarda 50 milisegundos } Sleep(50); end; { Aguarde 500 milisegundos } Sleep(500); { Reseta (zera) a ProgressBar } ProgressBar1.Position :=

ProgressBar1.Min; { Repinta a StatusBar para forçar a

atualização visual } StatusBar1.Repaint;end;

Execute o projeto e clique no botão para ver o resultado.

Como mover um componente em tempo deexecução.

Para montar este exemplo vamos incluir um componenteButton. No código a seguir, todos os eventos estão documentados,então vai ficar bem mais fácil para você entender.

Para testar este exemplo mantenha a tecla CTRLpressionada clique com o mouse sobre o componente Button earraste-o para qualquer lugar do form.

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants,Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm) Button1: TButton; procedure Button1MouseDown

(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Button1MouseMove(Sender:

TObject; Shift: TShiftState; X, Y: Integer); procedure Button1MouseUp(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } MouseDownSpot : TPoint; Capturing : bool; end;

var Form1: TForm1;

implementation

{$R *.dfm}

// Evento OnMouseDown do botãoprocedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if ssCtrl in Shift then begin SetCapture(Button1.Handle); Capturing := true; MouseDownSpot.X := x; MouseDownSpot.Y := Y; end;end;

Dicas & Truques

Page 26: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

26

// Evento OnMouseMove do botãoprocedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if Capturing then begin Button1.Left:= Button1.Left-

(MouseDownSpot.x-x); Button1.Top:= Button1.Top -

(MouseDownSpot.y-y); end;end;

// Evento OnMouseUp do botãoprocedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if Capturing then begin ReleaseCapture; Capturing := false; Button1.Left := Button1.Left -

(MouseDownSpot.x -x); Button1.Top := Button1.Top -(MouseDownSpot.y - y); end;end;

Exemplos de pesquisas com instruções SQL

Formato 01 - Pesquisa igual, maior, menor, etc

procedure TForm1.BitBtn1Click(Sender: TObject);begin // Fecha o componente Query Query1.Close; // Limpa a propriedade SQL Query1.Sql.Clear; // Nome dos campos Query1.Sql.Add(‘Select Teste1.Codigo,

Teste1.Nome’); // Nome do banco de dados Query1.Sql.Add(‘From Teste1 ‘); // Condições do Filtro Query1.Sql.Add(‘Where ‘); // :Codigo1 e :Codigo2 são as variáveis que

// receberão os parâmetros. // O nome destas variáveis não importam, // pode ser usado qualquer nome. Query1.Sql.Add(‘(Teste1.Codigo >= :Codigo1)

and’); Query1.Sql.Add(‘(Teste1.Codigo <=

:Codigo2)’); // Passagem do parâmetro para a variável // criada acima Query1.Params[0].AsString := Edit1.Text; Query1.Params[1].AsString := Edit2.Text; // Abre o componente Query Query1.Open;end;

Formato 02 - Pesquisa por parte de uma string

procedure TForm1.BitBtn1Click(Sender: TObject);begin // Fecha o componente Query Query1.Close; // Limpa a propriedade SQL Query1.Sql.Clear; // Nome dos campos Query1.Sql.Add(‘Select Teste1.Codigo,

Teste1.Nome’); // Nome do banco de dados Query1.Sql.Add(‘From Teste1 ‘); // Condições do Filtro Query1.Sql.Add(‘Where ‘); // :Nome1 é a variável que receberá o // parâmetro. // O nome desta variável não importa, pode // ser usado qualquer nome. Query1.Sql.Add(‘(Teste1.Nome like :

Nome1) ‘); // Passagem do parâmetro para a variável // criada acima Query1.Params[0].AsString :=

‘%’+Edit1.Text+’%’; // Abre o componente Query Query1.Open;end;

Formato 03 - Filtro por um campo string e uma data vazia

procedure TForm1.BitBtn1Click(Sender: TObject);begin

Dicas & Truques

Page 27: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

27

// Fecha o componente Query Query1.Close; // Limpa a propriedade SQL Query1.Sql.Clear; // Nome dos campos Query1.Sql.Add(‘Select Teste1.Codigo,

Teste1.Nome’); // Nome do banco de dados Query1.Sql.Add(‘From Teste1 ‘); // Condições do Filtro Query1.Sql.Add(‘Where ‘); // :Var1 é a variável que receberá o // parâmetro. // O nome desta variável não importa, pode // ser usado qualquer nome. Query1.Sql.Add(‘(Teste1.OrdemServico =

:Var1) and ‘); // Aqui está sendo informado que o campo // data está vazio Query1.Sql.Add(‘(Teste1.DataServico is

Null) ‘);

// Passagem do parâmetro para a variável // criada acima Query1.Params[0].AsString :=

MaskEdit5.Text; // Abre o componente Query Query1.Open;end;

Realizar uma pesquisa incremental no Editor deCódigo

Este é um recurso muito interessante e simples de se utilizar.Com o editor de código aberto pressione simultaneamente asteclas CTRL + E.

Feito isto basta digitar a informação que deseja procurar. Atecla Backspace remove o último caracter digitado e move paraúltima informação encontrada.

A tecla F3 repete a pesquisa. Para encerrar a pesquisa bastapressionar a teclar Escape.

Dicas & Truques

Page 28: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

28

Perguntas & Respostas

Pergunta: Estou precisando de um help com o BDE. Estoutendo um problema somente em uma máquina que utiliza oWindows XP Professional, no qual aparece o seguinte erro:

“Exception EDatabaseError in module vendas.exe at00049542

An error occurred while attempting to initialize the BorlandDatabase Engine ( error $251E ) “

Já tentei aumentar o Sharedmemsize, colocar o usuário comoAdministrador, mas nada disso funcionou. Existem na empresa6 máquinas com o Windows XP e com o BDE, antivírus, Firewalle funcionam normalmente.

Resposta: Um problema que já foi diagnosticado foi o deforçar o programa a rodar em uma compatibilidade diferente aversão do Windows que você está usando. Para fazer averificação e tentar resolver o problema faça o seguinte. Cliquecom o botão direito sobre o executável e vá em propriedades. Empropriedades clique na aba Compatibilidade. No quadro Modo decompatibilidade verifique se o item Executar este programa emmodo de compatibilidade está marcado. Se estiver desmarque erode novamente o programa. Provavelmente isto resolva o seuproblema.

Dúvida enviada por Guido Larsen, Araucaria - PR

Pergunta: Estou utilizando a ferramenta IBExpert ealguns banco de dados aparecem com Dialect 1 e outros com oDialect 3. Como faço para passar para Dialect 3 o meu banco de

dados e qual a vantagem?

Resposta: No Firebird existe uma ferramenta chamadaGfix que permite mudar o dialeto do banco de dados. Suautilização é simples. Entre no prompt de comando e dê o seguintecomando:

C:\Arquivos de programas\Firebird\Firebird_1_5\bin>gfix-sql_dialect 3 D:\Thiago\DBTESTE3.GDB -user sysdba -password masterkey

Está alterando de dialeto 1 para o 3. As explicações sobre osdialetos são os seguintes:

DIALETO 1Constantes alfa-numéricas podem ser delimitadas por aspassimples e duplas. O dialeto 1 não reconhece identificadoresdelimitados. O tipo DATE não está disponível, mas é substituídopelo tipo TIMESTAMP, que contém informações sobre data ehora. Quando um banco de dados versão 5 é gravado/restauradona versão 6, os campos DATE são automaticamente atualizadospara o tipo TIMESTAMP. Os tipos DECIMAL e NUMERIC comprecisão maior que 9 são gravados como ponto flutuante.

DIALETO 3As seguintes características são específicas do DIALETO 3, e

são incompatíveis com o dialeto 1 e todos os BDs e clientesantigos:

Constantes alfa-numéricas devem ser delimitadas por aspassimples (apóstrofre). Aspas duplas (“) são usadas somente em

Page 29: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

29

Perguntas & Respostas

identificadores delimitados. O tipo de dado DATE armazenasomente a DATA. Dois novos tipos de dados estão disponíveis :

TIME que armazena somente a informação de HORA, eTIMESTAMP que armazena ambos DATA e HORA. O tipoTIMESTAMP substitui a funcionalidade do tipo DATE dasversões anteriores do IB. O Dialeto 3 também inclui os operadoresfuncionais CURRENT_DATE, CURRENT_TIME, eCURRENT_TIMESTAMP. Tipos DECIMAL e NUMERIC comprecisão maior que 9 são gravados utilizando inteiros de 64 bitsse forem criados no dialeto 3. Note que todas os campos desse tipocontinuam sendo armazenados como float se o BD foi trazido dealguma versão anterior do IB.

Dúvida enviada por João Francisco, Barretos - SP

Pergunta: Tenho o seguinte procedimento, que substitui oTab pelo Enter:

procedure ProcessaMsg(var Msg: TMsg; var Handled: Boolean);begin if not ((Screen.ActiveControl is

TCustomMemo) or(Screen.ActiveForm.ClassName =‘TMessageForm’)) then

if Msg.message = WM_KEYDOWN then if (Msg.wParam = VK_RETURN ) then begin Msg.wParam := VK_CLEAR; Keybd_event(VK_TAB,0,0,0); end;end;

Gostaria que nesse mesmo procedimento, verificar se o Ctrl +P estão sendo pressionados. Como posso implementar nestarotina este recurso se o único parâmetro que tenho é TMSG paraidentificação de teclas pressionadas ?

Resposta: Você pode obter este tipo de recurso fazendo otratamento no evento OnShortCut do componenteApplicationEvents. Veja a seguir a instrução que você podeincluir neste evento. Um outro detalhe é que você deve declarar aunit Menus.

Veja abaixo um exemplo que trata as teclas Shift F2

implementationuses Menus;

{$R *.dfm}

procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);var ShortCut: TShortCut; ShiftState: TShiftState;begin ShiftState := KeyDataToShiftState

(Msg.KeyData); ShortCut := Menus.ShortCut

(Msg.CharCode, ShiftState); if TextToShortCut(‘Shift+F2’) = ShortCutthen ShowMessage

(‘Pressionou as teclas Shift+F2’);end;

Dúvida enviada por Domingos, Porto Alegre - RS

Pergunta: Existe alguma maneira de retornar todos osusuários que estejam ocupando um determinado arquivoparadox?

Resposta: Uma rotina ligada diretamente a um arquivoParadox, não existe. Mas temos uma rotina que retorna osusuários ligados ao BDE que deve resolver o seu problema. Vejaabaixo:

procedure TForm1.Button1Click(Sender: TObject);beginGetNetUsers(Memo1.Lines);end;procedure GetNetUsers(Strings: TStrings);var hCur: hDBICur; rslt: DBIResult; User: USERDesc;

begin Check(DbiOpenUserList(hCur)); repeat rslt := DbiGetNextRecord(hCur,

dbiNOLOCK, @User, nil); if rslt = DBIERR_NONE then Strings.Add(User.szUserName) else if rslt <> DBIERR_EOF then

Page 30: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio

30

Perguntas & Respostas

Check(rslt); until rslt <> DBIERR_NONE;end;

Dúvida enviada por Progestor Informática, Três Coroas - RS

Pergunta: Como Incluir uma lista no DBGrid?

Resposta: O componente DBGrid provavelmente é um doscomponentes mais utilizados e mais úteis dentro de um projeto.Vamos ver como podemos incluir uma lista drop down em umacoluna do DBGrid. Este recurso é bem interessante, vamos vercomo ele funciona.

Chame o seu Delphi, caso ele já esteja ativo crie uma novaaplicação. Agora que você tem um novo form faça o seguinte:

1. Vá até a palheta Data Controls e clique sobre o componenteDBGrid e arraste-o para o seu form.

2. Vá até a palheta Data Access e clique sobre o componenteClientDataSet e arraste-o para o seu form.

3. Na mesma palheta Data Access clique sobre o componenteDataSource e arraste-o para seu form.

4. Clique sobre o componente DBGrid, vá até a propriedadeDataSource e informe o nome do componente DataSource.

5. Clique sobre o componente DataSource, vá até apropriedade DataSet e informe o nome do componente Table.

6. Clique sobre o componente ClientDataSet, vá até apropriedade FileName e selecione o arquivo C:\Arquivos deprogramas\Arquivos comuns\BorlandShared\Data\employee.xml.

Depois de realizar estes passos altere a propriedade Active docomponente do ClientDataSet para True. Fazendo isto você teráum formulário igual ao mostrado na figura 1.

Agora você deve dar um duplo clique no componente DBGride adicionar as colunas ele.

Clique sobre a coluna LastName no editor de colunas doDBGrid. Vá até ao Object na propriedade PickList e incluaalgumas informações como mostrada na figura 2.

Agora clique no botão OK e compile o projeto. Quando a

aplicação estiver rodando dê um duplo clique sobre a colunaLastName e você terá acesso a um combobox com as informaçõesdigitadas na propriedade PickList.

Figura 1: Formulário de exemplo.

Figura 2:

Pergunta: Estive usando o Delphi for PHP e, após umtempo, passou a pedir um SerialNumber e o AuthorizationKey.Quando abro o Delphi for PHP, já aparece o serial e oauthorization e, ao clicar em avançar, me retorna o seguinteerro: “Entered Serial Number is already registered. Please enter a non-registered serial number to continue.” Seria possível vocês me ajudarem com isso, mandando umnúmero de série válido? Tentei procurar na net, mas ñ conseguinenhum serial e fazendo um cadastro novo, só recebo oreg815.txt.

Resposta: Segundo a página da CodeGear este produto éválido por apenas 14 dias. Passado este período você deve comprá-lo. Para maiores informações sobre como adquirir veja emwww.borlandshop.com.br.

Dúvida enviada por Lucas – HORIZONTINA, RS

Page 31: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio
Page 32: EDITORIAL - The Club · Copie para um editor de textos qualquer estes dados, que ... SP (FATEC) e consultor técnico do The Club. Delphi. 7 Visual Studio “Orcas” ... negócio