Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
vortuas Novato

Registrado: Quinta-Feira, 28 de Agosto de 2014 Mensagens: 6
|
Enviada: Qua Jul 01, 2015 1:53 pm Assunto: ShowModal não funciona! |
|
|
Usava o XE7 e funcionava muito bem como procedure anônima, mas desde que atualizei para o XE8 nenhum show modal mais funciona pro android!
Dá um erro de:
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views
Já procurei muito na internet e não achei uma solução pra isso, inclusive no stackoverflow achei um tópico falando sobre isso dizendo pra eu mudar a propriedade de BorderStyle para Single, mas não funcionou! Será que alguém pode me ajudar? |
|
Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Qua Jul 15, 2015 1:32 am Assunto: |
|
|
Consegui ver a solução para isso no xe8 olhando este link aqui:
http://community.embarcadero.com/index.php/forum/programming/781-showmodal-on-osx-delphi-xe8
Me parece que o formulário deve ser declarado dentro do evento onde o showmodal vai ser disparado
exemplo:
Código: | procedure Tform1.button1Click(sender:Tobject);
var
frm : TForm2; // <-- aqui estar o segredo
begin
frm:= TForm2.Create(nil);
frm.ShowModal(procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
frm.DisposeOf;
end);
end; |
Mas fique muito decepcionado em ver que o showmodal é fechado ao clicar no botão voltar do Android por isso criei eu mesmo meu próprio modal. _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
 |
deodorojunior Novato

Registrado: Quarta-Feira, 15 de Julho de 2015 Mensagens: 5
|
Enviada: Qua Jul 15, 2015 2:35 pm Assunto: |
|
|
No lugar do showmodal usa só show
tipo assim:
if fmenuPedidos = nil then //verifica se já está na memoria ou nao
fmenuPedidos := TfmenuPedidos.Create(Application);
fmenuPedidos.Show; //exibe
 _________________ .
.
.
Aplicativos no Google Play > https://play.google.com/store/search?q=deodorojunior |
|
Voltar ao Topo |
|
 |
xyber9 Novato


Registrado: Terça-Feira, 10 de Julho de 2012 Mensagens: 30
|
Enviada: Qua Jan 06, 2016 3:32 pm Assunto: |
|
|
strak2012 escreveu: | Consegui ver a solução para isso no xe8 olhando este link aqui:
http://community.embarcadero.com/index.php/forum/programming/781-showmodal-on-osx-delphi-xe8
Me parece que o formulário deve ser declarado dentro do evento onde o showmodal vai ser disparado
exemplo:
Código: | procedure Tform1.button1Click(sender:Tobject);
var
frm : TForm2; // <-- aqui estar o segredo
begin
frm:= TForm2.Create(nil);
frm.ShowModal(procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
frm.DisposeOf;
end);
end; |
Mas fique muito decepcionado em ver que o showmodal é fechado ao clicar no botão voltar do Android por isso criei eu mesmo meu próprio modal. |
Na verdade não precisa disso, é só você capturar as teclas do Android e não deixar usar o voltar com o form aberto, assim que faço e funciona na boa. |
|
Voltar ao Topo |
|
 |
profase Novato

Registrado: Terça-Feira, 8 de Agosto de 2017 Mensagens: 7 Localização: São Paulo
|
Enviada: Qui Set 20, 2018 6:06 pm Assunto: showmodal android AJUDA |
|
|
strak2012 escreveu: | Consegui ver a solução para isso no xe8 olhando este link aqui:
http://community.embarcadero.com/index.php/forum/programming/781-showmodal-on-osx-delphi-xe8
Me parece que o formulário deve ser declarado dentro do evento onde o showmodal vai ser disparado
exemplo:
Código: | procedure Tform1.button1Click(sender:Tobject);
var
frm : TForm2; // <-- aqui estar o segredo
begin
frm:= TForm2.Create(nil);
frm.ShowModal(procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then
frm.DisposeOf;
end);
end; |
Mas fique muito decepcionado em ver que o showmodal é fechado ao clicar no botão voltar do Android por isso criei eu mesmo meu próprio modal. |
Caro Amigo, estou tendo dificuldades com forms modais no android, mais precisamente com showmodal.
Pode me ajudar? |
|
Voltar ao Topo |
|
 |
profase Novato

Registrado: Terça-Feira, 8 de Agosto de 2017 Mensagens: 7 Localização: São Paulo
|
Enviada: Qui Set 20, 2018 6:53 pm Assunto: showmodal android AJUDA |
|
|
Estou com esta dificuldade, aguardar o shomodal, pra android, fechar e somente
apos isso prosseguir com a execucao da aplicacao...
Nesta rotina, o showmodal nao aguarda o fechamento do form2:
procedure TForm1.Button1Click(Sender: TObject);
var
frm2: TForm2;
begin
frm2 := TForm2.Create(nil);
ShowMessage('Antes frm2.ShowModal...');
frm2.ShowModal( procedure(ModalResult: TModalResult)
begin
if ModalResult = mrOK then ShowMessage('OK...');
// frm2.DisposeOf;
end);
//-continua processando a partir daqui mesmo com o frm2 aberto e em execucao.
// nao bloqueia ou aguarda o fechamento do frm2, como um showmodal VCL o faria.
//- se habilitar a linha abaixo, Trava a aplicacao aqui, pois fica inacessivel
// a manipulacao de frm2 pra mudar o valor de ModalResult e poder fecha-lo.
// entra em loop infinito....
//while ModalResult=mrNone do Application.ProcessMessages;
//-Mensagem exibida mesmo com o form2 aberto e em execucao.
ShowMessage('Depois frm2.ShowModal...');
// nao pode.
//Nescessito de um estado de espera ate fechar o form2 de onde
//leio variaveis ou componentes com informacoes pra serem preocessadas pela
//aplicacao
ShowMessage('Retorno: '+frm2.Edit1.Text);
frm2.DisposeOf; //ou no evento onclose, Action := TCloseAction.caFree;
end;
end;
*******************************
neste exemplo funciona perfeitamente, só que nao é um showmodal mas bem parecido:
Function mensagemConfirmacao(pMensagem : String):TModalResult;
var
MR : TModalResult;
begin
ShowMessage('Antes MessageDlg...');
MessageDlg(pMensagem,
System.UITypes.TMsgDlgType.mtConfirmation,
[System.UITypes.TMsgDlgBtn.mbYes,System.UITypes.TMsgDlgBtn.mbNo],
0,
procedure(const AResult: TModalResult)
begin
MR:=AResult;
end);
while MR=mrNone do Application.ProcessMessages;
Result:=MR;
ShowMessage('Apos MessageDlg...');
end;
como fazer para obter um estado de espera/aguardo ate o fechamento do formmodal?
/----------------------------/
Agradecido antecipadamente.
Paulo. |
|
Voltar ao Topo |
|
 |
|