Delphi - Actualización de campo en un dbGrid mientras que la selección está en otra fila
Pregunta
Tengo una dbGrid con filas X. Quiero actualizar un campo de valor en la segunda fila con un contador de tiempo (por ejemplo, mostrar una cuenta atrás). Eso no es problema, pero yo quiero ser capaz de cambiar la fila seleccionada y mantener la actualización de la segunda fila. Cuando los cambios de selección en la red, el registro actual del conjunto de datos conectado también cambia, y eso es un problema porque el código en los puntos de temporizador para el registro seleccionado.
¿cómo puede ser resuelto? Gracias!
Solución
Si el conjunto de datos conectado a dbGrid es TClientDataSet, se puede eliminar otro clon de datos TClientDataSet y del conjunto de datos de red.
Dado que ambos conjuntos de datos se apuntan a los mismos datos, puede cambiar los valores del conjunto de datos clonado, y que los datos se mostrará en dbGrid sin alterar DBGrids conjunto de datos.
Otros consejos
Trate de este enfoque muy sencillo:
if DataSource1.DataSet.State in dsEditModes then
DataSource1.DataSet.Post; { or Cancel, depends on your needs }
try
DataSource1.DisableControls;
Bookmark := ClientDataSet1.GetBookmark;
try
if ClientDataSet1.Locate(SecondRowId, 'Id', []) then
begin
ClientDataSet1.Edit;
ClientDataSet1['Counter'] := Counter;
ClientDataSet1.Post;
end;
ClientDataSet1.GotoBookmark(Bookmark);
finally
CLientDataSet1.FreeBookmark(Bookmark);
end;
finally
DataSource1.EnableControls;
end;