Escolar Documentos
Profissional Documentos
Cultura Documentos
abril 2011
ndice
04
DataSnap XE
05
Banco de Dados
Delphi
Trabalhando com SQL Server 2008
Express Edition
Autor:Thiago Cavalheiro
Montebugnoli
Banco de Dados
Delphi
Editorial
18
24
10
Autor:Luciano Pimenta
Dicas
- Dicas Delphi
29
30
Legenda
Iniciante
Intermedirio
Avanado
abril 2011
03
Bem-vindo
Internet
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
www.twitter.com/theclubbr
Copyright The Club Megazine 2009
Diretor Tcnico
Marcos Csar Silva
Diagramao e Arte
Vitor M. Rodrigues
Reviso
Tassiane Fileto
Colunistas
Antonio Spitaleri Neto
Bruno Alcars
Eduardo Massud
Felipe Santos
Luciano Pimenta
Thiago Cavalheiro Montebugnoli
Impresso e acabamento:
GRIL - Grfica e Editora
Taquarituba-SP - Tel. (14) 3762-1345
abril 2011
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
DataSnap XE
Por volta do ano de 1997, com o lanamento da verso 3 do Delphi, a Borland
introduziu uma tecnologia de acesso a
dados atravs de aplicaes distribudas, o
DataSnap.
De incio, a tecnologia DataSnap no se
mostrou vivel devido a sua complexidade
e custo de licena elevados. Era, na poca,
mais fcil ao desenvolvedor Delphi utilizar
acesso remoto via drivers ODBC e comunicao TCP\IP.
Com a verso 6 do Delphi, a tecnologia
DataSnap sofreu importantes alteraes, tanto nos custos quanto na forma de se utilizar
a tecnologia. Com o Delphi 7, a tecnologia
DataSnap dava um importante passo para sua
popularizao, pois se tornava mais acessvel
financeiramente e ainda a complexidade
ficava menor.
abril 2011
05
DBExpress:
Veja a imagem 2.
Mos a obra!
Montando a conexo
Para nosso exemplo, vamos utilizar o banco
Employee.fdb que acompanha a instalao do
Firebird.
06
abril 2011
Clique com o boto direito sobre o driver Firebird e escolha Add New Connection. Ser exibida
uma tela pedindo o nome da conexo. Coloque o
nome EMPLOYEE.
O banco de dados que utilizarei no exemplo o Firebird, um dos mais populares entre
os desenvolvedores Delphi.
Imagem 2.
Veja a imagem 3.
VCL Forms Application: Servidor com a aparncia tradicional de uma aplicao Win32, com janela
e demais componentes visuais.
Console Application: Servidor rodando em
Imagem 3.
Imagem 4.
abril 2011
07
- DSTCPServerTransport: Componente responsvel pelo transporte de dados via TCP entre Server
e Client DataSnap.
abril 2011
implementation
{$R *.dfm}
uses StrUtils, Unit1;
- DSServerClass: Esse componente o responsvel por publicar os mtodos do server para serem
invocados pelo cliente DataSnap.
GetEmployees:TDataSet;
function
GetCustomer:TDataSet;
end;
{$METHODINFO OFF}
unit ServerMethodsUnit1;
interface
uses
SysUtils, Classes,
DSServer,DB, DBXFirebird,
FMTBcd, SqlExpr;
type
{$METHODINFO ON}
TServerMethods1 =
class(TDataModule)
SQLConnection1:
TSQLConnection;
sdsEmployee:
TSQLDataSet;
sdsCustomer:
TSQLDataSet;
private
{ Private declarations
}
public
{ Public declarations
}
function
EchoString(Value: string):
string;
function
ReverseString(Value:
string): string;
function
function TServerMethods1.
EchoString(Value: string):
string;
begin
Result := Value;
end;
function TServerMethods1.
GetCustomer: TDataSet;
begin
sdsCustomer.Open;
Result:=sdsCustomer;
end;
function TServerMethods1.
GetEmployees: TDataSet;
begin
sdsEmployee.Open;
Result:=sdsEmployee;
end;
function TServerMethods1.
ReverseString(Value:
string): string;
begin
Result := StrUtils.
ReverseString(Value);
end;
end.
Imagem 5.
Name:cdsCustomers;
ProviderName:provCustomers;
Com o DataModule pronto e acessando os
dados, faremos agora a montagem do formulrio
principal da aplicao.
Usaremos dois componentes DataSource ligados cada um a um ClientDataSet do DataModule.
Em seguida iremos utilizar um PageControl
com duas abas, cada uma com um DBGrid ligado
a um DataSource.
Concluso:
A tecnologia DataSnap, aps renascer com a
verso 2009 do Delphi, vem ganhando melhorias a
cada nova verso, se consolidando assim como uma
alternativa bastante razovel aos acessos remotos
a bancos de dados.
Sobre o autor
Antonio Spitaleri Neto
Consultor Tcnico The Club.
antonio@theclub.com.br
-ClientDataSet:
abril 2011
09
abril 2011
Pgina de boas-vindas
Para essa funcionalidade, usaremos o WebBrowser, onde vamos carregar um arquivo HTML com
Arquivo HTML
ColonPos := Pos(':',
URL);
if ColonPos > 0 then
begin
Cancel := True;
Comando := Copy(URL,
1, ColonPos - 1);
if Comando =
'clientes' then
ShowMessage('Boto
de Clientes')
else if Comando =
'fornecedores' then
ShowMessage('Boto
Fornecedores')
else
Cancel := False;
end;
end;
11
rios em abas.
Dica: Pea ajuda a um profissional que
entenda de layouts de pginas HTML (web
designer), pois ele pode criar um layout mais
dinmico e profissional, apenas tomando o
cuidado para a padronizao que fizemos
nos links.
Formulrios em abas
Para a funcionalidade de criar abas com formulrios, vamos criar primeiramente um formulrio
base. Neste artigo, irei trabalhar com herana visual
de formulrios, ou seja, teremos um formulrio
base e herdaremos deste para criar os outros
formulrios de cadastros.
A idia no mostrar a tcnica de herana
visual e sim apenas de criao de formulrios em
abas. Para saber mais sobre o assunto, possuo vrios artigos e aulas publicadas sobre o tema. Veja
na Figura 3 o formulrio base da aplicao.
begin
Form := clsForm.
Create(TabSheet);
TabSheet := TTabSheet.
Create(Self);
with TabSheet do
begin
PageControl :=
PageControl1;
Caption := Form.
Caption;
ImageIndex := Index;
end;
with Form do
begin
Align := alClient;
BorderStyle := bsNone;
Parent := TabSheet;
Show;
end;
PageControl1.ActivePage
:= TabSheet;
end;
Com esse formulrio, podemos criar os formulrios de cadastros do projeto. Crie quantos
formulrios forem necessrios. Agora, vamos
comear a parte de criao das abas e visualizao
dos formulrios na mesma. Adicione o cdigo da
Listagem 3 no formulrio principal da aplicao.
Listagem 3. Cdigo para criar abas no PageControl e mostrar o formulrio
procedure
CriarAba(clsForm:
TFormClass; Index:
Integer);
var
TabSheet: TTabSheet;
Form: TForm;
12
abril 2011
end;
end;
end;
No cdigo, percorremos as abas do PageControl e comparamos cada uma com o nome passado
por parmetro. Essa string nada mais do que o
Caption do formulrio que vamos associar a aba.
Se encontrarmos a aba com o mesmo nome, mostramos a mesma usando novamente o ActivePage
e retornarmos True para a funo.
No CriarAba, vamos adicionar esse cdigo da
verificao, aps instanciar a varivel do formulrio
e antes de instanciar a varivel TabSheet, usando
o seguinte cdigo:
if AbaExiste(Form.Caption)
then
Exit;
Aba := PageControl1.
Pages[i];
Aba.Destroy;
PageControl1.
ActivePageIndex := 0;
break;
end;
end;
end;
13
DevExpress
Para componentes de terceiros, vamos conhecer os principais componentes que auxiliam a
criao de layouts, iniciando pelo NavBar. Quando
o Outlook implementou uma barra lateral com um
layout muito bonito, os desenvolvedores procuraram fazer o mesmo em seus sistemas.
Apareceram vrios componentes que tentaram reproduzir essa barra lateral, mas como um
grande pesquisador de componentes para Delphi,
afirmo que o melhor o NavBar da DevExpress.
Como podemos ver na Figura 7, temos algumas
opes de estilos do componente.
Veja a Figura 7.
Para criarmos um exemplo, vamos adicionar
um dxNavBar no formulrio. A primeira impresso
de um painel cinza, mas basta dar um duplo clique
para abrirmos o editor (Figura 8), onde podemos
criar grupos e itens. Veja que o editor j possui um
NavBar no seu lado esquerdo.
Veja a Figura 8.
No item Groups, vamos adicionar os grupos da
barra. Adicione quantos grupos desejar, usando o
boto Add. No Object Inspector temos acesso s
propriedades de cada grupo. Algumas propriedades que devem ser mencionadas:
Caption: ttulo do grupo;
Hint: dica do grupo;
UseSmallImages: indica se vamos mostrar cones pequenos no grupo;
LargeImageIndex, SmallImageIndex:
indica o ndice da imagem que vamos usar. Caso
UseSmallImages esteja true, use SmallImageIndex,
se no use LargeImageIndex.
Nas propriedades do dxNavBar temos LargeImages e SmallImages para imagens grandes e
pequenas, respectivamente. Adicione as imagens
em dois ImageList e configure-os no controle. As
imagens nos grupos aparecero dependendo do
estilo escolhido no componente. Veja na Figura 9
o projeto em execuo.
abril 2011
Para criar os itens, vamos usar a mesma tcnica, acessando a opo Items no editor. Crie quantos
itens quiser, associando os mesmos com cones de
sua preferncia. Note que nos Items podemos usar
Actions de uma ActionList, isso facilita em muito o
desenvolvimento.
Para associar os itens aos grupos, acesse a opo Link designer e arraste os itens nos respectivos
grupos. Rode a aplicao (Figura 10).
Menus
Veja a Figura 11.
Para fazer a configurao no componente inteiro, basta selecionar todos os grupos e selecionar
o mesmo estilo. Vrios outros estilos podem ser
configurados separadamente como o cabealho
15
Ribbon
abril 2011
Aps criado, configure cada barra na propriedade Toolbar na coleo de Grupos (propriedade
Groups). Lembrando que uma barra no pode estar
vinculada em grupos diferentes, cada barra como
ser fosse nica. Veja na Figura 15 o exemplo em
execuo
Veja a Figura 15.
Concluso
Vimos neste artigo como criar aplicaes
Win32 com um layout que chame a ateno do
usurio e que d mais funcionalidade ao mesmo,
ficando assim seu projeto com muita qualidade
e valor agregado. Ainda poderamos adicionar
mais algumas caractersticas como um menu de
contexto para fechar a aba ou colocar um X na
aba para fech-la.
Vimos tambm que com os componentes da
DevExpress, podemos criar layouts profissionais em
nossas aplicaes, disponibilizando para o usurio
finais, estilos onde ele mesmo pode optar o que se
adapta melhor. Podemos criar aplicaes completas
ao estilo das principais ferramentas do mercado.
Um grande abrao a todos e sucesso em seus
projetos!
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
abril 2011
17
Trabalhando com
o SQL Server 2008
Express Edition
Parte 1
Neste artigo estarei demonstrando como
trabalhar com o SQL Server 2008 junto com
sua Ferramenta de gerenciamento de Banco
de Dados. Explicarei alguns tpicos importantes e essenciais para administrao e criao
do mesmo.
Antes de comearmos, gostaria de
informar que estaremos com o SQL Server
Management Studio aberto, rodando em uma
mquina local. No Pesquisador de Objetos
(Object Explorer) encontraremos vrios itens
do Banco de Dados, especificamente neste
artigo abordaremos alguns subitens do Item
Banco de Dados. Segue abaixo as principais
caractersticas do mesmo.
18
abril 2011
Esta mesma tarefa tambm poderia ser realizada por linha de comando, veja abaixo:
CREATE DATABASE [DB_
THECLUB] ON PRIMARY
( NAME = NDB_THECLUB,
FILENAME = NC:\Program
Files\Microsoft SQL
Server\MSSQL10.SQLEXPRESS\
MSSQL\DATA\DB_THECLUB.mdf
, SIZE = 3072KB , MAXSIZE
= UNLIMITED, FILEGROWTH =
1024KB )
LOG ON
( NAME = NDB_THECLUB_
log, FILENAME = NC:\
Program Files\Microsoft
SQL Server\MSSQL10.
SQLEXPRESS\MSSQL\DATA\DB_
THECLUB_log.ldf , SIZE =
1024KB , MAXSIZE = 2048GB
, FILEGROWTH = 10%)
GO
Veja a Figura 4.
19
Tabelas (Tables)
Depois da criao da Base Dados, a criao de
tabelas a parte mais importante de um Banco de
Dados. nela onde armazenamos as informaes
para consultas, alteraes. Para criarmos as Tabelas
podemos utilizar tanto a interface de Comando
quanto a grfica, inicialmente criaremos utilizando
a interface grfica, para isto Clique com o Boto
direito em cima de Tabelas e escolha a Opo
Nova Tabela. Na prxima janela aparecero trs
colunas, com o Nome do campo, o Tipo de Campo
e se permite nulo ou no. Em Tipo de Campos,
observaremos que o SQL Server possui muitos tipos
de dados para se trabalhar. importante conhecer
estes tipos de dados disponveis, para utiliz-los da
melhor forma no seu projeto de Banco de Dados.
Usando corretamente o tipo de dado nas colunas
das tabelas, possibilitar uma boa performance,
escalabilidade e integridade da informao ali
armazenada. Em seguida explicarei alguns campos
mais utilizados no SQL Server 2008.
Tipos Numricos:
- TINYINT: Armazena valores numricos intei20
abril 2011
Nome campo
Tipo campo
COD_PED
INT
COD_CLI
INT
DAT_PED
DATETIME
DAT_ENT
DATETIME
TOT_PED
NUMERIC(18,2)
Tabela: TB_ITE
Nome campo
Tipo campo
COD_ITE
INT
COD_PED
INT
COD_PRO
INT
QUA_PRO
NUMERIC(18,2)
VAL_UNI
NUMERIC(18,2)
TOT_PRO
NUMERIC(18,2)
Exibies (Views)
As Views so entidades que permitem a visualizao do contedo das tabelas existentes no
abril 2011
21
abril 2011
Concluso
SELECT * FROM VIEW_PEDIDO
Nesta primeira etapa foram exploradas algumas das principais caractersticas para se trabalhar
com o SQL Server 2008. Procurei apresentar algumas funcionalidades do SQL Server Management
Studio Express (SSMSE). Vou ficando por aqui, um
forte abrao a todos 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 2011
23
Utilizando o
SubVersion e o
Tortoise
Quando trabalhamos ao longo de muito
tempo em um projeto, nos deparamos com
a necessidade de fazer diversas alteraes
no mesmo, seja em decorrncia de corrigir
bugs ou pra adicionar novas funcionalidades
ao sistema. Mas a vem a pergunta, como
resguardar a verso anterior do projeto para
que, em caso de algum problema ela possa ser
recompilada? Um mtodo muito usado criar
um arquivo compactado dos fontes e deixa-lo
guardado em alguma pasta do sistema... Mas
pense no que isso pode acarretar ao longo do
tempo. Um pasta com diversos arquivos ocupando espao em seu HD, entre esses diversos
arquivos existem arquivos que devem ser
preservados durante um longo tempo, outros
que podem ser deletados, ainda alguns, que
com o passar do tempo voc nem se lembrar
de porque foram compactados e guardados
nessa pasta.
24
abril 2011
Veja a imagem 1.
A instalao do programa segue o padro americano para instalaes, Next... Next e Next.
ShowMessage(The
Club. O maior clube de
programadores do Brasil);
Imagem 01
altera-los.
Button2:
ShowMessage(The Club
Megazine);
Button3:
ShowMessage(Avar - SP);
25
Imagem 6.
Com o repositrio j criado, os arquivos j importados, devemos fazer o checkout dos arquivos
do projeto, para uma pasta de nossa preferncia,
que servir como a pasta de trabalho do nosso
projeto de exemplo.
Criada a pasta clique com o boto direito e
escolha a opo Checkout, a seguinte tela ser
aberta:
Veja a imagem 7.
Nessa tela digite o nome do repositrio de
onde sero buscados os arquivos file:///rep/
projeto_teste/trunk. Checkout Directory j vem
preenchida com o nome do diretrio onde sero
trazidos os arquivos, as opes de Checkout Depth
falarei no prximo artigo, portanto deixe a opo
padro, Fully recursive. Em Revision definida
qual a reviso (verso) ser trazida, deixe Head
revision. Quando clicar em OK os arquivos sero
trazidos a pasta.
Veja a imagem 8.
Perceba que o desenho da pasta e dos arquivos
tem agora um visto em verde, isso indica que essa
pasta uma pasta do TortoiseSVN.
abril 2011
Imagem 7
Imagem 8
Imagem 9
Veja a imagem 9.
Nessa tela, em Changes made (double-click on
file for diff) esto listados os arquivos que foram
modificados, os arquivos que estiverem marcados
sero os comitados, alguns so marcados como
non-versioned e por padro no so comitados, no
exemplo da tela acima, somente o .pas ser enviado. Agora vem um recurso muito interessante do
TortoiseSVN, caso queira saber o que foi modificado
nesse arquivo, basta dar um dupl clique para abrir
um programinha chamado TortoiseMerge.
Veja a imagem 10.
No programa aparecem as duas verses do
arquivo, a ltima e a que estamos comitando no
momento. As partes que foram alteradas aparecem
destacadas nos dois arquivos. No prximo artigo
me aprofundarei mais nas ferramentas adicionais
desse programa.
Imagem 10
Imagem 11
abril 2011
27
Concluso
Imagem 12.
Sobre o autor
Bruno Alcars
Consultor Tcnico The Club.
28
abril 2011
Dicas DELPHI
CRONMETRO
Uma aplicao com grande utilidade em muitos sistemas a utilizao da
marcao de horas, em alguns casos essa marcao deve ser especfica.
Esta uma dica de como criar um cronmetro genrico para adaptao
em qualquer aplicao, sendo simples e facilmente implementvel.
Primeiramente iremos criar uma nova aplicao e nela iremos inserir 2
Panels, 1 Label, 1 Timer e 3 Buttons.
O primeiro passo declararmos algumas variveis, um procedimento e um
tipo enumerado, sendo ele incluso na seo type do formulrio:
ChronometerState = (csRunning,
csStopped, csReset);
o seguinte cdigo:
tmCronometro.Enabled := False;
ChangeState(csStopped);
Essa uma aplicao muito til para toda e qualquer aplicao que trabalhe
com preciso cronomtrica, sendo tambm adaptada e desenhada de acordo
com a necessidade da aplicao a ser utilizada.
abril 2011
29
Horizontal
30
abril 2011
Vertical
abril 2011
abril 2011