PDA

Ver la Versión Completa : pierdo los estilo del RXRichEdit


jorodgar
08-09-2005, 11:37:59
Tengo el siguiente codigo y mi problema es que al hacer el stringreplace pierde el color de letra de las lineas que ya había insertado con anterioridad en el richedit :(
Alguien me dá alguna idea??? Gracias


procedure TForm1.Button1Click(Sender: TObject);
begin
RxRichEdit1.SelAttributes.Color:=clRed;
RxRichEdit1.Lines.add('hola esto es una prueba ');
RxRichEdit1.SelAttributes.Color:=clblue;
RxRichEdit1.lines.add('para www.clubdelphi.com');
RxRichEdit1.text:=stringreplace(RxRichEdit1.text, '', '',
[rfReplaceAll, rfIgnoreCase]);
end;

dec
08-09-2005, 12:12:15
Hola,

Echa un vistazo a este Hilo (http://www.clubdelphi.com/foros/showthread.php?t=24815).

jorodgar
08-09-2005, 12:41:32
El hilo que me comentastes, propone la siguiente solucion.
Ya habia visto esta solución con anterioridad antes de escribir
mi duda en el foro y me sucedio lo mismo :(


var
Start: Integer;
begin
Start := RichEdit1.FindText(FindText, 0, Length(RichEdit1.Text), []);
if Start <> -1 then
begin
RichEdit1.SelStart := Start;
RichEdit1.SelLength := Length(FindText);
RichEdit1.SelText := ReplaceText;
end;
end;

jmariano
08-09-2005, 13:05:05
Saludos jorodgar!

Hice la prueba con el código que publicó roman y a mi si me funcionó bien (me respetó el color). Eso sí, la prueba la hice con el RichEdit de Delphi y no con el RXRichEdit porque no lo tengo (aunque no creo que tenga que ver).


var
Start: Integer;
begin
RichEdit1.SelAttributes.Color:=clRed;
RichEdit1.Lines.add('hola esto es una prueba');
RichEdit1.SelAttributes.Color:=clblue;
RichEdit1.lines.add('para www.clubdelphi.com');
Start := RichEdit1.FindText('prueba', 0, Length(RichEdit1.Text), []);

if Start <> -1 then
begin
RichEdit1.SelStart := Start;
RichEdit1.SelLength := Length('prueba');
RichEdit1.SelText := 'demo';
end;
end;


(Verás que se respeta el color de la línea donde sustituyo "prueba", o por lo menos a mí me lo respeta).

jorodgar
08-09-2005, 13:37:39
Con el RXRichEdit tambien funciona. :) Muchas gracias.
Seria mucho pedir que en lugar de reemplazar un texto por otro texto, fuera reemplazar un texto por una imagen?? (manteniendo los estilos)

Algo asi como :
RxRichEdit1.SelText := Image5.Picture;

Supongo que ya es mucho pedir. De todas formas gracias por vuestra ayuda. Si lo consigo os pego el código.

jorodgar
08-09-2005, 13:40:31
Solucion :


procedure TForm1.Button2Click(Sender: TObject);
var
Start: Integer;
begin
RxRichEdit1.PlainText:=false;
RxRichEdit1.SelAttributes.Color:=clRed;
RxRichEdit1.Lines.add('hola esto es una prueba');
RxRichEdit1.SelAttributes.Color:=clblue;
RxRichEdit1.lines.add('para prueba www.clubdelphi.com');
Start := RxRichEdit1.FindText('prueba', 0, Length(RxRichEdit1.Text), []);

while start <> -1 do
begin

RxRichEdit1.SelStart := Start;
RxRichEdit1.SelLength := Length('prueba');
Clipboard.Assign(Image5.Picture);
RxRichEdit1.PasteFromClipboard;
// RxRichEdit1.SelText := 'demo'
Start := RxRichEdit1.FindText('prueba', 0, Length(RxRichEdit1.Text), []);
end;
end;