Landerson Gomes
DELPHI
Compartilhe
interagindo. A soluo abordada nesta postagem visa solucionar este pequeno contratempo que
nossos usurios podem fatidicamente estar sujeitos.
MessageDlg:Funciona ou no???
Desenvolvedor Delphi de longa data tem conhecimento da funo MessageDlg. Na VCL publicada
na unit Dialogs, a funo capaz de retornar para a aplicao o valor da resposta dada pelo
usurio a uma determinada pergunta na caixa de mensagem. Veja abaixo um exemplo da sua
utilizao em aplicaes VCL:
1 procedureTForm1.Button1Click(Sender:TObject);
2 begin
3 ifMessageDlg('EstaaMessageDlg.Vocjaconhecia?',
4 mtConfirmation,[mbYes,mbNo],0,mbYes)=mrYesthen
5
6 end;
Um pouco mais sobre MessageDlg voc pode encontrar na Embarcadero DocWiki e uma tima
referncia tambm encontrada na Delphi Basics.
Ento para solucionar este caso, ao utilizarmos MessageDlg para desenvolvermos Mobile no
Delphi XE5 devemos declarar este tipos com Namespaces completos como: TMsgDlgType
eTMsgDlgBtn. Veja abaixo como ficaria a declarao da funo:
1 MessageDlg('Desejarealmentefecharaaplicao?',
2 TMsgDlgType.mtConfirmation,[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo],
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 2/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
2 TMsgDlgType.mtConfirmation,[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo],
3 0,TMsgDlgBtn.mbNo)
Button1
Align -> alBottom
Text -> Sair
TextAlign -> taCenter
Image1
Align -> alClient
MultiResBitmap -> [selecione uma imagem de sua preferncia]
WrapMode ->iwStretch
Com isso definimos a forma em que a aplicao ser vista por nosso usurio, ao final teremos algo
muito prximo da imagem abaixo:
1 procedureTForm1.Button1Click(Sender:TObject);
2 begin
3 Close;
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 3/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
2 begin
3 Close;
4 end;
Para podermos fazer uso da funo do Android de encerrar a Activity da Aplicao precisamos
declarar o Namespace FMX.Helpers.Android na clusula uses da seo implementation da Unit de
nosso formulrio:
1 implementation
2
3 usesFMX.Helpers.Android;
4
5 {$R*.fmx}
1 procedureTForm1.FormCloseQuery(Sender:TObject;varCanClose:Boolean
2 begin
3 ifMessageDlg('Desejarealmentefecharaaplicao?',
4 TMsgDlgType.mtConfirmation,[TMsgDlgBtn.mbYes,TMsgDlgBtn.mbNo],
5 begin
6 CanClose:=True;
7 SharedActivity.finish
8 end
9 else
10 begin
11 CanClose:=False;
12 ShowMessage('Vocrespondeuno');
13 end;
14 end;
Note que temos at a puro cdigo Delphi, a exceo da linha SharedActivity.Finish que vem
nativamente do Android sendo responsvel por retirar nosso apk de execuo.
MessageDlg
selecionado boto
Yes
Relacionado:
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 4/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Delphi XE7 Android e Dialogs, o Intents com Delphi XE5 Obtendo o nmero do telefone
que mudou? comunicando Apps atravs do Android com Delphi XE5
Em "Delphi" Android Em "Delphi"
Em "Delphi"
Dionemar
JULHO 27, 2014 S 20:50
timo Post Landerson! Mais uma vez Parabns por seu trabalho!
Antonio
AGOSTO 21, 2014 S 16:22
Landerson, muito bom o exemplo! Comigo, rodando no XE6, sempre encerra a aplicao
independentemente de clicarmos em Yes ou No Estranho. Alguma sugesto?
Landerson Gomes
AGOSTO 22, 2014 S 12:53
Antnio mais uma vez obrigado pela presena! Estou instalando o XE6 numa VM aqui,
vou tentar reproduzir o exemplo e te posiciono.
Abrao.
Nilton
OUTUBRO 8, 2014 S 00:52
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 5/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Landerson Gomes
OUTUBRO 8, 2014 S 05:43
{DialogStrings}
SMsgDlgWarning='Warning';
SMsgDlgError='Error';
SMsgDlgInformation='Information';
SMsgDlgConfirm='Confirm';
SMsgDlgYes='Yes';
SMsgDlgNo='No';
SMsgDlgOK='OK';
SMsgDlgCancel='Cancel';
SMsgDlgHelp='Help';
SMsgDlgHelpNone='Nohelpavailable';
SMsgDlgHelpHelp='Help';
SMsgDlgAbort='Abort';
SMsgDlgRetry='Retry';
SMsgDlgIgnore='Ignore';
SMsgDlgAll='All';
SMsgDlgNoToAll='NotoAll';
SMsgDlgYesToAll='Yesto&All';
SMsgDlgClose='Close';
SWindowsVistaRequired='%srequiresWindowsVistaorlater';
SUsername='&Username';
SPassword='&Password';
SDomain='&Domain';
SLogin='Login';
Alexandre
NOVEMBRO 14, 2014 S 12:40
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 6/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Obrigado,
at mais.
Landerson Gomes
NOVEMBRO 14, 2014 S 18:25
Veja o vdeo:
Alexandre
NOVEMBRO 17, 2014 S 09:59
Obrigado amigo!
J conhecia o TNotification, mas acredito que no seja ele responsvel por essa
mensagem no rodap, pelo menos todos os exemplos que olhei ele usa o titleBar para
exibir as notificaes.
A mensagem que vejo meu aparelho fazendo so mensagens no rodap, tipo quando
fao um print para rea de transferncia, duro no saber nem o nome da tecnologia,
rs!! Abrao e obrigado.
Ideilson
JULHO 9, 2015 S 19:44
ideilson.developer@gmail.com
Andreik Alexandre
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 7/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Landerson Gomes
NOVEMBRO 25, 2014 S 10:56
Ol Andreik primeiramente seja muito bem vindo ao blog!!! Como relao ao erro, o
ideal seria sinalizar qual verso do Delphi voc est utilizando.
A partir do XE6 se no me engano as mensagens passam a ser feitas para plataforma
Android utilizando outra forma.
Jucelio Moura
DEZEMBRO 5, 2014 S 11:26
var
loCanClose: Boolean;
begin
MessageDLG(Deseja realmente fechar a aplicao?,
system.UITypes.TMsgDlgType.mtConfirmation, [
system.UITypes.TMsgDlgBtn.mbYes,
system.UITypes.TMsgDlgBtn.mbNo],0,
procedure (const AResult : TModalResult)
begin
case AResult of
mrYes : begin
loCanClose:= True;
SharedActivity.finish
end;
else
loCanClose := False;
end;
end);
CanClose := loCanClose;
Filipe Branquinho
JANEIRO 16, 2015 S 18:04
Boa tarde
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 8/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Landerson Gomes
JANEIRO 19, 2015 S 11:09
Ol Filipe obrigado pela parabenizao! Primeiramente seja bem vindo! Bom t-lo
interagindo com as postagens e mais ainda saber que est sendo til, esse o
propsito!
D uma olhada a:
http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Dialogs.MessageDlg. Eu
estava preparando uma postagem sobre o assunto, talvez eu retome e coloque no ar
em breve.
EDITADO > Acabei de finalizar o post, fica a o link: DELPHI XE7 ANDROID E
DIALOGS, O QUE MUDOU?
Vinicius
MAIO 25, 2015 S 13:26
Ol Landerson. Estou com um problema para encerrar meu app. Aps X minutos
estou mandando fechar com o comando close no form principal. Para isso utilizo um
Ttimer. Se eu estou com o app ativo em primeiro plano, est funcionando normal,
mas se o app est em 2 plano no est rolando. Depois do tempo passaram-se abrir
o app e ele est travado, fica numa tela preta. Pelo jeito o close est funcionando em
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 9/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
partes. Tenho a sensao que o form fecha mas o app no. Aps esperar um tempo
at o SO perguntar se que fechar o app, quando respondo sim. Meu app abre. Voc
sabe outra maneira de encerrar um app? Vou tentar um application.Terminate. Mas
no sei ainda se p Android aceita. Obrigado pela ateno. Abs. Vinicius
Maicon
AGOSTO 6, 2015 S 08:01
try
DM.CONEXAO.Connected := False;
Self.Hide;
SharedActivity.Finish;
MainActivity.finish;
Application.MainForm.DisposeOf;
except
on E : Exception do
begin
Application.MainForm.DisposeOf;
end;
end;
Reijanio
OUTUBRO 31, 2015 S 19:21
Fiz da forma que vc mostrou eno meu delphi xe5 da a seguinte mensagem
Landerson Gomes
NOVEMBRO 14, 2015 S 21:37
Ol Reijanio, o exemplo em questo foi feito com o Delphi XE5, no me recordo o Android
do aparelho na poca o que pode ser um diferencial, entretanto gostaria de sugerir um
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 10/11
27/11/2015 EncerraraplicaoAndroidatravsdeCaixadeDilogocomDelphiXE5|LandersonGomes
Sodr
NOVEMBRO 1, 2015 S 12:07
Landerson Gomes
NOVEMBRO 14, 2015 S 21:34
http://vivaitaocara.com.br/landersongomes/embarcadero/delphi/encerraraplicacaoandroidatravesdecaixadedialogocomdelphixe5 11/11