Você está na página 1de 79

APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE5

Ronnei Peterson

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

2 de 79

DICAS DE INSTALAO
Caso voc ainda no possua uma licena oficial utilize por 30 dias a verso Trial para os
testes. Recomendamos a compra da licena do produto, pois somente com produtos
licenciados que permitido a gerao de apps oficiais e comerciais, no permitido
adicionar aplicativos desenvolvidos em verses trial na Google Play ou na AppStore.
BAIXANDO A VERSO TRIAL
Acesse o site www.embarcadero.com.br no menu Produtos escolha a opo FREE
TRIALS


Na prxima pgina escolha a Opo Trial Download no Delphi XE5

Na pgina de Seleo do Produto clique em Download no Produto Delphi XE5
Architect 30 Day trial
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

3 de 79



Crie uma conta ou entre com seu login e senha registrados na embarcadero



O nmero de srie chegar no seu email, e tambm ser necessrio esse login e senha
no primeiro uso do produto na ativao do registro do mesmo.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

4 de 79

DICAS REFERENTE A BANCO DE DADOS
Caso voc j utilize o FIREBIRD em seu computador desmarque a opo de instalar o
Interbase, para evitar conflitos, caso contrrio mantenha a instalao completa, pois o
interbase ser til no desenvolvimento de aplicativos com banco de dados.



SDK DO ANDROID

Marque as opes de instalar o SDK e o NDK do Android.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

5 de 79



Aguarde o Final da Instalao, ela poder ser um pouco demorada porque necessrio
fazer o download de todos os arquivos da instalao.

Acesse o Delphi XE5 complete o passo de registro do software, usando o nmero de
srie enviado em seu email e o email e senha registrados na embarcadero.

Conhecendo a IDE do Delphi

IDE (Integrated Development Environment), um ambiente integrado para desenvolvimento de
software
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

6 de 79



Barra de Ferramentas
Clicando com o boto direito sobre uma das barras de ferramentas aparecer a lista de barra
de ferramentas que esto ou podem ser adicionadas.

Palheta Standard
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

7 de 79




Palheta responsvel por criar novas units, abrir units existentes, salvar a unit atual, salvar tudo
eadicionar ou remover units externas aos nossos projetos.

Palheta Desktop



Esta palheta serve para configurarmos o nosso ambiente de trabalho, j existem alguns
modelos prontos, porm voc pode personalizar seu ambiente de trabalho, com as janelas e
posies das mesmas da forma que voc preferir.

Palheta View



Responsvel por Visualizar as units,formulrios e alternar entre Visual (form) e Cdigo (unit)

Palheta Debug



II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

8 de 79

Palheta Responsvel pela Depurao do Projeto, ou seja, compilar, compilar e executar, pausar
a depurao, fazer depurao linha a linha, entre outras opes de depurao. Veremos a
funo de cada uma dessas opes mais adiante.

Tool Palette - Palheta de Ferramentas (Ctrl + Alt + P)

Nesta palheta voc encontrar as ferramentas necessrias para trabalhar, quando no
estamos com nenhum projeto abertoa palheta de ferramentas mostrar os possveis projetos
que podem ser criados.




Project Manager Gerenciador de Projetos (Ctrl +.Alt + F11)

Nesta palheta voc poder gerenciar os projetos abertos, visualizando seus arquivos,
plataforma que ser usada para depurao (Windows, Mac, Ios..), adicionando e removendo
novos arquivos ao projeto.

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

9 de 79



Structure Palheta de Estrutura dos componentes (Shift + Alt + F11)

No exemplo abaixo eu inseri dois componentes no formulrio e a palheta Estrutura mostrou
como eles esto organizados, ou seja o Edit1 e o Memo1 esto dentro do Formulrio Form2.



Object Inspector Palheta Inspetor de Objetos (F11)

Esta uma das palhetas que teremos o maior contato durante o desenvolvimento, atravs
dela que acessaremos as propriedades e eventos do componente selecionado, no exemplo
abaixo foi selecionado um Edit (caixa de entrada) e o object inspector est listando todas as
propriedades do mesmo, na segunda imagem o object inspector est listando todos os eventos
do Edit selecionado.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

10 de 79




Menu View

Atravs deste Menu voc poder abrir janelas e visualizar os atalhos para cada uma delas.




Projetos, Units e Formulrios
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

11 de 79




Um projeto uma coletnea de arquivos necessrios para que um programa possa funcionar,
no Delphi existem diversos tipos de projetos, como por exemplo:

VCL Forms Aplicattion Aplicao baseada em formulrios VCL (Visual Component Library),
biblioteca de componentes visuais, a VCL herda do Windows o visual de seus componentes,
podendo inclusive serem modificados caso o tema do Windows seja modificado.

