Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   problema con el componente rvsystem de report rave (https://www.clubdelphi.com/foros/showthread.php?t=74789)

nabucodonosor 12-07-2011 01:22:50

problema con el componente rvsystem de report rave
 
Mi problema es que cuando le modifico las propiedades al componente rvsystem no las aplica por ejemplo, le modifique la propiedad DefaultDest a rdPrinter con la finalidad de que le me lo envie directamente a la impresora omitiendo el cuadro de dialogo pero sigue mostrando este enfadoso cuadro y sigue enviandome la informacion a pantalla, tambien le modifique la propiedad systempreview la parte de FormState=wsMaximize, para que el reporte me lo enviara en pantalla completa cuando el cliente quiera verlo por pantalla y tampoco obedece la instruccion y buscando en este foro de como quitar el cuadro de dialogo de impresion modifique las propiedades de systemsetups y puse tanto ssAllowSetup=False como ssAllowPreview=false y continua mandandome el cuadro de dialogo, en resumidas palabras las modificaciones que le hice al componente rvSystem no funcionan ¿alguien me puede ayudar enviandome un ejemplo? o ¿diciendome que es lo que debo hacer? lo que yo quiero es:
1: que no me aparezca el cuadro de dialogo de impresoras
2: que pueda mandarlo directamente ya sea a un archivo pdf, a la impresora o a pantalla

ElDioni 12-07-2011 18:10:40

Pon esto en RvSystem en el menu desplegable de SystemSetup:

ssAlowSetup->False
ssAlowPrinterSetup->False
ssAlowPreviewSetup->False

Luego yo lo hago todo por código Delphi

Para mandar a imprimir
Código Delphi [-]
RvSystem1.DefaultDest:=RdPrinter;

Para hacer un preview
Código Delphi [-]
RvSystem1.DefaultDest:=RdPreview;

Para mandar a un archivo PDF
Código Delphi [-]
RvSystem2.DefaultDest:=RdFile;
    RvSystem2.DoNativeOutput:=false;
    RvSystem2.RenderObject:=RvRenderPDF1;
    RvSystem2.SystemSetups:=RvSystem2.SystemSetups-[ssAllowSetup];
    savedialog1.FileName:='-';
    savedialog1.Execute;
    ruta:='';
    ruta:=extractfilepath(savedialog1.FileName);
    if ruta<>'' then
      begin
                RvSysTem2.OutputFileName:=ruta+'.pdf';
end;

Si te fijas te darás cuenta de que utilizo dos RvSystem distintos, uno para imprimir y previsualizar y otro para mandar a un archivo. De esta forma me aclaro mejor.

Saludos.

nabucodonosor 12-07-2011 21:52:47

problemas con el componente rvsystem de report rave
 
Ok muchas gracias, voy a ser la prueba y luego te aviso
saludos.

nabucodonosor 15-07-2011 19:43:06

Caballero, disculpa que insista en este punto, pero ya hice lo que usted me indico y continua sucediendo lo mismo, ¿que es lo que estoy haciendo mal? le vuelo a explicar lo que quiero:

Cuando el usuario de la orden de imprimir o de enviar por impresora, pantalla o archivo que no aparezca el cuadro de dialogo.

A continuacion le muestro lo que hice:
1.-de manera manual puse en false ssAllowSetup, ssAllowPrinterSetup y ssAllowPreviewSetup del componente RvSystem, de la propiedad SystemSetups (tambien lo hice a traves del codigo)
2.-al momente de mandarlo a pantalla hago lo siguiente:
with rvProyecto do
try
(*esta es la instruccion que me observaste a que pusiera*)
rvSistema.DefaultDest := RdPreview;
ProjectFile := NombredelReporte;
(*pongo todos los parametros que utilizo en el reporte*)
finally
Execute;
end;
Y sigue poniendo el cuadro de dialogo.
Anteriormente usaba quick report y solamente ponia nomreport.preview o nomreport.print, pero me gusta mas el RAVE. Si es posible mandame un pequeño ejemplo donde funcione o te mando un pequeño ejemplo de lo que yo hago.

Gracias, espero tu apoyo y ayuda, y creo que resolviendo este problema haria lo mismo tanto para rdprinter como rdfile

Loviedo 06-08-2011 16:17:12

En el Form coloca un RvProject, un RvNDRWriter y los enlazas con la propiedad RvProject.Engine un RvRenderPDF y un RvRenderPrinter.

Para imprimir:
Código Delphi [-]
procedure TForm1.ImprimirRaveReport;
begin
  NDRStream := TMemoryStream.Create;
  try
    RvProject1.open;
    begin
    RvProject1.SaveToStream(NDRStream);
    RvNDRWriter1.Stream:=NDRStream;
    RvProject1.Execute;
    RvRenderPrinter1.Render(NDRStream);
    RvProject1.close;
  finally
    NDRStream.Free;
  end;
end;

Para crear un PDF:
Código Delphi [-]
procedure TForm1.CrearFicherosPDF;
var
  NDRStream:  TMemoryStream;
begin
  NDRStream := TMemoryStream.Create;
  Try
    RvProject1.open;
    mFilename1 := 'C:\Pba.Pdf';
    RvProject1.SelectReport('Report1,true);
    RvProject1.SaveToStream(NDRStream);
    RvNDRWriter1.Stream:=NDRStream;
    RvProject1.Execute;
    RvRenderPDF1.PrintRender(NDRStream,mFilename1);
  finally
    NDRStream.Free;
  end;
  RvProject1.close;
end;
Saludos.

Loviedo 06-08-2011 17:43:05

Para completar.
Visualizar Report:
Coloca en un Form un ScrollBox,RvProject,RvNDRWriter,RvRenderPreview y un Button. Ya tiene tu Preview simple.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  NDRStream:  TMemoryStream;
begin
  NDRStream := TMemoryStream.Create;
  Try
    // Asignar Propiedades 
    // RvProject1.ProjectFile := 'C:\Prueba.rav'; 
     // RvProject1.Engine := RvNDRWriter1;
    // RvNDRWriter1.StreamMode := smUser;
    RvProject1.open;
    RvProject1.SelectReport('Report1',true);
    RvProject1.SaveToStream(NDRStream);
    RvNDRWriter1.Stream:=NDRStream;
    RvProject1.Execute;
    RvRenderPreview1.Render(NDRStream);
    RvProject1.close;
  except
    NDRStream.Free;
  end;
end;
Saludos.

Loviedo 06-08-2011 17:44:58

Perdón Try...Finally...End
Saludos.

nabucodonosor 11-08-2011 20:26:23

Ok, muchas gracias, voy a probarlo. Hasta Luego


La franja horaria es GMT +2. Ahora son las 20:14:11.

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