Delphi - Actualización de campo en un dbGrid mientras que la selección está en otra fila

StackOverflow https://stackoverflow.com/questions/3138774

  •  01-10-2019
  •  | 
  •  

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!

¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top