Firemonkey Desktop Application Aplicao que pode ser usada em mltiplas plataformas
desktop (Windows, Mac Os), com componentes redesenhados e estilizados.

VCL Metropolis UI Application Aplicao baseada em VCL, porm com recursos visuais do
tema Metropolis (Windows 8).

Firemonkey Mobile Application Aplicao para dispositivos mveis, nesta verso do Delphi
possvel criar aplicaes para dispositivos com sistema operacional IOS (Apple) e dispositivos
com sistema operacional Android.
Entre outros projetos.

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

12 de 79

Firemonkey Mobile Application
Este ser o projeto que utilizaremos durante o mini-curso.
Um projeto uma coletnea de units e formulrios para gerar uma aplicao.
Uma unit (.pas) pode existir por si s.
Um formulrio depende de uma Unit (.pas) e de um arquivo (.dfm), a unit contm o cdigo
funcional da aplicao e arquivo dfm contm o cdigo dos componentes visuais do
formulrio.

Exemplo de um projeto



Exemplo de uma unit que contm um formulrio

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

13 de 79




Entendendo a estrutura de uma UNIT

unit Unit2; //nome da Unit

interface//bloco de interface responsvel pelas declaraes

uses//declara as units (bibliotecas) que sero usadas
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls;

Type //criao de novos tipos

//Criando uma classe herdada da classe TFORM
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

14 de 79

TForm2 = class(TForm)
private
{ Private declarations }
Public
{ Public declarations }
end;


var //variveis globais a esta unit
Form2: TForm2;

implementation//Bloco de implementao

{$R *.dfm}

//rea onde sero implementados os mtodos, procedimentos e funes


end.//indica o fim da unit

Exemplo do dfm deste formulrio

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

15 de 79




II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

16 de 79

Um pouco da Delphi Language e converso de sintaxe

Como o foco de nosso curso so alunos que j tem um certo conhecimento em C ou Java,
explanaremos aqui as principais diferenas de sintaxe entre as duas linguagens.

Operadores

+ Soma
- Subtrao
* Multiplicao
/ Diviso

Comentrios

// comentrio de uma linha

(*
Comentrio em
Bloco
*)

{
Comentrio em
Bloco

}

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

17 de 79


Em C Em Pascal
Atribuio = :=
Comparao == =
Estrutura condicional If (cont==3)
{

}
If (cont=3) Then
Begin

End;

Estrutura condicional com
else
If (cont==3)
{

}
else
{
}
If (cont=3) Then
Begin

End
else Begin

End;
Lao de Repetio FOR for (i=0;i<=3;i++)
{

}

for (i=3;i>=0;i--)
{

}


for cont:=0 to 3 do
Begin

End;

for cont:=3 downto 0 do
Begin

End;


Lao de Repetio WHILE
while( i <= 100 )
{

}

While (i<=100)
Do Begin

