Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.558
Poder: 27
dec Va camino a la famadec Va camino a la fama
Copiar el texto de un TRichEdit a otro

Suponiendo que se quiere copiar el contenido de un componente TRichEdit llamado Caja1 a otro llamado Caja2, con todo el formato que el texto tenga, ninguna de las siguientes sentencias sirven para ello:

Código Delphi [-]
Caja2.Assign (Caja1);
Caja2.Text := Caja1.Text;
Caja2.Lines.Assign (Caja1.Lines);
Caja2.Lines := Caja1.Lines;
Caja2.SetTextBuf (PChar (Caja1.Text));
Caja2.Lines.Text := Caja1.Lines.Text;

Copian el texto, pero sin su formato.

En la biblioteca BPDGH, fueron creadas algunas funciones que permiten solventar este problema:

- TextoGuarListCade (Texto que Guarda Lista de Cadenas).
- CargaTextListCade (Cargar Texto en Lista de Cadenas).
- TextoGuarTRichEdit (Texto que Guarda TRichEdit).
- CargaTextTRichEdit (Cargar Texto en TRichEdit).

De tal forma que cuando se quiere copiar el texto de una caja TRichEdit a otra, se puede usar alguna de estas dos sentencias:

Código Delphi [-]
  CargaTextListCade (Caja2.Lines, TextoGuarListCade (Caja1.Lines));

  CargaTextTRichEdit (Caja2, TextoGuarTRichEdit (Caja1));

He aquí la implementación que tienen esas cuatro funciones en la biblioteca BPDGH:

Código Delphi [-]
{ Cargar Texto en Lista de Cadenas }
Function CargaTextListCade (Const Lista :TStrings; Const Texto :String) :Boolean;
Var
  FlujAuxi :TStringStream;  { Flujo Auxiliar }
Begin
  If LimpiBooleanPuntNulo (Result, Lista) Then
    Exit;

  FlujAuxi := TStringStream.Create (Texto);

  Try
    Lista.LoadFromStream (FlujAuxi);
  Finally
    FlujAuxi.Free;
  End;
End;

{ Texto que Guarda Lista de Cadenas }
Function TextoGuarListCade (Const Lista :TStrings) :String;
Var
  FlujAuxi :TStringStream;  { Flujo Auxiliar }
Begin
  If LimpiCadePuntNulo (Result, Lista) Then
    Exit;

  FlujAuxi := TStringStream.Create ('');

  Try
    Lista.SaveToStream (FlujAuxi);
    Result := FlujAuxi.DataString;
  Finally
    FlujAuxi.Free;
  End;
End;

{ Cargar Texto en TRichEdit }
Function CargaTextTRichEdit (Const Caja :TRichEdit; Const Texto :String) :Boolean;
Begin
  If BooleanPuntAsig (Result, Caja) Then
    CargaTextListCade (Caja.Lines, Texto);
End;

{ Texto que Guarda TRichEdit }
Function TextoGuarTRichEdit (Const Caja :TRichEdit) :String;
Begin
  If ConseCadePuntVali (Result, Caja) Then
    Result := TextoGuarListCade Caja.Lines);
End;

La clave está en el uso de los métodos LoadFromStream y SaveToStream de la propiedad Lines de un componente TRichEdit.

Tales métodos son utilizados internamente por TDBRichEdit para leer y guardar el valor de un campo alfanumérico, que es presentado en pantalla como texto enriquecido.
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 08:22:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi