Buenas tardes gente linda.
Tengo un método que recibe por parámetro una consulta SQL, ejecuto la consulta, trae los datos y formateo un Stringgrid para mostrar el resultado.
Lo que quería hacer es meter en un hilo para evitar que se congele la interfaz grafica cuando los datos a traer son bastante, lo que dejo a continuación me trae los datos la primera vez que lo llamo pero cuando edito algún registro y llamo nuevamente a este método me tira un error y se me cierra el sistema.
Obviamente algo estoy haciendo mal, pero mi escaso conocimiento sobre hilos no me deja encontrar el error, uso Delphi 10.1 Berlin, Firemonkey y firebird.
procedure Tfrm_Edicion.Carga(Consulta: String); begin TThread.CreateAnonymousThread( procedure begin // Lo pirmero - limpiamos la grilla grilla.Clear; with dmdatos.qConsulta do begin close; sql.Clear; sql.add(Consulta); open; if not eof then begin grilla.BeginUpdate; TThread.Synchronize(TThread.CurrentThread, procedure var i: Integer; begin grilla.columncount := dmdatos.qConsulta.Fields.Count; grilla.RowCount := dmdatos.qConsulta.recordcount+1; FetchOptions.RowsetSize := grilla.RowCount; lblRegistros.Text := 'Registros: ' + inttostr(grilla.RowCount); for I := 0 to fields.Count-1 do grilla.Cells[i,0] := Fields.Fields[i].FieldName; First; while not EOF do begin for i := 0 to (dmdatos.qConsulta.Fields.Count - 1) do grilla.Cells[i,RecNo] := FieldByName(dmdatos.qConsulta.Fields.Fields[i].FieldName).AsString; Next end; grilla.EndUpdate; end ); end; wait('',False); end; end).Start; end;