Ver Mensaje Individual
  #1  
Antiguo 08-12-2005
aranel aranel is offline
Miembro
 
Registrado: jul 2005
Posts: 37
Reputación: 0
aranel Va por buen camino
Question copiar texto sin formato en un TRichEdit!!!!

Hola chic@s!! tengo un gran problema!! A ver, estoy haciendo un editor en Delphi, mediante un RichEdit. En este editor puedo cambiar el tipo de letra, el tamaño y demás, pero cuando copio en él texto de otro sitio (por ejemplo de Word, PowerPoint, Notepad, una pagina Web...) pues desearía que se pegara, pero con el formato actual que tengo en mi editor.

Por un lado, tengo puesto en el RichEdit la propiedad TextPlain := True, para que el texto escrito me lo guarde en los ficheros como texto plano.

Por otro lado, si no hago nada y utilizado la función estándar que me ofrece Delphi para copiar y pegar en un RichEdit, me copia el nuevo texto en mi editor con el formato original (tipo de letra, tamaño, interlineado ...) con lo que acabaría con 2 formatos en mi editor, y eso no es deseable.

He coseguido mediante el siguiente codigo (quizás demasiado enrevesado, pero no he encontrado otra forma para que funcione) que cuando copio texto en mi editor, me cambie la fuente y el tamaño de letra del nuevo texto al que yo tenia puesto originalmente en mi editor:

Código Delphi [-]
 
procedure TfrmPrincipal.EditPaste1Execute(Sender: TObject);
var
  i: integer;
  nombreFuente: String;
begin
  nombreFuente := (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).Font.Name;
  if (strcmp(PChar(nombreFuente),'Tunga') = 0)then
    (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).Font.Name := 'Webdings'
  else
    (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).Font.Name := 'Tunga';

  (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).PasteFromClipboard;

  (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).Font :=
    (frmEditor.PageControl1.ActivePage.Controls[IndiceLineas] as TRichEdit).Font;

  (frmEditor.PageControl1.ActivePage.Controls[IndiceEditor] as TRichEdit).DefAttributes :=
    (frmEditor.PageControl1.ActivePage.Controls[IndiceLineas] as TRichEdit).DefAttributes;

  (frmEditor.PageControl1.ActivePage.Controls[IndiceLineas] as TRichEdit).clear;
  (frmEditor.PageControl1.ActivePage.Controls[IndiceLineas] as TRichEdit).Color := clBackground;
end;
Realmente lo que hago con el texto anterior, es que tengo dos RichEdit, y en uno nunca modifico el formato y nunca copio texto en él, entonces cuando copio un nuevo texto en el segundo RichEdit, lo que hago es asignarle despues es asignarle sus propiedades font y defAttributes, para que tengan el msimo formato.

Sin embargo, si el texto que copio (por ejemplo desde Word) tiene un interlineado distinto de sencillo (por ejemplo doble) me mantiene dicho interlineado y eso tampoco quiero que pase. Pero ya no se me ocurre nada para arreglarlo

Agradecería muchísimo vuestra ayuda!!

UN BESAZO!!

Última edición por dec fecha: 08-12-2005 a las 12:29:27. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita