Rodando uma Aplicação em Pen Drive com XML - Delphi XE2 & Firemonkey

Neste artigo iremos criar uma aplicação simples a ser executada em Pen drive ou HD Externo usando Firemonkey HD Application – Delphi (Delphi XE2) e banco de dados em XML. A aplicação consistirá em uma agenda de compromissos.

Neste artigo iremos criar uma aplicação simples a ser executada em Pen drive ou HD Externo usando Firemonkey HD Application – Delphi (Delphi XE2) e banco de dados em XML. A aplicação consistirá em uma agenda de compromissos. Para isso abrimos o Delphi XE2 e criamos uma nova aplicação Firemonkey. Salvamos a Unit1 como UfmkPrincipal e alteramos as seguintes propriedades:

Inserimos agora, um Data Módulo para fazermos a nossa conexão com nosso banco de dados XML. Você o encontra em File > New > Other > Delphi Files > Data Module.

Salvamos como uDM e alteramos sua propriedade Name para DM.

Dentro desse Data Módulo iremos inserir um ClientDataSet e iremos alterar a propriedade Name para CDSAgenda.

Em seguida clicamos com o botão direito em cima do CDSAgenda e selecionamos “Fields Editor”. Na seguinte tela, clique com o botão direito, novamente, e selecione “New Field”. Adicione os fields conforme características abaixo:

Selecione os seguintes Fields e altere a propriedade Display label:

Vamos até a propriedade FileName do ClientDataSet CDSAGENDA e colocamos: .\CDSAGENDA.xml.

Clicamos com o botão direito em cima do CDSAGENDA e selecionamos a opção Create DataSet. Compile a aplicação e vá até a pasta de criação do sistema e você verá que o arquivo XML foi criado junto com o arquivo executável.

Agora copie todo o endereço da barra de endereços e substitua a propriedade FileName do CDSAGENDA pelo endereço completo do XML.

Agora voltamos para o FmkPrincipal e alteramos suas seguintes propriedades:

Obs: Vale lembrar que o Firemonkey utiliza o conceito de Container, que numa linguagem clara significa que você pode colocar qualquer componente dentro de qualquer componente. Quando formos utilizar esse conceito, a descrição será no seguinte formato: Componente (Container: Componente Mestre).

Obs. Antes de dar continuidade na criação do aplicativo é recomendável a leitura do artigo: LiveBindings e Conexão com Banco de Dados - Delphi XE2 & Firemonkey

Com o objetivo de construirmos o Formulário firemonkey adicionaremos os seguintes componentes e alteramos as suas propriedades:

Obs: Infelizmente, no Firemonkey ainda não funciona o Ctrl+C / Ctrl+V, ou seja, cada componente tem que ser adicionado um a um. Outra questão que ocorre é quando você vai selecionar vários componentes ao mesmo tempo, a caixa de seleção desaparece.

Obs.: Para adicionar itens ao CBBSTATUS, deve-se realizar o seguinte procedimento:

Clique com o botão direito em cima do CBBSTATUS e seleciona Add Item.Repita este processo 4 vezes e você terá sua tela de estrutura.

Para cada ListBoxItem do CBBSTATUS forneça um valor na propriedade Text: 0 , 25, 50, 75 e 100. Esses serão os valores que o CBBSTATUS fornecerá em tempo de execução.

Na versão inicial e Trial do Delphi XE2, o Object Inspector não está ainda garantindo segurança nas propriedades. Assim sendo, em muitas propriedades precisamos alterar em linhas de comando.

Por isso, criaremos a seguinte procedure com o objetivo de garantir a ordem de Tab dos componentes. Declare em Private de FmkPrincipal:

procedure Determinando_Tab_Order;

Clique na linha declarada acima e aperte em seu teclado Ctrl + Shift + C:

procedure TFmkPrincipal.Determinando_Tab_Order; begin CEDATA.TabOrder := 0; EDTHORAINICIAL.TabOrder := 1; EDTHORAFINAL.TabOrder := 2; MmoDESCRICAO.TabOrder := 3; CBBSTATUS.TabOrder := 4; end;

Na procedure OnCreate do FmkPrincipal (já criada) adicione o chamado à procedure:

Determinando_Tab_Order;

Por questão de organização, vamos determinar que os componentes de cadastro somente estejam em modo de edição, se e somente se, o ClientDataSet CDSAGENDA estiver em modo de inserção [dsInsert] ou em modo de edição [dsEdit]. Para isso criamos a seguinte procedure no Public do FmkPrincipal:

procedure Controles_Visuais;

Clique na linha declarada acima e aperte em seu teclado Ctrl + Shift + C:

