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 07-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
Modificacion de informe Rave

¿Se puede desde Delphi, acceder a los componentes que forman un informe de Rave? ¿Puedo modificar,por ejemplo, la imagen a cargar en un Bitmap component desde Delphi?
Responder Con Cita
  #2  
Antiguo 07-05-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
De hecho se manejan desde Delphi, pero calculo que tu pregunta se orienta al objeto en modo ejecución.
Si es así no tengo idea con el rave pero calculo que debe ser posible, desde freereport u otros similares si se puede, incluso rediseñar el informe.
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #3  
Antiguo 08-05-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
En la página tips de nevrona pudes encontrar ejemplos y ayudas, concretamente la que busca es
http://www.nevrona.com/rave/tips/rvtip15.html
Responder Con Cita
  #4  
Antiguo 11-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
He probado el ejemplo que viene en la pagina de nevrona

http://www.nevrona.com/rave/tips/rvtip15.html

de un ejemplo de como acceder a los componentes de Rave desde Delphi, pero a mi no me funciona. Me da un error en tiempo de ejecucion "EAccessViolation....."

¿Como puedo modificar el contenido de una imagen de Rave, desde Delphi?

Muchas gracias
Responder Con Cita
  #5  
Antiguo 11-05-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
del código en cuestión:
Código Delphi [-]
    
  uses
    RVClass, RVProj, RVCsStd;

  var
    MyPage: TRavePage;
    MyText: TRaveText;

  begin
    RaveProject1.Open;
    With RaveProject1.ProjMan do begin
      MyPage := FindRaveComponent('Report5.Page2',nil) as TRavePage;
      MyText := FindRaveComponent('Text3',MyPage) as TRaveText;
      MyText.Text := 'Some Text';
      MyText.Color := clGreen;
    end; { with }
    RaveProject1.ExecuteReport('Report5');
    RaveProject1.Close;
  end;
deberás tenre en cuenta:
  1. asignar el RaveProject1 a un fichero con reportes
  2. debe existir un reporte 'Report5'
  3. debe existir una página 'Page2' en el reporte anterior
  4. debe existir un campo de texto 'Text3' en la página anterior
Responder Con Cita
  #6  
Antiguo 12-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
Si, tuve en cuenta todas esas cosas y me sigue saliendo el mismo error

En mi caso. tengo un reporte que se llama "InformeVentaEsc.rav" que contiene una sola pagina.

Por lo tanto mi codigo que da de la siguiente manera
begin
RvProject1.Open;
With RvProject1.ProjMan do begin
MyPage := FindRaveComponent('ImpresionVentaEsc.Page1',nil) as
TRavePage;
MyText := FindRaveComponent('Text3',MyPage) as TRaveText;
MyText.Text := 'Some Text';
MyText.Color := clGreen;
end; { with }
RvProject1.ExecuteReport('ImpresionVentaEsc');
RvProject1.Close;
end;
He creado un Text component al que le he puesto como nombre Text3, pero no me funciona.

¿Fallo en algo?

He visto que, en Rave, cada componente posee unos Eventos OnBeforePrint, OnAfterPrint. OnBeforeReport, OnAfterReport. En el codigo de uno de estos eventos he intentado modificar el valor de una propiedad de un componente Bitmap:
"Bitmap1.image.loadfromfile('c:\datos\foto\foto1.bmp');

pero, al compilarlo, me dice que no sabe lo que es "image".

Alguien me echa un cable??
Responder Con Cita
  #7  
Antiguo 12-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
Tambien lo he intentado mediante
Bitmap1.image:='c:\datos\foto\foto1.bmp';
y me sigue fallando. ¿Como se accede a las propiedades de los componentes en Rave? ¿Igual que en Delphi (NombreObjeto.Propiedad)?


Mi gran problema es que quiero modificar el contenido de una foto de un informe en tiempo de ejecucion. Tras ver que no doy con la tecla para conseguirlo, estoy pensando en intentarlo mediante FastReport ¿Es tan complicado tambien con FastReport?

Salu2
Responder Con Cita
  #8  
Antiguo 12-05-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
prueba el siguiente código, con lo que podras ver donde falla

Código Delphi [-]
begin
  RvProject1.Open;
  With RvProject1.ProjMan do
  begin
    MyPage := FindRaveComponent('ImpresionVentaEsc.Page1',nil) as TRavePage;
    if MyPage <>nil then
    begin
      MyText := FindRaveComponent('Text3',MyPage) as TRaveText;
      if MyText<>nil then
      begin
       MyText.Text := 'Some Text';
       MyText.Color := clGreen;
      end
      else Showmessage('no esxite el campo de texto Text3');
    end
    else Showmessage('no esxite el report ImpresionVentaEsc o la página Page1');

  end; { with }
  try
   RvProject1.ExecuteReport('ImpresionVentaEsc');
  except
   Showmessage('no esxite el report ImpresionVentaEsc');
  end;
  RvProject1.Close;
end;

