Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Envio de email con ProgressBar (https://www.clubdelphi.com/foros/showthread.php?t=55812)

MaMu 28-04-2008 03:17:15

Envio de email con ProgressBar
 
Estuve buscando y buscando por el foro, y no he encontrado nada que se refiera al envio de emails con progressbar con archivos adjuntos.
He notado que el IdSMTP, tiene estos eventos:

Código Delphi [-]
 
procedure TGaleria.IdSMTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
 
procedure TGaleria.IdSMTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
 
procedure TGaleria.IdSMTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);

Podrían servirme para incrementar un progressbar a medida que se envia el archivo adjunto?. En mi caso, siempre se envia un solo archivo adjunto (ZIP).

Saludos

MaMu 28-04-2008 04:58:15

Encontré esto en:
http://www.icodeteam.net/index2.php?...do_pdf=1&id=25

Cita:


Message Sent notification



You will notice
that nothing happens after you’ve sent a message. It is possible to greatly
improve this by adding a progress bar that indicates that the message has been
sent. Use IdSMTP’s onwork, workbegin and onworkEnd event handlers, together
with the progressbar. When the work is finished you could bring up a dialog
saying “Message Sent” or something to that effect. This will assure the user

Cita:


that something is happening.



El problema es que, haga lo que haga, siempre tira un Access violation.
Por ejemplo, haciendo un:

Código Delphi [-]
 
ProgressBar1.StepIt;

Ya me quedo sin ideas.

Saludos

MaMu 28-04-2008 05:19:51

Lo que se me ocurrió hacer, es lo siguiente:

Código Delphi [-]
 
procedure TGaleria.IdSMTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
if AWorkMode = wmWrite then
 begin
   ProgressBar1.Max := AWorkCountMax ;
   ProgressBar1.Position := 0 ;
 end; 
end;
 
procedure TGaleria.IdSMTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
begin
 if AWorkMode = wmWrite then
  begin
    ProgressBar1.Position := AWorkCount;
    Label1.Caption := IntToStr(AWorkCount) + 'Bytes de :' + inttostr(ProgressBar1.Max) ;
  end;       
end;
 
procedure TGaleria.IdSMTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  if AWorkMode = wmWrite then
  begin
    ProgressBar1.Position := 0;
  end;           
end;

Pero bueno, sigo depurando porque no se donde esta el error.

MaMu 28-04-2008 05:35:27

Ahora si que ya me chingó, elimino todos los procedimientos (OnWork, etc etc) y dejando solo esto:

Código Delphi [-]
procedure TGaleria.IdSMTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
   //es un comentario
end;

me tira error Access violation, aun siendo un comentario, que está pasando?
si dejo los procedimientos vacios, sin codigo alguno, me anda perfecto, pero claro, no puedo controlar la prograssbar.

Porque?


La franja horaria es GMT +2. Ahora son las 10:12:46.

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