Leia mais artigos dessa série:
Olá pessoal
Tenho recebido vários emails 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 registro.
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, de 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 ao lado dentro deste container.
Feito a parte de cadastro vamos para a parte de consultas, adicionando logo abaixo os seguintes componentes:
Componente | Nome | Valor |
---|---|---|
IwDbGrid | DbgResultado | |
IwLabel | lblPesquisa | |
Iwedit | EdtPesquisa | |
IwButton | btPesquisa |
Coloque os componentes e o resultado final de seu layot deverá fica semelhante a figura abaixo:
Bem, nossa parte de layout está pronta vamos agora programar as funcionalidades de nossa página que é algo nada complicado.
Adicione um ClientDataSet e o renomeie como CDSCadastro, e na propriedade FileName busque o arquivo DADOS.XML, e logo após adicione os campos.
Concluída a parte de conexão com nosso XML adicione um datasource com o nome de dsCadastro e na propriedade Dataset selecione seu CDSCadastro como de costume numa aplicação win32.
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 / Datafield |
*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, além de adicionar outros, excluir e alterar através de nosso iwDBnavigator.
Vamos para nossa parte de consulta, que será exibida em nosso Grid. Para isto dê um ctrl-c e ctrl-v no CDSCadastro e no dsCadastro renomeie para CDSConsulta e DsConsulta (não utilizei o mesmo CDS por questões óbvias, o 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 consulta no botão btConsulta através do evento Onclick ou AsyncClik caso você 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:
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 um 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 página 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 duvidas.
Até a próxima!