FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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|| |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
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|| |
#4
|
||||
|
||||
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í? |
|
|
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 |
|