procedure TFmkPrincipal.Controles_Visuais; begin CEDATA.Enabled := DM.CDSAGENDA.State IN [dsInsert, dsEdit]; EDTHORAINICIAL.Enabled := DM.CDSAGENDA.State IN [dsInsert, dsEdit]; EDTHORAFINAL.Enabled := DM.CDSAGENDA.State IN [dsInsert, dsEdit]; MmoDESCRICAO.Enabled := DM.CDSAGENDA.State IN [dsInsert, dsEdit]; CBBSTATUS.Enabled := DM.CDSAGENDA.State IN [dsInsert, dsEdit]; end;

Agora, chamaremos a procedure Controles_Visuais após as principais ações exercidas no CDSAGENDA (AfterCancel / AfterDelete / AfterEdit / AfterInsert / AfterPost):

procedure TDM.CDSAGENDAAfterCancel(DataSet: TDataSet); begin FmkPrincipal.Controles_Visuais; end; procedure TDM.CDSAGENDAAfterDelete(DataSet: TDataSet); begin FmkPrincipal.Controles_Visuais; end; procedure TDM.CDSAGENDAAfterEdit(DataSet: TDataSet); begin FmkPrincipal.Controles_Visuais; FmkPrincipal.CEDATA.SetFocus; end; procedure TDM.CDSAGENDAAfterInsert(DataSet: TDataSet); begin FmkPrincipal.Controles_Visuais; FmkPrincipal.CEDATA.SetFocus; end; procedure TDM.CDSAGENDAAfterPost(DataSet: TDataSet); begin FmkPrincipal.Controles_Visuais; end;

Obs1: Note que, nos eventos AfterEdit e AfterInsert foram colocados os eventos SetFocus para CEDATA. Isso faz com que o componente CEDATA assuma o foco logo após ser chamado ou o evento de Edição ou de Inserção.

Como o objetivo principal de nosso artigo é utilizar o sistema Firemonkey com XML em um Pen drive, precisaremos agora organizar nossa pasta do projeto. Vá até a pasta Win32. Dentro dessa pasta, crie uma pasta BD. Entre na pasta Debug, recorte o arquivo CDSAGENDA.xml e cole na pasta BD.

E fazemos, então, algumas alterações em nosso código. Na Declaração Uses do Data módulo DM coloque SysUtils e Midaslib.

No evento OnCreate do data módulo DM, colocamos o seguinte código:

procedure TDM.DataModuleCreate(Sender: TObject); var CAMINHO : string; begin CAMINHO := ExtractFileDIR(GetCurrentDir); CDSAGENDA.FileName := CAMINHO + '\BD\CDSAGENDA.XML'; CDSAGENDA.Open; end;

Esse código se torna interessante, pois ele encontra o banco de dados onde quer que a pasta com os códigos fonte estejam. Isso evita o erro de conexão com o banco de dados na hora de abrir e/ou compilar o projeto e também, ajuda na confecção da pasta de distribuição do sistema. Ou seja, uma vez confeccionada a pasta de distribuição, seu sistema poderá rodar em qualquer Pen drive, HD externo, Desktop ou Notebook.

Assim sendo, crie uma pasta no seu desktop chamada Agenda. Dentro da pasta Agenda crie outras duas pastas chamadas BD e SISTEMA, respectivamente:

Obs. Só para garantir copie a Midas.DLL para a pasta BD.

Rode sua aplicação e você terá o seguinte resultado:

Outra grande novidade no Delphi XE2 é a possibilidade de se criar executáveis que rodem em ambiente Windows 32 e 64 bits e também, em sistemas operacionais da Apple MAC OS X e IOS.

Dentro do seu Project Manager adicione a plataforma 64-bits, compile e dê um Build em seu projeto.

Para melhor compreender o funcionamento das plataformas 32-bits e 64-bits e também, o passo a passo para realizar a compilação em cada uma delas visite o artigo: Compilando em 32 e 64 bits - Delphi XE2 & Firemonkey. Vá até a pasta Win64 do seu projeto, altere o nome do executável para agenda (64bits).exe, copie e cole na pasta SISTEMA de seus dispositivo móvel. Agora você pode rodar seu sistema nos dois ambientes Windows: 32 bits e 64 bits.

Para finalizar nosso artigo, vamos agora aplicar um dos estilos (styles) predefinidos do Delphi XE2. Uma aplicação com um visual moderno se tirna mais atraente ao usuário. Para compreender melhor como aplicar estilos predefinidos e customizados visite o artigo: Styles: Inovação e Design – Delphi XE2 & Firemonkey.

Aplicado o style Air, assim finalizamos nossa aplicação:

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

Artigos relacionados