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 02-12-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Como obtener párrafos en un TMemo o bien en un TRichEdit

Estoy haciendo una modificación a un sistema ya en producción en donde en un TMemo escribe uno un texto y se envia por email, usando texto "plano". Mi cliente ahora quiere que se mande también en HTML sin que el formatee nada, es decir usando una plantilla (gracias a Dios) y nada más rellenándola con lo que escriba en el TMemo. Ya hice mis pruebas y todo funciona bien, excepto que los párrafos no son respetados y al pasarlo a HTML desde el TMemo ya que aparece todo junto como uno solo, probé ir agregándole un tag "</br>" antes de agregar cada línea al correo y si separa las líneas, pero obviamente no lo hace por párrafos.

¿Alguien sabe o conoce de alguna forma (con componente o sin él) de leer cada párrafo por separado?
¿No me queda de otra que ir leyendo linea por línea hasta detectar el retorno de carro y fin de línea y hacer generar el párrafo?

¿Alguna idea?
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #2  
Antiguo 02-12-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Resuelto

A veces lo mas simple es lo mas efectivo:

1.- Tomamos el TMemo y le ponemos en false la propiedad wordwrap antes de leer las líneas.
2.- Leemos cada línea (que en realidad es un párrafo) y le agregamos el tag "</br>" al html que vamos a usar
3.- Seguimos hasta leer todas las líneas.
4.- Volvemos a poner el true el wordwrap.

Voilá..

Como seda.

Les dejo mi ejemplo de código, ojo no les sirve si no tienen los componentes pero puede dar una idea a quien tenga la misma duda:

Código:
procedure TFEnviarMailManual.AAceptarExecute(Sender: TObject);
var Mensaje: TMensajeMail;
    Correo : TMailer;
    I: Integer;
    HTMLLines: TStrings;


begin
  inherited;

  ememo.Properties.WordWrap := False;
  if eAsunto.Text='' then
  Begin
    MessError('Debe escribir el asunto que llevará el e-mail');
    eAsunto.SetFocus;
  End
  Else
  Begin
    if MessPregunta('¿Confirma que desea enviar los correos?')=mrYes then
    Begin
        try
          HTMLLines := TStringList.Create;
          //Llenamos la cabecera del HTML
          With HTMLLines Do
          begin
            Add('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"');
            Add('"http://www.w3.org/TR/html4/loose.dtd">');
            Add('<html xmlns="http://www.w3.org/1999/xhtml">');
            Add('    <head>');
            Add('        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
            Add('        <title>New Web Project</title>');
            Add('    </head>');
            Add('    <body>');
            Add(' <STYLE>');
            Add('{');
            Add('font-family:"Times New Roman";');
            Add(')font-size:20px;');
            Add('}');
            Add(' </STYLE>');

            Add('       <center><img src="http://www.aztecaplus.com/mailing/logomail.pn" alt="logotipo"></center>');
            Add('       <p class="cuerpo"><i>');
          end;

          //Ahora llenamos el cupero del correo

          for I := 0 to ememo.lines.Count - 1 do
            begin
              HTMLLines.Add(ememo.Lines.Strings[i]+'<br/>');
            end;

          //Finalmente cerramos el HTML

          With HTMLLines do
          begin
            Add('</i></p>');
            Add('</body>');
            Add('</html>');

          end;

          LabEnviando.Visible := True;
          Barra.Visible :=True;
          Barra.Min  := 0;
          Barra.Max  := ListaMails.Count;
          Barra.Step := 1;
          Correo := TMailer.Create;
          Try
            Correo.MailHost.Host     := capadatos.parm_servidor_smtp;
            Correo.MailHost.Username := capadatos.parm_email_Direccion;
            Correo.MailHost.Password := capadatos.parm_password_Direccion;
            Correo.cuenta_origen     := capadatos.parm_email_Direccion;





              correo.ConectaMail;

              for I := 0 to ListaMails.Count - 1 do
                   Begin
                     correo.EnviaEmailHTML('Azteca Plus',
                                        Correo.cuenta_origen,
                                       'cesarvinas@gmail.com',//ListaMails.Strings[i],
                                       easunto.Text,
                                       TStringList(HTMLLines),
                                       TStringList(ememo.Lines),
                                       eArchivo.Text);
                     Barra.StepIt;
                     Application.ProcessMessages;
                   End;
              correo.DesconectaMail;


          Finally
            Correo.Free;
            Barra.Visible         := False;
            LabEnviando.visible   := False;
          End;
        finally
          close;
          HTMLLines.Free;
           ememo.Properties.WordWrap := True;
        end;

    
          MessInfo('Se enviaron todos los mensajes');
    End;
  End;
end;
__________________
AKA "El animalito" ||Cordobés a mucha honra||

Última edición por Casimiro Notevi fecha: 03-12-2011 a las 09:47:13.
Responder Con Cita
  #3  
Antiguo 02-12-2011
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Parece que el soft del foro insiste en interpretar los tags html como pueden ver en la parte que crea la cabecera del mensaje, ahi a ver si me ayuda algun moderador para dejarlos visibles.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #4  
Antiguo 03-12-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Le he puesto la etiqueta [code], ahora sale en una ventana y no queda tan funcional como con la etiqueta [delphi], pero al menos parece que se puede leer completo.
¿Lo dejo así?
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
Como controlar la barra de desplazamiento de un TRichEdit ???? AGAG4 Varios 1 16-01-2009 18:50:03
Tener salto de linea en TRichEdit o TMemo manolop Varios 7 13-11-2008 15:33:35
obtener numero de linea de un Tmemo gaz-g7 Varios 2 27-06-2007 23:10:03
Porque no realiza bien el Cmmit o bien un ApplyUpdates(-1)? Luis Alberto Varios 6 14-12-2005 22:44:25
TRichEdit vs TMemo shaktale Varios 2 19-09-2003 20:58:57


La franja horaria es GMT +2. Ahora son las 01:37:51.


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