End;
Mdulo ou resto da Diviso If ((4 % 2) ==0)
{
printf(" par );
}
If ((4 mod 2)=0)
Then Begin
Showmessage( par);
End;


Modularizao: Funes e Procedimentos

Procedimentos

Em C
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

18 de 79


void soma()
{

}

Em Pascal

Procedure Soma;
Begin

End;

Funes

Em C

Int soma()
{
return 30; // sai da funo nesta linha e retorna 30
}

Em Pascal

Function soma:integer;
Begin
Result:=30; //armazena 30 na varivel de retorno, mas no sai nesta linha
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

19 de 79

Exit; //no obrigatrio, mas serve para sair da funo.
End;

Passagem de parmetros em procedimentos e funes

Passagem por argumento

Em C

int soma (int a,int b)
{
return a+b;
}

Em Pascal

Function soma (a,b:integer):integer;
Begin
result:=a+b;
End;

Passagem por referncia

Em C

int soma (int& a,int& b)
{
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

20 de 79

}

Em Pascal

Function soma (var a,b:integer):integer;
Begin
End;

ESCOPO DE VARIVEIS

Assim como em C, se uma varivel for declarada dentro de uma funo, o escopo dela
apenas a funo.

Para declarar uma funo em Pascal existem reas especficas para esse procedimento,
diferentemente de C que uma varivel pode ser declarada em qualquer parte do cdigo.

Declarando variveis dentro de um procedimento (entre o nome da funo e o Begin)

Procedure Soma;
Var
A,b:integer;
Texto:string;
Begin
End;

Declarando uma varivel Global a uma Unit (no var antes do implementation da unit, junto a
varivel do formulrio)

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

21 de 79

var
Form2: TForm2;
Aglobal:integer; //aqui

implementation

{$R *.dfm}

....
Existem tambm variveis declaradas dentro de classes, que podem ser declaradas na seo
privada ou pblica, mas que foge do escopo deste mini-curso.

TIPOS DE DADOS COMUNS

Inteiros

Tipo Faixa Aproximada
ShortInt -128..127
SmallInt -32768..32767
LongInt -2147483648..2147483647
Integer -2147483648..2147483647
Int64 -2^63..2^63-1
Byte 0..255
Word 0..65535
LongWord 0..4294967295
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

22 de 79

Cardinal 0..4294967295
UInt64 0..2^64-1

Tipos Float

Tipo Faixa Aproximada Dgitos sig.
Real48 2.9e-39 .. 1.7e+38 11-12
Single 1.5e-45 .. 3.4e+38 7-8
Double 5.0e-324 .. 1.7e+308 15-16
Real 5.0e-324 .. 1.7e+308 15-16
Extended
32-bit platforms 3.4e-4932 .. 1.1e+4932
64-bit platforms 5.0e-324 .. 1.7e+308
10-20
15-16
Comp -2
63
+1 .. 2
63
-1 10-20
Currency -922337203685477.5808.. 922337203685477.5807 10-20


Tipo Booleano

Boolean aceita true ou false;

Tipo Data e hora

TDate guarda data
TTime guarda hora
TDateTime guarda data e hora

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

23 de 79

Tipos de caracteres

Char representao de 1 bytes (1 caracter)
String vetor de caracteres

Funes de String

S:=texto que ser enviado para a varivel S;

A:=teste;
B:=de texto;
C:=A+B+ usando concatenao de strings;

Funo length retorna a quantidade de caracteres de uma string
Quantidadecaracteres:=Length(C);

Uma string inicia em 1 e no em 0, ento para percorrer uma string

For cont:=1 to length(c) do
Begin
Stringfinal:=StringFinal + C[cont];
End;

Algumas funes importantes de converses entre tipos

Na converso o parmetro deve conter um valor correto para o tipo destino, caso contrrio
gerar uma excesso.

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

24 de 79

Strtodate = Converte uma String para Data

Strtodatetime= Converte uma string para um campo data/hora

DateTimetostr= Converte um valor Data/Hora para String

Formatdatetime= Formata um valor Data/Hora convertendo para String

Strtoint= Converte uma string para um valor inteiro

StrtoCurr= Converte uma string para um valor currency

Strtofloat= Converte uma string para um valor de ponto flutuante

InttoStr= Converte um valor inteiro para uma string

CurrtoStr= Converte um valor currency para uma string

FloattoStr= Converte um valor de ponto flutuante para uma string

Exemplo de Uso das funes em um click de um boto

procedure TForm2.Button1Click(Sender: TObject);
Var
ValorData:Tdate;
ValorDataHora:TDatetime;
ValorString:String;
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

25 de 79

ValorInteiro:integer;
ValorCurrency:Currency;
ValorFloat:Double;
Begin

ValorData:=strtodate('01/01/2000');
ValorDataHora:=strtodatetime('01/01/2000 00:00');
ValorString:=datetostr(ValorData);
ValorString:=FormatDatetime('yyyy/mm/dd', ValorDataHora);
ValorInteiro:=strtoint('22');
ValorCurrency:=strtocurr('10,25');
ValorFloat:=strtofloat('10,2252');
ValorString:=inttostr(332);
ValorString:=CurrtoStr(200.25);
ValorString:=CurrtoStr(200.2566);
End


II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

26 de 79


O QUE H DE NOVO NO DELPHI XE4
Artigo de Fernando Rizzato pesquisando no dia 28/10/2013 no link
http://blogs.embarcadero.com/fernandorizzato/index.php/2013/05/page/2/
Principais Mudanas na Linguagem Delphi para Mobile
Sunday, May 5th, 2013
Introduo
Este artigo apresenta as principais novidades da linguagem Delphi no que diz respeito a desenvolvimento para
Mobile, disponibilizado recentemente atravs do Delphi XE4. Porm antes dos detalhes da linguagem, vamos
entender o motivo e a abrangncia destas alteraes.
Novo Compilador
Para oferecer suporte aos dispositivos mveis foram criados dois novos compiladores, um para o simulador do iOS e
outro para o dispositivo fsico (ARM), j que as arquiteturas so distintas.Desta forma agora temos:
Win32 compiler (DCC32)
Win64 compiler (DCC64)
Mac compiler (DCCOSX)
iOS Simulator compiler (DCCIOS32)
iOS ARM compiler (DCCIOSARM)
A novidade est nos dois ltimos, os quais seguem um desenho totalmente novo, baseados em um padro
chamado LLVM (http://llvm.org). Podemos entender o LLVM como um conjunto de mdulos e ferramentas
reutilizveis para compiladores, utilizados amplamente por diversos compiladores nativos, entre eles o prprio
Xcode, nativo da Apple.
Mudanas no Delphi Language
Para suportar dispositivos mveis, o novo compilador (acima) impe algumas mudanas de linguagem, as quais vou
listar a seguir. Na verdade, mais do que mudanas, trata-se de uma grande evoluo da linguagem Delphi. No
futuro, estes e outros avanos sero portados tambm para os compiladores Win32, Win64 e OSX.
Automatic Reference Counting (ARC)
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

27 de 79

O ARC traz o melhor dos dois mundos: gerenciamento automtico de memria sem a necessidade de um garbage
collection, tido como um grande vilo de performance nas linguagem que o utilizam. Em resumo o ARC gerencia o
ciclo de vida de objetos sem que voc tenha que se preocupar com o "Free".

No exemplo acima, o objeto MyObj ser removido da memria assim que sair do escopo. Importante ressaltar que a
sintax tradicional (try/finally fazendo o Free manual do objeto) continua suportada, portanto as migraes de
cdigo esto garantidas.
Tambm esto disponveis o pattern Dispose e suporte a [Weak] References. Voc pode encontrar mais sobre isso
aqui:http://edn.embarcadero.com/article/43073.
Tipo String
Todos os tipos string existentes (AnsiString, UTF8String, RawByteString, WideString, AnsiChar, PAnsiChar,
PWideChar, OpenString, ShortString
) agora esto simplificados em um nico: String. Alm disso, as strings agora so 0-based ao invs de 1-based. Isso
significa que alguns cdigos podem precisar de reviso, mas as funes de manipulao de strings j esto
preparadas para esta mudana.
Uma outra - importante - mudana que as strings passaro a ser "imutveis", devido ao gerenciamento de
memria dos dispositivos mveis. Nesta verso do compilador tudo continua conforme anteriormente, voc
receber apenas uma warning alertando que, futuramente, construes como a exibida abaixo no ser mais
suportada:
str1[3]:=w;
Portanto altamente recomendado que, para seus novos cdigos, voc faa uso de construes como
TStringBuilder e TStringHelper para a manipulao de strings. Um trecho de cdigo utilizando estas classes para
ilustrar:

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

28 de 79

Outras mudanas
1. Ponteiros no so suportados no mundo mobile
2. No h suporte para Inline assemby
3. Evite chamadas a APIs diretamente, esteja pronto para as novas plataformas que viro
4. Prefira utilizar as units cross-plataform, especialmente ao manipular arquivos (unit IOUtils)


II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

29 de 79

EMULADOR DO ANDROID

Para testar os projetos sem um celular necessrio um emulador do sistema operacional do
celular desejado, junto ao Embarcadero Xe5 instalado um Emulador do Android.
Clique no Menu Iniciar, localize o menu do Embarcadero RAD Studio XE5 e abra o Android
Tools





II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

30 de 79

Menu Tools \ Manage AVDs...



O Print abaixo depender da verso do SDK do Android instalado, caso aps instalado a
mquina virtual j estiver criada necessrio apenas na primeira execuo do emulador
adicionar o suporte a GPU, para isso clique no dispositivo virtual listado e clique em Edit.


Na tela de edio clique em New para adicionar uma nova propriedade
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

31 de 79



Clique na Opo GPU emulation e clique em OK

Na lista de propriedades adicionadas troque o valor do GPU emulation para YES
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

32 de 79



Clique em Edit AVD para finalizar as alteraes.


Caso voc esteja trabalhando com outra verso do Emulador, segue abaixo um print da criao
de um novo dispositivo virtual, para isso clique no boto NEW
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

33 de 79



Preencha as opes indicadas pelas setas vermelhas
AVD Name: Nome do dispositivo, use um nome simples sem espaos ou caracteres
especiais
Device: Escolha o modelo do dispositivo, neste exemplo estamos usando um Nexus
Target: Escolha o Android.4.2.2
Memory Options RAM: Altere para 768 (mximo recomendado)
Use Host GPU: Marque essa opo
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

34 de 79

Clique em OK
A mensagem o resultado da criao da mquina virtual.



Iniciando o emulador
Marque o dispositivo virtual e clique em START ...


II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

35 de 79



II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

36 de 79


Note que na barra de superior dado um nome para este dispositivo virtual, o mesmo dever
estar listado no Delphi para conseguirmos emular nosso aplicativo.

FIREMONKEY MOBILE APPLICATION
Para criar um novo projeto para desenvolvimento Mobile clique em Menu New \ Firemonkey
Mobile Application - Delphi
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

37 de 79


Existem alguns Templates de projetos Mobile que podem ser escolhidos ao iniciar um projeto.

Escolha a opo Blank Application (Aplicao em Branco)
possvel escolher o modelo visual do celular que deseja desenvolver.



II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

38 de 79

Exemplo Usando o Google Nexus 4

Exemplo Usando o Iphone 4

COMPONENTES OU CONTROLES
Componentes ou controles so objetos (classes) prontos para o desenvolvimento dentro de
uma IDE, por exemplo se voc precisa de um boto, de uma caixa de texto ou de uma label na
construo do seu aplicativo voc no precisa constru-los, eles j esto prontos, basta arrastar
para o formulrio que deseja e eles sero criados.

CONHECENDO ALGUNS CONTROLES (COMPONENTES)
LABEL
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

39 de 79

O componente label serve para mostrar textos, ele pode ser encontrado
na Palheta Standard da Tool Palette



Algumas Propriedade
Text = Texto da Label
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

40 de 79

StyleLookup = Estilo Visual da Label


PRIMEIRA COMPILAO NO EMULADOR
Adicione um componente Label em seu formulrio, v na propriedade TEXT no Object
Inspector e altere o texto a mesma.
Salve seu projeto e todos os arquivos que compe o mesmo clicando em Menu File \ Save All


Na janela Project Manager, escolha o emulador correto, de acordo com o dispositivo que
deseja fazer o deploy
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

41 de 79



Veja que no exemplo acima foi listado o mesmo nome do emulador que j se encontra aberto.
Clique em Run Without Debugging, essa opo compila o projeto e enviar para o dispositivo ou
emulador o app pronto, como estamos trabalhando sem o Debug no conseguiremos
debugar nosso cdigo com paradas (breakpoint), para executar este tipo de operao use a
opo RUN(f9).


Aguarde todo o processo de compilao e deploy

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

42 de 79



Compilando para um dispositivo real
No exemplo abaixo foi usado um aparelho SAMSUNG Galaxy S4
O driver do dispositivo j deve ter sido instalado previamente no Windows.
No Aparelho acesse as configuraes, opo sobre o dispositivo
Pressione vrias vezes sobre a opo Num de compilao, ele habilitar as opo de
desenvolvedor, retorne a tela anterior e escolha a opo Opes do Desenvolvedor e marque a
opo Depurao de USB. (Essas opes podem mudar de acordo com o aparelho ou o
Android instalado nele, procure no Google como Habilitar Depurao de USB para
desenvolvimento no modelo de seu aparelho).
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

43 de 79



Caso o Delphi no liste automaticamente o dispositivo clique com o boto direito sobre a
opo Target do Android no Project Manager e escolha a opo Refresh. Caso no funcione
uma das dicas fechar e abrir Delphi novamente.

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

44 de 79

Caso tudo ocorra certo o dispositivo dever ser listado no Delphi, para marcar ele como alvo
de compilao clique duas vezes sobre a opo ou clique com o boto direito e escolha a
opo Activate.

Clique em Run Without Debugging



Exemplo de um APP compilado direto no celular S4.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

45 de 79


Segundo a Embarcadero (http://www.embarcadero.com/br/products/delphi/android-app-
development) :
Crie aplicaes para fones e tablets com Android com processadores ARM7, rodando
Android Gingerbread (2.3.3-2.7), Ice Cream Sandwich (4.0.3 e 4.0.4) ou Jelly Bean (4.1.x,
4.2.x e 4.3.x)
Lista oficial de aparelhos indicados pela Embarcadero que foram testados
(http://docwiki.embarcadero.com/RADStudio/XE5/en/Android_Devices_Supported_for_Applic
ation_Development):
Results of Our Android Device Testing
The device testing table below shows the results of our testing.
Android Device
Name
Android
Version
Test Results
(Out of 16
Samples)
Percentage
Passed
Comments
Nexus 7 HD (2013)
4.3
16/16 100

Nexus 4
4.2.2
16/16 100

Nexus 7 (2012) 4.3 16/16 100

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

46 de 79

Nexus 7 4.2.2 16/16 100

Nexus 4 4.3 16/16 100

Nexus 10 4.3 16/16 100

Galaxy S II (GT-
I9100)
4.1.2 16/16 100

Galaxy S III 4.1.1 16/16 100

Galaxy S4 4.1.1 16/16 100

Nexus 10 4.2.2 16/16 100

Galaxy Tab2 7 (GT-
P3110)
4.1.1 16/16 100

Optimus L5 (LG-
E612)
4.1.2 16/16 100

Galaxy Tab2 7 (GT-
P3110)
4.1.1 16/16 100

Orange Nivo
(Coolpad 7560U)
4.1.2 16/16 100

Nexus 7 4.2.1 16/16 100

LG Optimus L5 (LG
- E610)
4.0.3 15/16 93.75

Galaxy S II (GT-
I9100)
2.3.3 15/16 93.75 Bug reported about Picture Taking
Fujitsu Arrows Tab
(F-01D)
4.0.3 15/16 93.75 Bug reported about Audio Recording
HTC Desire HD 2.3.6 15/16 93.75 Bug reported about Audio Recording
HTC One X 4.1.1 15/16 93.75 Bug reported about Web Browser
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

47 de 79

HTC Desire SV 4.0.4 15/16 93.75 Bug reported about Audio Recording
Kindle Fire HD
(KFTT)
4.0.3 14/16 87.5
Bug reported about Location Demo and
Audio Recording
Samsung Galaxy
Tab2 10
4.0.3 14/16 87.5
Bug reported about Location Demo and
Audio Recording
HTC Flyer 2.3.4 13/16 81.25
Bug reported about Picture Taking and
Audio Recording
Sony Xperia U 2.3.7 13/16 81.25
Bug reported about Picture Taking,
Audio Recording and Notifications
Android Cloud Devices (perfectomobile.com)
Motorola Droid
Bionic
4.1.2 16/16 100

Huawei Ascend P1 4.0.3 15/16 93.75 Bug reported about Audio Recording
ZTE Avid 4G 4.0.4 16/16 100

ASUS Nexus 7 4.2.1 16/16 100

Android Cloud Devices (scirocco-cloud.com/en)
Pantone 6 4.1.2 16/16
100



Fizemos alguns testes em outros aparelhos no indicados na lista, como por exemplo o tablet
Motorola XOM e tivemos xito, porm com alguns tablets da SAMSUNG testados tivemos
problemas pois NO tinham suporte ao NEON, portanto nem todos os aparelhos rodando
ANDROID so suportados, verifique sempre se o aparelho que deseja rodar a aplicao tenha
suporte a NEON e se encontra em uma das verses do ANDROID indicadas pela Embarcadero.

COMPONENTE BOTO
Palheta Standard \ TButton

Propriedade
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

48 de 79

Text = Texto do Boto


Evento OnClick
Evento que ativado quando um boto recebe um click.

Exemplo uma caixa de mensagem chamada atravs do click do boto.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

49 de 79




STYLE LOOKUP
Essa propriedade determina a aparncia do componente, ela fundamental pois atravs
dela que o compilador ir determinar a aparncia dos controles de acordo com o Sistema
Operacional do Celular (IOS ou ANDROID).
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

50 de 79


Exemplo de um Boto configurado como boto de informao no Android

Mesmo boto configurado como boto de informao no Iphone


Boto Delete no Android

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

51 de 79

Boto Delete no Iphone


Ancoragem de Componentes
A propriedade Anchors determina o sistema de ancoragem que o aplicativo usar para o
componente, voc pode ancorar um componente usando as posies: left (esquerda), right(
direita), top (superior) e bottom (inferior). A ancoragem serve quando o tamanho da tela do
aplicativo redimensionada (troca de dispositivo por exemplo) ele indicar como o
componente dever se comportar.

Componente Edit
Componente caixa de texto.
Palheta Standard \ TEdit
Propriedades
Text = texto do Edit
KeyBoardType = Tipo do Teclado que ser mostrado.

Exemplo de um Edit configurado como vktEmailAddress

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

52 de 79



Exemplo de um Edit configurado como vktNumberPad



Exemplo de um APP
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

53 de 79

Construa uma aplicao com uma Label, um Edit e um boto conforme modelo acima,
configure o tipo do teclado como VktDefault, troque propriedade name do Edit para
EDTNOME
No click do boto mostraremos uma mensagem com o que foi digitado e alteraremos o texto
do Edit via cdigo.
Exemplo de cdigo do click do boto


COMPONENTE RADIOBUTTON
O rdio Button usado para selees de opes, em grupos de radiosbuttons somente um
pode ser selecionado
Palheta Standard \ TRadioButton


A propriedade TEXT altera o texto do mesmo e o evento ONClick disparado sempre que ele
selecionado.
A propriedade ISCHECKED do tipo boolean (true ou false) determina se ele est selecionado ou
no.
Voc s pode ter um radiobutton selecionado por grupo, utilize a propriedade GroupName
para criar os grupos desejados.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

54 de 79


Exemplo de um APP que voc configura o tipo do teclado em tempo de execuo
Neste APP foram adicionados 3 radios buttons, a propriedade TEXT de cada um foi alterada de
acordo com a funo que ele ir executar (esse texto livre)


Em cada OnClick dos radios foi adicionado um cdigo para alterar o tipo do teclado do Edit.

Cdigo do OnClick dos Radios Buttons
O tipo de teclado foi trocado via cdigo, o nmero entre parnteses o indice do tipo
escolhido, consulte o Help para esta listagem de cdigos.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

55 de 79


Componente TOOLBAR
Palheta Standard \ TtoolBar



II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

56 de 79

Adicione uma Label na ToolBar e configure o StyleLookup para toollabel

Configure a propriedade Align para AlCenter


Exemplo da ToolBar em um ambiente IOS



Exemplo de boto em uma ToolBar com StykeLookup configurado para
addtoolbuttonbordered no ambiente IOS

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

57 de 79



Mesmo exemplo em um ambiente Android



COMPONENTES TABCONTROL

O TabControl proporciona a criao de TABS (ABAS)

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

58 de 79



Para adicionar as Abas clique com o boto direito sobre o componente e escolha a opo Items
Editor...



Adicione a quantidade de TabItem que desejar

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

59 de 79


Propriedades

TabPosition = Posio que ser mostrada as tabs.


Exemplo de TabPosition configurada como tpTop


Exemplo de TabPosition configurada como tpBottom


Exemplo de TabPosition configurada como tpDots
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

60 de 79



O TabPosition em tpNone no mostra nenhuma opo visual para troca de Abas, a mesma
pode ser feita atravs de cdigo.
Tabindex = Propriedade que indica qual Aba est ativa no momento.



II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

61 de 79



Propriedades da TABITEM
Text = Texto da TabItem


Ao clicar sobre um TabItem a tabControl altera a sua TabIndex automaticamente em tempo de
projeto no Delphi.
Exemplo de uma App com uma label por TAB
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

62 de 79







II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

63 de 79


COMPONENTE LISTBOX
Palheta Standard \ TListBox


Manual interessante sobre o componente:
http://docwiki.embarcadero.com/RADStudio/XE5/en/Mobile_Tutorial:_Using_ListBox_Compo
nents_to_Display_a_Table_View_(iOS_and_Android)


II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

64 de 79


Configure a propriedade Align como AlClient para que o componente se ajuste a tela.

Adicionando ITEMS manualmente

Clique com o boto direito sobre o componente e escolha a opo Items Editor


Escolha a opo TListBoxItem e clique em Add Item

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

65 de 79







Cada item pode ser configurado separadamente, para isso clique sobre o Item desejado
Propridades
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

66 de 79

Text = Texto Principal do ITEM
TextAlign = Alinhamento do texto principal (taLeading, tacenter e tatrailing)
ItemData
Accessory = Acessrio que ser usado no item (checkmark, detail...)
Bitmap = Imagem com o cone do Item
Detail = Texto secundrio do item (detalhe)
Text = Texto do Item, mesmo da propriedade TEXT
StyleLookup = Esta propriedade indica aparencia do ITEM, determinando se ter ou no detail,
a posio do detail entre outras opes.



EXEMPLO PARA ADICIONAR ITENS VIA CDIGO
O exemplo abaixo foi adicionado no evento OnCLick da Aba Palestras, adicionando 4 itens
manualmente
procedure TForm2.TabItem1Click(Sender: TObject);
var
ListBoxItem:TListBoxItem;//declarando a varivel que sera usada
begin
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

67 de 79

ListBoxPalestras.BeginUpdate;

ListBoxPalestras.Items.Clear; //limpando a listbox

//instanciando um novo ListBoxItem
ListBoxItem := TListBoxItem.Create(ListBoxPalestras);
//Configurando o texto principal
ListBoxItem.Text := 'PALESTRA A';
//configurando a aparencia para ter o texto de detalhe
ListBoxItem.StyleLookup:='listboxitembottomdetail';
//configurando o texto detalhe
ListBoxItem.ItemData.Detail:='Palestrante A';
//adicionando o item a listbox
ListBoxPalestras.AddObject(ListBoxItem);

ListBoxItem := TListBoxItem.Create(ListBoxPalestras);
ListBoxItem.Text := 'PALESTRA B';
ListBoxItem.StyleLookup:='listboxitembottomdetail';
ListBoxItem.ItemData.Detail:='Palestrante B';
ListBoxPalestras.AddObject(ListBoxItem);

ListBoxItem := TListBoxItem.Create(ListBoxPalestras);
ListBoxItem.Text := 'PALESTRA C';
ListBoxItem.StyleLookup:='listboxitembottomdetail';
ListBoxItem.ItemData.Detail:='Palestrante C';
ListBoxPalestras.AddObject(ListBoxItem);

ListBoxItem := TListBoxItem.Create(ListBoxPalestras);
ListBoxItem.Text := 'PALESTRA D';
ListBoxItem.StyleLookup:='listboxitembottomdetail';
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

68 de 79

ListBoxItem.ItemData.Detail:='Palestrante D';
ListBoxPalestras.AddObject(ListBoxItem);

ListBoxPalestras.EndUpdate;
end;



ADICIONANDO UMA CAIXA DE PESQUISA NA LISTBOX
Clique com boto direito sobre a listbox, escolha a opo Add Item \ TSearchBox

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

69 de 79






II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

70 de 79

ADICIONANDO LISTBOXGROUPHEADER
Declare uma varivel do tipo TLISTBOXGROUPHEADER
Exemplo de como adicionar via cdigo
ListBoxGroupheader:=TListBoxGroupHeader.Create(ListBoxPalestras);
ListBoxGroupheader.Text:='TERA';
ListBoxPalestras.AddObject(ListBoxGroupheader);




II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

71 de 79


USANDO MLTIPLOS FORMULRIOS
Para que seu aplicativo tenha mltiplas telas necessrio adicionar novos formulrios ao seu
projeto, para isso clique no Menu File \ New \ FireMonkey Mobile Form - Delphi


Escolha a opo HD FireMonkey Form e clique em OK

Ser criado uma nova Unit e um novo formulrio no projeto
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

72 de 79



Para salvar essa Unit : Menu File \ Save
Altere a propriedade NAME (NOME) do formulrio para FSEGUNDO


II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

73 de 79

No formulrio principal adicione um boto para chamarmos o FSEGUNDO


E adicione o cdigo abaixo no evento OnClick

Neste exemplo acima estamos chamando a funo do Show do Formulrio FSegundo que a
funo que mostra o formulrio na tela.
Na primeira compilao obteremos um erro que o Fsegundo no foi encontrado na lista de
USES, ou seja, se vamos utiliz-lo precisamos indicar sua unit na lista de Uses do nosso
formulrio principal, porm o delphi pode adicion-lo automaticamente, para isso resposta
YES na pergunta se deseja adicion-lo.

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

74 de 79


Compile novamente para testar.

Para fechar o formulrio aberto precisamos adicionar um cdigo, no exemplo abaixo adicionei
um boto em uma toolbar e configurei o stylelookup dele para backtoolbutton

No onclick desse boto apenas adicionei o cdigo abaixo:




II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

75 de 79

TMEMO
Componente utilizado para trabalhar com mltiplas linhas de insero de texto.
Palheta Standard \ Tmemo


Principais propriedades

Lines: Linhas do texto, tipo TSTRINGS (estudar a classe TStrings)
Text: Texto de todas as linhas, incluindo as quebras de linhas (#13 e #10)
WordWrap: Indica se o texto quebrar linha automaticamente ou no.
TextAlign: Alinhamento do Texto
ReadOnly: Indica somente Leitura
Enabled: Indica se est ativado ou no
CharCase: Indica se usar tudo maiscula, tudo minscula ou normal.

Exemplo de como inserir informaes na propriedades Lines Via Cdigo
MemoiNFO.Lines.clear; //limpa o texto da lines
MemoiNFO.Lines.Add('texto que deseja inserir); //insere uma linha com texto
MemoiNFO.Lines.Add('texto em outra linha'); //insere uma linha com texto

ACESSANDO COMPONENTES DE OUTROS FORMULRIOS
Digite o nome do Formulrio . Nome do Componente . Nome da Propriedade
Exemplo
Finfo.memoinfo.lines.clear;
Finfo.memoinfo.lines.add(teste);

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

76 de 79

TIMAGEVIEWER
Palheta Additional \ TImageViewer
Componente usado para mostrar imagens.
Propriedades
BITMAP: Escolha a opo Edit


Clique no boto LOAD da janela Bitmap Editor e escolha a imagem que deseja.


GESTURES
Palheta Gestures \ TGestureManager

II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

77 de 79


Para ativar o Gesture clique no Formulrio (utilize a palheta Structure caso o mesmo esteja
com muitos componentes na tela dificultando clicar em uma rea vazia).



Na propriedade Touch \ GestureManager escolha o componente j adicionado no formulrio.

Na propriedade Touch \ Gestures \ Standard escolha os gestures que deseja ativar


No evento OnGesture do Formulrio codifique a ao desejada para cada gesture.
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

78 de 79



Esse evento tem um parmetro EventInfo que indica as informaes do Gesture que ocorreu


Acessando a propriedade GestudeID do mesmo conseguimos saber qual gesture ocorreu. No
exemplo abaixo verifique se foi o Gesture sgiLeft (para esquerda) ou o evento sguRight (para
direita) e de acordo com o Gesture eu chamo o click do boto correspondente.

Existem diversos movimentos de gestures, eles foram mapeados e nomeados como
constantes. Segue abaixo a lista:
II JTI-MS Mini Curso - APLICATIVOS MOBILE PARA ANDROID E IOS COM DELPHI XE 5

79 de 79



possvel tambm capturar o nome do Gesture ocorrido em uma string e trabalhar com ele.
Exemplo do cdigo:

No cdigo acima a funo GestureToIdent converte o GestureID (cdigo do gesture) em uma
string de nome S (ela deve ter sido declarada), aps isso posso testar o nome do gesture
executado, caso a funo retorne FALSE porque ela no conseguiu detectar o gesture.

Você também pode gostar