PDA

Ver la Versión Completa : Mostrar ProgressBar o GIF Animado Mientras Se Llena/Lee CliendDataSet


Beaker_
22-05-2012, 23:02:57
Que tal, probablemente este es un tema ya algo común, he buscado y encontrado algunas cosas, pero nada concreto y/o que me pueda ayudar.
La cuestión es la siguiente: tengo un ClientDataSet, al cual le cargo datos y/o lo leo. Lo que quisiera hacer es que mientras lo vaya leyendo o cargando, me muestre en una ventana aparte, el progreso de la lectura del ClientDataSet, cuánto falta y cuando haya terminado de leer o cargar el ClientDataSet, cerrar la ventana del ProgressBar.
No sé si sea posible y/o que tan complicado y si alguién me pudiera y quisiera ayudar. No tengo ni la menor idea de cómo saber cuánto falta para que termine de leer el ClientDataSet.
Otra cosa que tengo en mente es lo mismo, pero en vez de usar un ProgressBar, mostrar un GIF animado que dijera CARGANDO o algo así, sólo que no sé si se pueden cargar GIFs animados en DELPHI y cómo saber cuando se termine de leer el ClientDataSet.
Les agradezco mucho su tiempo y su atención

ecfisa
22-05-2012, 23:23:48
Hola Beaker_.

Con respecto a mostrar un Gif animado, creo que este enlace (http://www.clubdelphi.com/foros/showthread.php?t=75261) te será útil.

Saludos.

Beaker_
23-05-2012, 16:14:16
Muchas gracias, acabo de revisar el post y es muy parecido a lo que necesito con GIF.
Esto fue lo que hice: cargué la imagen en una nueva Forma, y antes de empezar a agregar deseo mostrar la forma, y cuando termine de agregar, destruyo la forma.
El problema es que, si lo hago usando la propiedad Visible de la forma, me la muestra, pero no me muestra el GIF, aunque si se cierra cuando termina de leer el ClientDataSet, si lo hago con la propiedad Show pasa lo mismo, si lo hago con la propiedad Showmodal si muestra el GIF, el problema es que usando esta propiedad, no empieza a leer/cargar el ClientDataSet hasta que cierre la ventana yo...

ecfisa
23-05-2012, 17:05:09
Hola.

Creo que sería mas simple si utilizaras por ejemplo un TPanel inicialmente invisible, con el TImagen dentro, lo hicieras visible al comenzar la carga y lo ocultaras al finalizar.

Pero si deseas utilizar un form, creo que podrías hacer:

Form1

...
uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Form2:= TForm2.Create(Self);
try
Form2.Show;
// Aquí el código de la copia (o llamada al procedimiento de copia)
for i:= 1 to 1000 do
begin
Application.ProcessMessages; // Es importante que el procedimiento incluya esta línea
Sleep(10)
end;
finally
Form2.Free
end
end;
...


Form2

...
uses GIFImage;

procedure TForm2.FormCreate(Sender: TObject);
begin
Image1.Align:= alClient;
Image1.Stretch:= True;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
Image1.Picture.LoadFromFile('C:\TU_RUTA\TU_GIFANIMADO.GIF');
end;
...


Saludos.

Casimiro Notevi
23-05-2012, 17:05:51
¿Informas, preguntas, comentas?, creo que no se ha entendido bien lo que has querido decir :)

A buen entendedor... y ecfisa lo ha entendido, parece ;)

ElDioni
23-05-2012, 17:06:50
¿Podrías poner el código que estás utilizando?

Saludos.

ElDioni
23-05-2012, 17:08:33
:eek::eek:

Que compenetración, nos hemos puesto los tres de acuerdo a la hora de responder.

Saludos.