PDA

Ver la Versión Completa : problema con el componente rvsystem de report rave


nabucodonosor
12-07-2011, 01:22:50
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

RvSystem1.DefaultDest:=RdPrinter;


Para hacer un preview

RvSystem1.DefaultDest:=RdPreview;


Para mandar a un archivo PDF

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
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:

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:

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.

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