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,