![]() |
![]() |
| Paypal | 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,
'[email protected]',//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 Noteví 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í?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
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 |
|