Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como mostrar barra de progreso (https://www.clubdelphi.com/foros/showthread.php?t=81156)

Jere_84 16-10-2012 16:56:23

como mostrar barra de progreso
 
Hola club, les comento que nunca hice una barra de progreso. Estoy haciendo un programa que abre el cliente mail predeterminado de la pc husped. Esto muchas veces demora algunos segundos y para que no desespere el usuario me gustaria mostrar una barra de progreso con algun label que diga Cargando... o algo por el estilo. Lo cierto es que no he encontrado mucho y los ejemplos no me sirvieron. Saben como pòdria englobar este codigo con una barra y que cuando termine de ejecutarse la barra se cargue y desaparezca. como se hace esto?

mi codigo delphi.

Código Delphi [-]
  if Sender = JfSpeedButtonEnviaEmail then
    with ppReport do
    begin
      Screen.Cursor := crHourGlass;
      EmailSettings.ShowEmailDialog := False;
      EmailSettings.ReportFormat := 'PDF';
      EmailSettings.FileName := Listado;
      EmailSettings.Subject := 'Listado de ' + vNombr;
      EmailSettings.Recipients.Text := '';
      SendMail;
      Screen.Cursor := crDefault;
    end;

Saludos.

Jere_84 16-10-2012 21:17:18

Para ser mas especifico. Necesito sincronizar el tiempo en que se demora en abrir el cliente mail, con la barra de progreso... :confused:
La linea SendMail lo que hace es abrir el programa cliente mail y crearte un mail con el listado adjunto en PDF. Si el programa ya esta abierto solo te crea la ventana de enviar mail con el archivo para que lo envies.
Como puedo sincronizar un barra sin tener un ciclo tipo while o for. Solo tengo esa linea y el tiempo que demora es relativo.

Casimiro Noteví 16-10-2012 21:32:31

No puedes hacer algo "fidedigno" porque la barra de progreso debería de presentarla "sendmail", y ahí no puedes hacer nada.
En todo caso puedes sacar un mensaje del tipo "Procesando...", "Enviando...", etc.
Ejemplo:

Código Delphi [-]
if Sender = JfSpeedButtonEnviaEmail then     with ppReport do 
    begin
  Screen.Cursor := crHourGlass;
  //
  showmessage('Procesando datos...');
  application.processmessages;
  //
  EmailSettings.ShowEmailDialog := False;
  EmailSettings.ReportFormat := 'PDF';       
  EmailSettings.FileName := Listado;       
  EmailSettings.Subject := 'Listado de ' + vNombr; 
  EmailSettings.Recipients.Text := '';
  //
  showmessage('Enviando email...');
  application.processmessages;
  //
  SendMail;       
  Screen.Cursor := crDefault;
  //
  showmessage('Proceso concluido.');
  application.processmessages;
  //
end;

De todas formas, los programas generadores de informes suelen tener componentes de ese tipo (barra progreso), revisa el tuyo por si tiene algo de eso.

Chris 17-10-2012 22:29:39

Hola!

También puedes darle un estilo adecuado a la barra de progreso. He escrito un código de ejemplo en mi blog:
http://waodelphi.wordpress.com/2012/...eso-infinitas/


La franja horaria es GMT +2. Ahora son las 16:57:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi