Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2005
aranel aranel is offline
Miembro
 
Registrado: jul 2005
Posts: 37
Poder: 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 13:29:27. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #2  
Antiguo 20-12-2005
jjfgg jjfgg is offline
Registrado
 
Registrado: dic 2005
Posts: 2
Poder: 0
jjfgg Va por buen camino
Talvés lo más facil sea cambiar el formato del texto en el clipboard antes de pegar el texto. De la siguiente manera:

Código Delphi [-]
uses
  Clipbrd;
procedure TForm2.EditPaste1Execute(Sender: TObject);
var
  T: PChar;
begin
  Clipboard.SetTextBuf(PChar( Clipboard.AsText )); // reemplaza el texto en el clipboard por texto sin formato
  RichEdit1.PasteFromClipboard;
end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:17:57.


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
Copyright 1996-2007 Club Delphi