El componente bitmap del rave tiene una propiedad que se llama FileLink donde puedes utilizar el nombre del fichero 'C:\...'

Última edición por Julià T. fecha: 12-05-2004 a las 21:04:40.
Responder Con Cita
  #9  
Antiguo 13-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
El mensaje que sale es que no existe "ImpresionVentaEsc o Page1", osea, k el valor de MyPage=NIL

He revisado que exista el nombre del fichero (por si ,por descuido, estaba mal escrito), y esta correcto. Esta ubicado en la misma carpeta donde esta mi aplicacion en Delphi

He visto que el componente Page1, esta dentro de un Report1. he hecho un:

with RVProject1.Projman do
MyReport := FindRaveComponents('ImpresionVentaEsc.Report1,nil) as TRaveReport
if Myreport<>nil then
.....
.....
else showMessage('No existe Report1)
y me dice que "No existe Report1"

¿donde puede estar fallando?

Te agradezco enormemente el interes que estas poniendo en intentar ayuudarme. Muchas gracias
Responder Con Cita
  #10  
Antiguo 13-05-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 22
javiermorales Va por buen camino
Prueba a poner tu reporte en c:\
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #11  
Antiguo 13-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
Bueno, al fin y despues de mucho pelearme, he logrado que arranque. Os muestor el codigo, para las dudas

var
MyPage:TRavePage;
MyText:TRaVeText;
MyReport:TRaveReport;
MyProject:TRaveProjectManager;
MyBitMap:TRaveJPEGImage;
begin
RVProject1.Open;
MyProject := RVProject1.Projman;
if MyProject<>nil then
begin
MyReport:=RVProject1.Projman.FindRaveCOmponent('Report1',nil) as TRaveReport;
if MyReport<>nil then
begin
MyPage:= RVProject1.Projman.FindRaveComponent('Page1',MyReport) As

TRavePage;
if MyPage<>nil then
begin
MyBitMap := RVProject1.Projman.FindRaveComponent('Foto',MyPage) As

TRaveJPEGImage;
if MyBitMap<>nil then
begin
MyBitMap.image.LoadFromFile('c:\cancelada\datos\fotos\tina.jpg');
RVProject1.Execute;
RVProject1.Close;
end
else Showmessage('no existe Text')
end
else Showmessage('no existe Pagina')
end
else Showmessage('no existe Reporte')
end
else Showmessage('no existe Projecto')
end;
end;


Creo que el fallo era que si ponia "ImpresionVentaEsc.Page1" decia que no lo encontraba. En cambio si ponia "page1" no daba problemas.

Quizas al estar definido en la propiedad ProjectFile del componente RVProject el informe ImpresionVenta Esc.rav, ya no hace falta ponerlo en el procedimiento FindRaveComponent

Muchas gracias a todos por vuestra ayuda (y en especial a Juliá T.)
Responder Con Cita
  #12  
Antiguo 13-05-2004
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 21
PTW Va por buen camino
RVProject1.Open;
MyProject := RVProject1.Projman;
if MyProject<>nil then
begin
MyReport:=RVProject1.Projman.FindRaveCOmponent('Report1',nil) as TRaveReport;
if MyReport<>nil then begin
MyPage:= RVProject1.Projman.FindRaveComponent('Page1',MyReport) As TRavePage;
if MyPage<>nil then begin
MyBitMap := RVProject1.Projman.FindRaveComponent('Foto',MyPage) As TRaveJPEGImage;
if MyBitMap<>nil then begin
MyBitMap.image.LoadFromFile('c:\datos\fotos\foto.jpg');
RVProject1.Execute;
RVProject1.Close;

end
end
end
end

Responder Con Cita
  #13  
Antiguo 13-05-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
Hola PWT:

Ahora que funciona y ya saber por que, tan solo te hace falta que prestes más atención al texto que te contestan (como en la repuesta número 5), que utilizes los tags "code" o "delphi" y que cierres el report si no lo necesitas, tal como indica el codigo siguiente:

Código Delphi [-]
RVProject1.Open;
MyProject := RVProject1.Projman;
if MyProject<>nil then begin
  MyReport:=RVProject1.Projman.FindRaveCOmponent('Report1',nil) as TRaveReport;
  if MyReport<>nil then begin
    MyPage:= RVProject1.Projman.FindRaveComponent('Page1',MyReport) As TRavePage;
    if MyPage<>nil then begin
      MyBitMap := RVProject1.Projman.FindRaveComponent('Foto',MyPage) As TRaveJPEGImage;
      if MyBitMap<>nil then begin
        MyBitMap.image.LoadFromFile('c:\datos\fotos\foto.jpg');
        RVProject1.Execute;
      end
    end
  end
end
RVProject1.Close;
Responder Con Cita
  #14  
Antiguo 12-06-2007
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 21
Alexander Va por buen camino
Post Rave cambiar propiedades de componentes.

Hola a todos,

He tratado de cambiar las propiedades de los componentes del reporte pero no he podido, He visto los ejemplos que estos hilos muestran, pero no me funciona tampoco ya que no reconoce TRaveJPEGImage, debo instalar algun componente adicional?.

Básicamente lo que quiero es cambiar la posicion de un rectangulo y si es visible o no, he podido cambiar el texto sin pasarle parámetros:

Código Delphi [-]
   RvProject.Open;
   MyPage := RvProject.Projman.FindRaveComponent('Report1.Page1',nil) as TRavePage;
   MyText := RvProject.ProjMan.FindRaveComponent('TextT1',MyPage) as TRaveText;
   MyText.Text := 'Se puede cambiar el texto';
   RvProject.Execute;

Como puedo cambiar las propiedades del Rectangulo?

Gracias.

Alexander
__________________
Cielos azules
Responder Con Cita
  #15  
Antiguo 12-06-2007
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 21
Alexander Va por buen camino
Smile Ya lo he conseguido

Ya lo conseguí!!!!!, debía poner estas unidades para que me tomara la Clase TRaveRectangle que era la que no me tomaba.

Muchas gracias.

Uses

RpDefine, RpCon, RpConDS, RpBase, RpFiler, RpRave,
RpRender, RpRenderRTF, OleServer, Word97, RpRenderPDF, RpSystem,RVClass, RVProj, RVCsStd,RVCsDraw
__________________
Cielos azules
Responder Con Cita
  #16  
Antiguo 31-10-2007
apolo771 apolo771 is offline
Registrado
 
Registrado: oct 2007
Posts: 3
Poder: 0
apolo771 Va por buen camino
Question ayuda

yo necesito practicamente lo mismo y me ha funcionado asi

RVProject1.Open;
MyProject := RVProject1.Projman;
if MyProject<>nil then begin
MyReport:=RVProject1.Projman.FindRaveCOmponent('Report1',nil) as TRaveReport;
if MyReport<>nil then begin
MyPage:= RVProject1.Projman.FindRaveComponent('Mainpage',MyReport) As TRavePage;
if MyPage<>nil then begin
MyBitMap := RVProject1.Projman.FindRaveComponent('Foto',Mypage) As TRaveBitMap;
if MyBitMap<>nil then begin
try
MyBitMap.FileLink:=(trim(IBCarnetQueryFoto.Value));
Except
end;
RVProject1.Execute;
end;
end
end
end ;
RVProject1.Close;

pero yo estoy imprimiendo Carnetts y cada carnet lleva una foto diferente para cada usuario...y el bitmap lo cargo por medio de un campo en la tabla de tipo String que es donde tengo almacenada la direccion exacta de la foto....

pero resulta que si coloco este codigo en el boton de previsualizar el informe entonces todos los carnets tomaran la primera foto nada mas.... el bitmap lo tengo en una databand que me permite se repita x cantidaddes de vecesel carnet dependiendo de la cantidad de registros.... si la foto estuviera incrustadad en la tabla no tendria problema por que simplemente asociaria el bitmap con el campo de foto.... pero dado que el campo foto es de tipo string para cargar la foto por direccion no puedo hacer eso....

intente colocar ese codigo en el RvSystem en el evento OnNewPage y si me cambia la foto pero al cambiar la pagina me coloca a todas la foto del primer registro de esa pagina.....pero todas las de esa pagina quedan iguales.... hay algun evento en el que al ir registro por registro cuando esta cargando el reporte coloque el codigo y funcione??

espero no incomode que escribi muxo es que quiero darme a entender bien y entiendan mi caso.... alguien me puede hechar una mano??
Responder Con Cita
  #17  
Antiguo 31-10-2007
apolo771 apolo771 is offline
Registrado
 
Registrado: oct 2007
Posts: 3
Poder: 0
apolo771 Va por buen camino
Thumbs up Listo... -.-

tengo como 1 mes peliando con este codigo..... y hoy coloque la duda en este tema y enseguida lo resolvi XDcoloque el mismo codigoMyProject := RVProject1.Projman; if MyProjectnil then begin MyReport:=RVProject1.Projman.FindRaveCOmponent('Report1',nil) as TRaveReport; if MyReportnil then begin MyPage:= RVProject1.Projman.FindRaveComponent('Mainpage',MyReport) As TRavePage; if MyPagenil then begin MyBitMap := RVProject1.Projman.FindRaveComponent('Foto',Mypage) As TRaveBitMap; if MyBitMapnil then begin try MyBitMap.FileLink:=(trim(IBCarnetQueryFoto.Value)); Except end; end; end end end ;en el RVDataConnection1 en el evento OnValidateRow y listo.... solucionado..
Responder Con Cita
  #18  
Antiguo 13-03-2008
MaSSaKKre MaSSaKKre is offline
Miembro
 
Registrado: sep 2005
Posts: 34
Poder: 0
MaSSaKKre Va por buen camino
gracias apolo

muchas gracias apolo771 yo tenia el mismo problema que tu, solo me faltaba poner mi codigo en OnValidateRow... muchas gracias por ese tip!
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


La franja horaria es GMT +2. Ahora son las 09:49:06.


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