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

Vinício Rocha

Пользователи
  • Постов

    2
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Vinício Rocha

  1.  

    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,
    

     

×
×
  • Создать...