Перейти к содержанию
Fire Monkey от А до Я

Erro: Não é possível reciclar a cena para 'TContextIOS' Delphi Rio


Vinício Rocha

Рекомендуемые сообщения

 

Good Morning,

 

Using TfgActivityDialog on iOS when finalizing the thread often returns this error.

Here is the code snippet:

 

 

if not TabGlobal.dlgAguarde.IsShown then
    begin
      FDialogThread := TThread.CreateAnonymousThread(procedure
        begin
          try
            TThread.Synchronize(nil, procedure
              begin
                TabGlobal.dlgAguarde.Message := 'Salvando informações.';
                TabGlobal.dlgAguarde.Show;
              end);
            try
              CM2   := TCM2.Create(nil);
              Lista := TFDJSONDataSets.Create;
              TabGlobal.QryDetalheMembro.Post;
              TFDJSONDataSetsWriter.ListAdd(Lista, 'membros', TabGlobal.QryDetalheMembro);
              Codigomembro := CM2.SMClient.AtualizaInformacoesMembro2(iEdicao,iCelula,Lista);
              if iEdicao = 'I' then
                begin
                  TabGlobal.QryDetalheMembro.Edit;
                  TabGlobal.QryDetalheMembromem_codigo.Value := Codigomembro;
                  TabGlobal.QryDetalheMembro.Post;
                  if iCelula > 0 then
                    begin
                      with TabGlobal.QryComando do
                        begin
                          Active := False;
                          SQL.Clear;
                          SQL.Add('insert into celulasdiscipulos');
                          SQL.Add('(cel_codigo, cel_item, mem_codigo)');
                          SQL.Add('values');
                          SQL.Add('(:cel_codigo, :cel_item, :mem_codigo)');
                          ParamByName('cel_codigo').AsInteger := iCelula;
                          ParamByName('cel_item').AsInteger   := RetornaAutoIncremento('celulasdiscipulos','cel_item','cel_codigo = '+ IntToStr(iCelula),1);
                          ParamByName('mem_codigo').AsInteger := Codigomembro;
                          ExecSQL;
                        end;
                      {$IF DEFINED(ANDROID)}
                        FiltraCelulasMembros(iCelula,'');
                      {$ENDIF}
                    end;
                end;
              with TabGlobal.QryComando do
                begin
                  Active := False;
                  SQL.Clear;
                  SQL.Add('update membros set');
                  SQL.Add('mem_batizado = "'+Copy(cmbBATIZADO.Items[cmbBATIZADO.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezencontro = "'+Copy(cmbFEZENCONTRO.Items[cmbFEZENCONTRO.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezclassebatismo = "'+Copy(cmbCURSOBATISMO.Items[cmbCURSOBATISMO.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezescoladelideres = "'+Copy(cmbCURSOLIDERES.Items[cmbCURSOLIDERES.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezcursosupervisao = "'+Copy(cmbCURSOSUPERVISORES.Items[cmbCURSOSUPERVISORES.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezcursoobreiro = "'+Copy(cmbCURSOOBREIROS.Items[cmbCURSOOBREIROS.ItemIndex],1,1)+'",');
                  SQL.Add('mem_fezcursoteologia = "'+Copy(cmbCURSOTEOLOGIA.Items[cmbCURSOTEOLOGIA.ItemIndex],1,1)+'",');
                  SQL.Add('mem_consolidacao1 = "'+Copy(cmbCONSOLIDACAO1.Items[cmbCONSOLIDACAO1.ItemIndex],1,1)+'",');
                  SQL.Add('mem_consolidacao2 = "'+Copy(cmbCONSOLIDACAO2.Items[cmbCONSOLIDACAO2.ItemIndex],1,1)+'",');
                  SQL.Add('mem_consolidacao3 = "'+Copy(cmbCONSOLIDACAO3.Items[cmbCONSOLIDACAO3.ItemIndex],1,1)+'",');
                  SQL.Add('mem_consolidacao4 = "'+Copy(cmbCONSOLIDACAO4.Items[cmbCONSOLIDACAO4.ItemIndex],1,1)+'",');
                  SQL.Add('mem_consolidacao5 = "'+Copy(cmbCONSOLIDACAO5.Items[cmbCONSOLIDACAO5.ItemIndex],1,1)+'"');
                  SQL.Add('where mem_codigo = '+IntToStr(TabGlobal.QryDetalheMembromem_codigo.Value));
                  ExecSQL;
                end;
              AtualizaTotalizadoresCelula(iCelula);
              ok := True;
              CM2.DisposeOf;
            except
              on E : Exception do
                  begin
                    CM2.DisposeOf;
                    TThread.Synchronize(nil, procedure
                      begin

                        TDialogService.MessageDialog('Não foi possível salvar o membro' + sLineBreak +
                                                     'Contate a secretaria de células da sua igreja.' + sLineBreak + E.Message,
                                                     TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0, nil);
                      end);
                  end;
            end;
          finally
            if not TThread.CheckTerminated then
              TThread.Synchronize(nil, procedure
                begin
                  TabGlobal.dlgAguarde.Hide;
                  if ok then
                    Close;
                end);
          end;
        end);
      FDialogThread.FreeOnTerminate := False;
      FDialogThread.Start;
    end;
The error usually occurs when I close the form.
Anyone know how to work around this error?
Thank you,

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...