Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   dbgrid/outlook (https://www.clubdelphi.com/foros/showthread.php?t=49884)

gsilvei 02-11-2007 05:25:26

dbgrid/outlook
 
Hola a todos, en un DBGrid, cargo una lista de E-mail.
Y me gustaria saber si es posible, de alguna forma, seleccionar todos los e-mail y pasarlos para el outlook.
Consigo mandar un solo e-mail, de un registro, y en realidad quiero mandar todos los que el dbgrid me muestra.

Código Delphi [-]
ShellExecute(Handle, 'open', pchar('mailto:'+ClientDataSet1email.Value+'?subject=Mala Direta...'), '', '',SW_SHOW);

gracias
saludos

jhonny 02-11-2007 15:13:54

Prepare una función sencilla y si quieres usala:

Código Delphi [-]
procedure TForm1.EnviarCorreoMultiple(DBGrid :TDBGrid; CampoEmail, Asunto :String);
var
  Direcciones :String;
begin
  Direcciones := '';
  with DBGrid.DataSource.DataSet do
  begin
    First; //Vamos al primer registro...
    while not Eof do //Recorramos el DataSet hasta el ultimo registro...
    begin
      Direcciones := Direcciones + FieldByName(CampoEmail).AsString + ';'; //Agrega Direcciones...
    Next;
    end;
  end;

  SetLength(Direcciones, Length(Direcciones) -1); //Quitemos el punto y coma que sobra...

  ShellExecute(Handle, 'open',
  pchar('mailto:'+Direcciones+'?subject='+Asunto),  '', '',SW_SHOW);
end;

Para llamarla es muy sencillo, asi:

EnviarCorreoMultiple(DBGrid1, 'email', 'Mala Direta...');

gsilvei 02-11-2007 20:58:51

Hola Jhonny,
gracias por la ayuda,
funciono correctamente,
solo una pregunta mas, que despues de estar verificando me di cuenta,
el outlook tiene un limite para adicionar direcciones de e-mail,
y mi table tiene mas de 150 e-mails, hay alguna forma de que mi dbgrid me muestre de a 50 e-mails por ejemplo?
gracias nuevamente,
saludos.

jhonny 02-11-2007 21:17:04

Desde tu dataset filtras de 50 en 50:

Si es un Query puedes usar tu motor de BD para traer de 50 en 50 registros o si no usar la propiedad filter del mismo.

Si es una tabla tambien podras hacer uso de su propiedad filter ;).

Pero si lo prefieres podrias hacerlo uno que otro retoque a la función que te pase anteriormente, de manera que cada que llegue al numero limite llame a ShellExecute, haga una pausa y siga con los demas...;).


La franja horaria es GMT +2. Ahora son las 09:20:31.

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