Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2016
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Thumbs up Enviar Stream a un frxRichView de FastReport

Buenas, realmente FastReport es bueno, pero es dificultoso encontrar algunas cosas.
En mi caso particular estuve buscando por varios días el como pasar datos desde un RichEdit hacia un frxRichView.
Luego de bastante buscar encontré lo siguiente. Si hay algo mejor, por favor, lo agregan.
Gracias.

Primeramente hay que pasar un Stream a OleVariant, lo hice con un pequeño módulo que encontré en este lugar

Por las dudas, lo copio también:
Código Delphi [-]
function MemoryStreamToOleVariant(Strm: TMemoryStream): OleVariant;
var
  Data: PByteArray;
begin
  Result := VarArrayCreate ([0, Strm.Size - 1], varByte);
  Data := VarArrayLock(Result);
  try
    Strm.Position := 0;
    Strm.ReadBuffer(Data^, Strm.Size);
  finally
    VarArrayUnlock(Result);
  end;
end;

function OleVariantToMemoryStream(OV: OleVariant): TMemoryStream;
var
  Data: PByteArray;
  Size: integer;
begin
  Result := TMemoryStream.Create;
  try
    Size := VarArrayHighBound (OV, 1) - VarArrayLowBound(OV, 1) + 1;
    Data := VarArrayLock(OV);
    try
      Result.Position := 0;
      Result.WriteBuffer(Data^, Size);
    finally
      VarArrayUnlock(OV);
    end;
  except
    Result.Free;
    Result := nil;
  end;
end;

Ahora, tengo un componente frxRichView llamado 'rchTextoMembrete', una variable de FastReport llamada 'TextoMembrete'
Hago click derecho sobre 'rchTextoMembrete' --> Editar... y allí coloco la variable, de la siguiente forma: [TextoMembrete]

El código para pasar los datos hacia el FastReport:
Código Delphi [-]
procedure TfrmEditorDocumentoMembretado.btnConfirmarTextoEditadoClick(
  Sender: TObject);
var
  stream:TMemoryStream;
begin
  stream:=TMemoryStream.Create;
//Guardamos el contenido como un flujo en stream
  Editor.Lines.SaveToStream(stream);
  dmReportes.dmReportesCarahuasi.frxImpresionMembrete.Variables['TextoMembrete']:=MemoryStreamToOleVariant(stream);
  dmReportes.dmReportesCarahuasi.frxImpresionMembrete.ShowReport();
end;

En el documento FastReport podemos ver lo que escribimos en el editor RichEdit, respetando el formato, que es lo que queríamos.
Bueno, espero sirva.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 12-10-2016
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podría ser así...

Código Delphi [-]
procedure TfrmEditorDocumentoMembretado.btnConfirmarTextoEditadoClick(
  Sender: TObject);
var
   RichView:TfrxRichView;
   stream:TMemoryStream;
begin
  stream:=TMemoryStream.Create;
//Guardamos el contenido como un flujo en stream
  Editor.Lines.SaveToStream(stream);

  //Buscar el objeto al que debes asignar el contenido del Stream.
  RichView := TfrxRichView(dmReportes.dmReportesCarahuasi.frxImpresionMembrete.FindObject( 'Nombre_Del_Objeto_frxRichView' ) );
  //Verificas si lo encontró
  If RichView <> Nil Then 
  Begin
        //Asignas el contenido del stream al RichView...
        RichView.RichEdit.Lines.LoadFromStream( stream );
    //dmReportes.dmReportesCarahuasi.frxImpresionMembrete.Variables['TextoMembrete']:=MemoryStreamToOleVariant(stream);
      dmReportes.dmReportesCarahuasi.frxImpresionMembrete.ShowReport();
  end;
end;
Saludos cordiales
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con frxRichView (FastReport) santiago14 Impresión 3 30-11-2018 16:40:10
enviar edit1 o combobox a fastreport darkbits Varios 2 27-12-2012 00:18:47
MD5 de un Stream. JXJ Varios 3 03-10-2007 18:52:40
Enviar stream por internet a varias ip's a la vez federicoboga Internet 5 27-06-2005 06:18:09
Enviar un Stream y mostrar el progreso johncook Internet 0 22-10-2004 17:05:43


La franja horaria es GMT +2. Ahora son las 13:27:18.


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