Olá pessoal! Tenho recebido vários e-mails pedindo a continuidade dos artigos sobre Intraweb, por isso criei esta terceira parte abordando o cadastro e consulta de dados em arquivos XML utilizando o framework Intraweb como interface
Vamos primeiramente criar nosso XML, seguindo a estrutura abaixo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <DATAPACKET Version="2.0"> <METADATA> <FIELDS> <FIELD attrname="NOME" fieldtype="string" WIDTH="20"/> <FIELD attrname="CIDADE" fieldtype="string" WIDTH="15"/> <FIELD attrname="PAIS" fieldtype="string" WIDTH="15"/> </FIELDS> <PARAMS/> </METADATA> <ROWDATA> <ROW NOME="JOAO" CIDADE="SAO PAULO" PAIS="BRASIL"/> <ROW NOME="EUFRAZIO" CIDADE="SANTOS" PAIS="BRASIL"/> <ROW NOME="ROONEY" CIDADE="MANCHESTER" PAIS="INGLATERRA"/> <ROW NOME="MALDINI" CIDADE="MILAO" PAIS="ITALIA"/> </ROWDATA> </DATAPACKET>
Note que no exemplo acima estão previamente cadastrados alguns registros,
mas isso não é uma regra, você pode muito bem criar apenas
a estrutura sem nenhum dado.
Copie este XML e cole em um bloco de notas ou um editor de sua preferência,
salvando-o como "Dados.xml".
Feito o XML, crie um novo projeto Intraweb: File/New/Other/VCL for
the web.
Dê um nome para seu projeto e salve-o, de preferência no mesmo
diretório
de seu arquivo XML para uma melhor organização.
Criado o projeto e com seu WebForm na tela, adicione os seguintes componentes:
| COMPONENTE |
NOME |
VALOR |
| *IWRegion |
rgCadastro |
|
| iwDbEdit |
DBENome |
|
| iwDbEdit |
DBECidade |
|
| iwDbEdit |
DBEpais |
|
| Iwlabel |
lblNome |
Nome: |
| Iwlabel |
lblCidade |
Cidade: |
| Iwlabel |
LblPais |
País: |
| IwDbNavigator |
Navegacao |
|
*Nota: O IwRegion é semelhante a um Panel que estamos acostumados a
ver em aplicativos Win32. Neste exemplo colocaremos todos os controles acima,
dentro deste container.
Feita a parte de cadastro, vamos para a parte de consultas, adicionando logo
abaixo os seguintes componentes:
| COMPONENTE |
NOME |
| IwDbGrid |
DbgResultado |
| IwLabel |
lblPesquisa |
| Iwedit |
EdtPesquisa |
| IwButton |
BtPesquisa |
Coloque os componentes e o resultado final de seu layout deverá fica
semelhante a figura abaixo:

Figura 1 - Resultado da Interface
Bem, nossa parte de layout está pronta. Vamos então programar as funcionalidades
de nossa página, o que é algo nada complicado.
Adicione um ClientDataSet e o renomeie como CDSCadastro. Na propriedade
FileName, busque o arquivo DADOS.XML e logo após adicione os campos no
cds.
Concluída a parte de conexão com nosso XML, adicione um datasource
com o nome dsCadastro e na propriedade Dataset, selecione seu CDSCadastro
como de costume numa aplicação win32.

Figura 2 - Adicionando o CDSCadastro.
Agora vamos “linkar” o CDSCadastro com os campos e com nosso dbNavigator:
| COMPONENTE |
PROPRIEDADES |
| EdtNome |
Datasource=dsCadastro / Datafield=NOME |
| edtCidade |
Datasource=dsCadastro / Datafield=CIDADE |
| EdtPais |
Datasource=dsCadastro / Datafield=PAIS |
| Navegacao |
Datasource=dsCadastro |
*Detalhe importante: Setar a propriedade Active de seu CDS como true.
Agora compile seu projeto e veja o resultado. podemos navegar nos registros
previamente criados alem de adicionar outros, excluir e alterar através
de nosso iwDBnavigator.
Para a parte de consulta, que será exibida em nosso Grid,
dê um Ctrl-c e ctrl-v no CDSCadastro e no dsCadastro renomeando-os
para CDSConsulta e DsConsulta (não utilizei o mesmo CDS por questões
obvias, ponteiro de consulta iria aparecer nos campos do cadastro). Não é necessário
setar a propriedade FileName, pois já está setada.
Faça o link do dbgConsulta com o dsConsulta, através da propriedade
Datasource e agora é só programar a o botão
btConsulta através do evento Onclick ou AsyncClik, caso queira
utilizar o Ajax:
procedure TIWForm2.btPesquisaClick(Sender: TObject);
begin
CDSConsulta.Close;
CDSConsulta.Filter := 'NOME = ' + QuotedStr(edtPesquisa.Text);
CDSConsulta.Filtered := True;
CDSConsulta.Open;
end;
Note que na consulta estamos filtrando apenas por nome, informando ao comando
Filter o campo do XML a ser pesquisado. O resultado é este:

Figura 3 - Sistema em funcionamento
Bom pessoal finalizamos mais este artigo abordando um pouco mais profundamente
o Intraweb.
É importante ressaltar que apesar destas aplicações
web serem feitas de forma bem semelhante a aplicações WIN32, é preciso
ter certo cuidado, pois quanto mais carregada sua tela for de componentes,
ou quanto mais pesadas forem suas consultas a banco de dados, mais lenta sua
pagina será, pois tudo isso será gerado pelo código de
sua página. É altamente recomendável separar as consultas
e regras de Negócio da Interface Web, deixando-os em camadas diferentes
justamente para não ter problemas de lentidão.
Um abraço a todos e o meu agradecimento ao Bruno Lichot, da CodeGear,
que sempre que possível esclareceu minhas dúvidas.
Até a próxima!
Por: Rafael Amaral
Contato: rafamaral@hotmail.com
|