Ver Mensaje Individual
  #1  
Antiguo 18-10-2011
Lizeth Lizeth is offline
Miembro
 
Registrado: ago 2005
Ubicación: Mexico D.F
Posts: 50
Reputación: 19
Lizeth Va por buen camino
insertar texto en richedit con formato

Hola pues me declaro incompetente para esto, es algo tan sencillo pero no entiendo.

Tengo un richedit y una lista, cuando el usuario hace doble click en la lista se copia el texto del renglón de la lista al richedit, eso lo manejo así y funciona bien.

Código Delphi [-]
procedure MiForma.miRichEditExit(Sender: TObject);
begin
inherited;
    iPosMemo := miRichEdit.SelStart;
end;
procedure MiForma.ListaDblClick(Sender: TObject);
var sAntes, sDespues : string;
     iTope:integer;
     sValor : string;
begin
inherited;
  
    iTope := length(miRichEdit.Text) - iPosMemo;
   sAntes := copy(miRichEdit.Text,1,iPosMemo);
   sDespues := copy(miRichEdit.Text,iPosMemo+1,iTope);
   sValor := Lista.Selected.SubItems.Strings[0];
   miRichEdit.Text:= sAntes +' '+ sValor + ' ' +sDespues;
end;




El problema es que mi richedit tiene formato(negritas, cursiva etc) y al introducir el nuevo texto zas le quita el formato, lo entiendo porque pasa como texto plano, intente trabajar con TMemoryStream ja pero no entiendo. Si paso el texto de mirichedit a otro RichEdit1y se que se hace con:

Código Delphi [-]
var  Corriente: TMemoryStream; 
 try
   miRichEdit.Lines.SaveToStream(Corriente);
   Corriente.Seek(0,soFromBeginning);
   RichEdit1.Lines.LoadFromStream(Corriente);
 finally
   if Assigned(Corriente) then Corriente.Free;
 end;

Pero necesito copiar partes del richedit el antes y el despúes para poder introducir el texto de la lista pero al hacer un copyfrom aa me manda un erro de Stream read error
Empece copiando el antes, pero no funciona nadita.

Código Delphi [-]
var
   rich1, rich2:TMemoryStream;
begin
   rich1 := TMemoryStream.Create;
   rich2 := TMemoryStream.Create;
   rchePlant.Lines.SaveToStream(rich1);
   rich2.CopyFrom(rich1,rich1.Size - iPosMemo); //iPosMemo lo lleno al salir del richedit
   RichEdit1.Lines.LoadFromStream(rich2);
end;

Se que tengo que usar el seek pero ni siquiera entiendo como funciona ni sus parámetros, ya busque en la ayuda y me deja igual.

Alguien me podría ayudar, se que es algo simple pero no entiendo, o tal vez mi idea de como hacerlo es erronea.

Gracias
Responder Con Cita