Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Rtf a texto plano (https://www.clubdelphi.com/foros/showthread.php?t=40309)

glopez 13-02-2007 11:08:34

Rtf a texto plano
 
Tengo un campo en la base de datos de tipo blob en el cual se almacena un texto en formato Rtf (Texto enriquecido). Tengo que hacer una función que me extraiga los codigos de control y me devuelva el texto plano (limpio).
Esta función tengo que meterla en una UDF del motor, por lo que no puedo utilizar componentes visuales como el RichEdit.

fdelamo 13-02-2007 11:14:02

Hola glopez,

¿por que no los puedes usar?, crealos en ejecución y los usas, aunque no sean visibles

Saludos

glopez 13-02-2007 11:17:50

Cuando creo un richedit en ejecución e intento asignarle el texto del campo me dice que el richedit no tiene padre.

Bicho 13-02-2007 11:19:54

Pues asígnale un padre hombre!! :D

Al crearlo pones esto:

Código Delphi [-]
RichEdit1.Parent := Panel1 
// Aquí pones el componente que le quieres asignar como padre, 
// yo he puesto un panel ya que es lo más usual, 
// pero tambien puedes asignarle directamente el form1.

Saludos

fdelamo 13-02-2007 11:20:35

¿Si?, no lo sabía,

pues prueba a crear un padre (un TPanel, por ejemplo)

a ver si consigues algo ...

glopez 13-02-2007 11:21:15

He conseguido hacerlo de esta manera pero utilizando componentes visuales creados en tiempo de diseño:

RichEdit1.SetTextBuf(PChar(Tabla.FieldByName('comentarios').AsString));
RichEdit2.SetTextBuf(PChar(RichEdit1.Text));

glopez 13-02-2007 11:33:57

Si hago el codigo anterior pero con componentes creados en tiempo de ejecución el texto me lo devuelve con formato.

fdelamo 13-02-2007 12:07:13

Prueba con esto:

Código Delphi [-]
var
  a: TRichEdit;
  p: TForm;
begin
  p := TForm.Create(nil);
  a := TRichEdit.Create(p);
  a.Parent := p;
  a.Lines.LoadFromFile('c:\Documento.rtf');
  a.PlainText := True;
  a.Lines.SaveToFile('c:\Documento.txt');
  a.Free;
  p.Free;

Con TPanel no se puede "Control has no parent window" ¿alguien sabe por que? ¿por ser descendiente de TWinControl?

Un saludo

glopez 13-02-2007 12:53:55

Gracias fdelamo funciona muy bien pero al meterlo en el motor va muy lento ya que tiene que crear un form y un richedit en cada linea de la base de datos.

Bicho 13-02-2007 12:55:41

Pero entonces, si es tan lento, ¿porque no se lo asignas a tu form donde trabajas? no necesitas crear un nuevo form, sólo el richedit.

Saludos

glopez 13-02-2007 13:08:25

Porque este código tengo que meterlo en una dll del motor que se ejecuta en cada linea del motor y allí no tengo ningún form ni puedo crearlo en diseño.

rastafarey 15-02-2007 18:56:14

Resp
 
No tengo delphi mano. Por lo qu epuedo decir es una burrada.

Prueba como padre aplication o un casting de la misma

xxx.parent := aplication;
o
xxx.parent := tcontrol(aplication);
o
xxx.parent := aplication.propiedad;


La franja horaria es GMT +2. Ahora son las 01:15:27.

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