Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con RichEdit (https://www.clubdelphi.com/foros/showthread.php?t=24984)

Ermek 08-09-2005 12:49:42

Problemas con RichEdit
 
Buenas. Necesito guardar en una base de datos el texto de un editor realizado con RichEdit. Pero el problema es que lo guarda sin formato.

El código que pongo es el siguiente:

Código Delphi [-]
 Editor.PlainText:=True;
 Query2.Edit;
 Query2.FieldByName('TEXTO').AsString:=Editor.Text;
 Query2.Post;
 Editor.SetFocus;
Pero, parece que no hace caso al PlainText.

dec 08-09-2005 13:02:36

Hola,

¿No es al revés? ¿No estás indicando con "PlainText = True" que lo guarde como texto plano, es decir, sin formato?

Ermek 08-09-2005 14:17:57

He probado con Plaintext:=False y también pasa lo mismo.

dec 08-09-2005 14:40:10

Hola,

Terminará pasando lo mismo, es decir, que al cabo no consigas lo que quieres, pero, desde luego, esto es lo que puede leerse en la descripción de la propiedad "PlainText" en la ayuda de Delphi, la cual, por cierto, tal vez te proporcione alguna idea:

Cita:

Empezado por Ayuda de Delphi
To write the rich text in the control to a plain text file, set PlainText to true before streaming the text to a file. To ignore the rich text information encoded in a file, set PlainText to true before streaming the text to the control. To stream in the rich text attributes encoded in a file, or save the encoding of the rich text attributes to a file, set PlainText to false.

If the rich text attributes of a file are encoded in some format other than rich text format (RTF), it is necessary to use a converter on the text, even when PlainText is true.

Note: Rich edit controls do not directly support streaming. Use the Lines property to stream to or from a file.


jmariano 08-09-2005 15:02:16

El problema no se encuentra en usar o no la propiedad "PlainText", sino en el uso de la propiedad "Text", la cual sólo devuelve la cadena de texto introducida ignorando toda información sobre el formato de dicha cadena.

Para poder almacenar el texto junto con el formato es necesario leer el "contenido" en sí del control (es decir, el "Stream"). Para no enrollarme mucho, pongo un ejemplo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  CadenaFmt: TStringStream;
begin
  CadenaFmt := TStringStream.Create('');

  with RichEdit1 do
  begin
    // Ejecutar primero con PlainText a False y después a True

    SelAttributes.Color := clRed;
    SelAttributes.Style := [fsBold];
    SelText := 'Hola';
    Lines.SaveToStream(CadenaFmt);
  end;

  ShowMessage(CadenaFmt.DataString);
  CadenaFmt.Free;
end;

Si probais el ejemplo, vereis que se muestra un mensaje con la cadena de texto introducida mas las "etiquetas" utilizadas para dar formato a dicho texto. Si ahora lo ejecutais de nuevo poniendo la propiedad "PlainText" a "True", vereis que el mensaje muestra el texto normal sin dichas "etiquetas". Es decir, "PlainText" solo afecta a como será almacenado el texto del control (a la hora de usar los métodos "SaveToFile" o "SaveToStream"), con formato o sin él.

Saludos!

dec 08-09-2005 17:46:55

Hola,

Bueno, jmariano, creo que lo que has explicado es bastante explícito, pero, si se quiere guardar el texto con el formato (haciéndolo como tú lo has planteado arriba, no utilizando la propiedad "Text" del "TRichEdit", sencillamente), la propiedad "PlainText" ha de valer "False", ¿es o no es? ;)

jmariano 08-09-2005 19:38:00

Cita:

Empezado por dec
Hola,

Bueno, jmariano, creo que lo que has explicado es bastante explícito, pero, si se quiere guardar el texto con el formato (haciéndolo como tú lo has planteado arriba, no utilizando la propiedad "Text" del "TRichEdit", sencillamente), la propiedad "PlainText" ha de valer "False", ¿es o no es? ;)

Exastamente! para guardar el texto con formato la propiedad "PlainText" ha de ser "False". Pero, ojo!, como ya expliqué, la propiedad "Text" siempre devuelve el texto sin formato, independientemente de que la propiedad "PlainText" esté a "True" o "False".

Saludos!

Ermek 09-09-2005 10:16:07

Gracias, de esa forma si me funciona.


Saludos.


La franja horaria es GMT +2. Ahora son las 00:11:56.

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