Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
mostrar Guage mientras envio correo

hola a la familia del club, tengo un form donde envio un correo con adjunto y s me demora un poco, entonces los usuarios piensan que esta colgada... ahora me gustaria mostrar un Guage mientras ocurre este proceso... les pongo la unit para que vean y me dicen cual podria ser la solucion... a, ya busque y no encuentro nada que se ajuste a lo que necesito.

Gracias de antemano.

Código Delphi [-]
procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachment;
begin

  // Creamos el componente de conexión con el servidor
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 25;
  SMTP.AuthenticationType := atLogin;

  // Creamos el contenido del mensaje
  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;

  // Si hay que meter un archivo adjunto lo creamos y lo asignamos al mensaje
  if sAdjunto <> '' then
  begin
    if FileExists( sAdjunto ) then
      Adjunto := TIdAttachment.Create( Mensaje.MessageParts, sAdjunto );

  end
  else
    Adjunto := nil;

  // Conectamos con el servidor SMTP
  try
    SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;

  // Si ha conectado enviamos el mensaje y desconectamos
  if SMTP.Connected then
  begin
    try
      SMTP.Send( Mensaje );
    except
      raise Exception.Create( 'Error al enviar el mensaje.' );
    end;

    try
      SMTP.Disconnect;
    except
      raise Exception.Create( 'Error al desconectar del servidor.' );
    end;
  end;



procedure TFormemail.btnenviarClick(Sender: TObject); // le paso parametros al proc enviarmensaje
var path : string;
begin
EnviarMensaje ('usuario', 'pass', 'ejemplo.com',
               path , 'Reporte de Calidad',
               'usuario@ejemplo.com', 'Reporte de Calidad' );
end;
Responder Con Cita
  #2  
Antiguo 06-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, lo mejor seria incluir un componente TTimer, y en su onTimer, actualizar alguna barra de progreso, poniendo Timer.enabled := true, false justo antes de empezar y al acabar. Eso si, para que fuese correcto deberas averiguar antes de empezar a bajar de cuantos kb es el fichero, para asi tener el tope de tu barra o gauge.
Responder Con Cita
  #3  
Antiguo 06-08-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
mostrar Guage mientras envio correo

si, me imagino que debe ser por esa via, el problema es que no tengo la minima idea de como empezar, me serviria igual un progressbar, lo que no se hacer es como yo puedo declarar el MAX del con respecto al tamaño del fichero......
Responder Con Cita
  #4  
Antiguo 06-08-2008
Omega Omega is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
Revisa este post, es para IdHTTP pero creo que IdSMTP también tiene esos eventos.

Espero que te sirva.

PD: 2º vez en el día que linkeo a ese post xD

Saludos.
Responder Con Cita
  #5  
Antiguo 06-08-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Quizá puedas aprovechar ciertos eventos del componente "IdSMTP". Aquí puedes ver más o menos cómo podría quedar:

Código Delphi [-]
procedure TForm1.IdSMTPWork(ASender: TObject;
 AWorkMode: TWorkMode; AWorkCount: Int64);
begin
  Gauge1.Progress := AWorkCount;
  //Application.ProcessMessages();
end;

procedure TForm1.IdSMTPWorkBegin(ASender: TObject;
 AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  Gauge1.MaxValue := AWorkCountMax;
end;

procedure TForm1.IdSMTPWorkEnd(ASender: TObject;
 AWorkMode: TWorkMode);
begin
  Gauge1.Progress := 0;
end;

Sin embargo, he dicho quizá puedes aprovechar, y es que, hasta donde yo llego, estos eventos no funcionan todo lo bien que se espera, igual porque dependen también de información que debe proporcionar el servidor SMTP, y que, no sé si a veces es que no la proporciona, o si están obligados a hacerlo o qué.

En todo caso, por ahí irían los tiros... quiero decir, esos son los eventos que proporciona el componente "IdSMTP" (y en general el resto de los componentes Indy) para hacer lo que quieres.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 06-08-2008
jocey jocey is offline
Miembro
 
Registrado: ene 2007
Posts: 111
Poder: 18
jocey Va por buen camino
mostrar Guage mientras envio correo

dec y omega, sus respuestas han sido como siempre sensacionales, a ver, a mi se me ocurrio crear el componente IdSMTP en tiempo de ejecuacion, se que estoy bloqueado con esto, nunca lo habia hecho y no me entra la forma de hacerlo, no lo logro cuadrar como lo voy a hacer... si me pueden ayudar bien y si no.... no hay problemas... ya bastantehan hecho.
Responder Con Cita
  #7  
Antiguo 06-08-2008
Omega Omega is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
Revisa esto:

Código Delphi [-]
 SMTP.OnWorkBegin := IdSMTPWorkBegin;
 SMTP.OnWork := IdSMTPWork;
 SMTP.OnWorkEnd := IdSMTPWorkEnd;

PD: Yo también quiero dar las gracias a dec, ya que con el post que cite antes he podido hacer para bajar un archivo con barra de progreso.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en el envío de correo. Cecilio Internet 0 02-07-2008 17:28:20
Mostrar ProgressBar mientras se hace Preview de un reporte JarLem Varios 4 17-04-2008 03:51:12
Duda Envio de Correo jlalvarez OOP 6 19-12-2007 21:28:32
envío de correo con JEdi felixgo Internet 5 20-12-2005 11:29:36
envio de correo srangel Linux 0 22-04-2005 17:44:56


La franja horaria es GMT +2. Ahora son las 18:46:39.


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