PDA

Ver la Versión Completa : Recorrer filas de dbgrid sin q se note en el formulario


Viky
23-11-2009, 22:35:33
Tengo un dbgrid asociado a un dataset; en determinado momento debo recorrer todas las filas del primero al ultimo.

Que propiedad debo configurar para q para el usuario sea transparente este recorrido?
No quiero que se muestre en el formulario las filas q se van recorriendo.

Gracias
Viky.

Casimiro Notevi
23-11-2009, 22:57:31
dataset.disablecontrols;
...
...
dataset.enablecontrols;

Viky
24-11-2009, 00:06:10
Funciono, Muchas Gracias. Solo que no tengo q tener el foco en el dbgrid, porq o sino se nota igual q va recorriendo.


Viky.

Casimiro Notevi
24-11-2009, 09:58:57
Funciono, Muchas Gracias. Solo que no tengo q tener el foco en el dbgrid, porq o sino se nota igual q va recorriendo.
Viky.

No puede ser :)

Recuerda que tienes que deshabilitar antes de lo que vayas a hacer y habilitarlo cuando hayas terminado.
Este es un ejemplo un poco "bruto", pero para que se entienda claramente:

var suma:double;

try
dbgrid.datasource.dataset.disablecontrols;
dbgrid.datasource.dataset.first;
while not dbgrid.datasource.dataset.eof do
begin
suma := suma + dbgrid.datasource.dataset.fieldbyname('importe').asfloat;
dbgrid.datasource.dataset.next;
end;
showmessage('Total: '+floattostr(suma));
finally
dbgrid.datasource.dataset.enablecontrols;
end;

rgstuamigo
24-11-2009, 15:45:17
Tambien puedes mirar este (http://www.clubdelphi.com/foros/showthread.php?t=65070) hilo, si deseas que el registro que tienes activo no se pierda despues del recorrido.;)
Saludos...:)

agustibaldo
27-11-2009, 15:57:39
Se me ocurre, también, que puedes borrar la propiedad DataSource del DBGrid antes de empezar a recorrer los registros y volver a asignarla una vez finalizado tu proceso.
DBGrid1.DataSource := nil;
// Inicio Proceso //
...
...
...
// Fin Proceso //
DBGrid1.DataSource := Datasource;


De esta manera, no se muestra el cursor trabajando y parece como que la tabla no hace nada.
Una vez vuelto a asignar, trabajas la grilla normalmente.
Espero te sirva esto.

Saludos.

Casimiro Notevi
27-11-2009, 19:41:08
Para eso es que sirve disablecontrols y enablecontrols :)