Artigo Clube Delphi 95 - Desenvolvendo uma Aplicação Completa com PocketStudio

Continuando o artigo da edição anterior, iremos criar a última tela de nossa aplicação que será a tela de digitação de itens do pedido.

Esse artigo faz parte da revista Clube Delphi edição 95. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.

Mini-Curso

Desenvolvendo uma Aplicação Completa com PocketStudio

Aprenda a criar aplicações para o sistema operacional PalmOS – Parte 4

  

Continuando o artigo da edição anterior, iremos criar a última tela de nossa aplicação que será a tela de digitação de itens do pedido. Após concluirmos a criação da mesma iremos desenvolver um conduit para sincronizarmos com o Desktop e trocarmos informações. O objetivo do nosso conduit será enviar para o Desktop as tabelas de itens de pedido e pedidos, e receber do Desktop as tabelas de produtos e clientes. Sempre que o usuário conectar o cabo USB no Palm e no Desktop selecionar o HotSync o sincronismo será realizado e os dados atualizados, a regra é sempre primeiro enviarmos os dados do Palm para o Desktop e depois recebermos os dados do Desktop para o Palm. Mãos à obra, vamos criar a tela de Itens de Pedido para depois entrarmos em detalhes do Conduit.

 

Criando a tela de digitação de itens do pedido

Vamos adicionar um novo formulário para criarmos a tela de digitação de itens do pedido, no menu principal do PocketStudio em File|New>Form, após adicionarmos o mesmo vamos salvá-lo clicando em File|Save ou pelas teclas de atalho CTRL + S, salvaremos ele com o nome “UfrmPedidoItem.pas” para indicarmos que é a Unit de itens do pedido.  Feito isso altere seu Name para “FrmItensPedido” e Caption para “Itens do Pedido”.

Desenharemos uma tela semelhante à Figura 1. Para isso inclua (todos da paleta Forms) um componente List(“LstItens”), quatro Label’s com os Caption’s “Total do Pedido”, “Qtde.” ePreço”. Altere a propriedade fonte do primeiro Label para ftBold. Em seguida adicione ao lado de cada Label um componente Field representando um campo da tabela. Incluiremos FldTotPed, FldCodProd, FldDescricao, FldQtde e FldPreco. Os botões chame-os de BtnVoltar, BtnProcurar, BtnNovo, BtnGravar e BtnExcluir. Se optar por utilizar Bitmap’s para representar as ações nos botões, não esqueça de incluir quatro Bitmap’s e nomeá-los como BmpProcurar, BmpNovo, BmpGravar e BmpExcluir. Caso tenha dúvidas da utilização de imagens nos botões, retorne aos artigos anteriores e veja como realizamos a tarefa de inclusão de Bitmap’s nas telas anteriores.

 

Figura 1. Tela dos itens do pedido

 

Antes de codificarmos os botões vamos escrever algumas funções que irão nos auxiliar nas validações dos dados informados e limpar a tela quando o usuário clicar no botão Novo para incluir um novo item no pedido.

Além disso trabalharemos com um novo conceito, o de manipulação de listas. Logicamente o componente List que incluimos na janela listará os Itens do Pedido conforme adicionarmos. Existem várias maneiras de “alimentarmos” a lista para apresentar os itens. Uma delas seria fazer um laço(“loop”) e percorrer a tabela de itens do pedido adicionando-os à lista, para isso usaríamos a função AddCopy da PSList, mas isso é uma operação demorada, e que consome muita memória, sendo assim utilizaremos duas funções que são as chamadas “receitas de bolo”, pois montamos a estrutura e podemos utilizar em todas as nossas listas alterando apenas as tabelas e os Field’s.

A grande vantagem dessas funções é que elas não usam a memória, pois trabalham com os métodos de desenho na tela como o WinDrawTruncChars. Dessa forma os itens são desenhados na janela e não inseridos na lista o que é extremamente rápido, com a vantagem de usar pouquíssima memória. Por isso, inclua as procedures FListaItens e CarregaArrayItem à área Implementation do formulário de Itens de Pedido. Logo em seguida inclua o procedimento Limpa, todas presentes na Listagem 1. Fiz questão de comentar cada linha no próprio código, portanto veja as explicações das listagens em formato de comentários no código-fonte.

 

Listagem 1. Procedimentos para listagem, carregamento e limpeza das listas

 

procedure FListaItens(ItemNum: Int16; Bounds:

  RectanglePtr; var ItemsText: PChar);

var

  Buffer: Array[0..100] of Char;

  ItemInicial: Int16;

begin

  { Se o item solicitado for menor que ZERO,

não fazemos nada! }

  if ItemNum < 0 then

exit;

  { Nós movemos para o índice informado, dentro do " [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados