PDA

Ver la Versión Completa : no permitir print en qreport


perico
26-01-2010, 15:08:57
amigos como puedo hacer para que en un momento dado cumpliendose una condicion, solo se pueda visualizar un reporte pero se deshabilite la opcion de print del mismo, en qreport?
si se podra hacer eso?

:confused::confused::confused:

jcarteagaf
26-01-2010, 15:38:05
Si es posible, pero para hacerlo deberas crear una vista previa personalizada. En este link (http://www.qusoft.com/CustomPreview.zip) tienes un demo de como hacerlo. Es cuestion de habilitar/deshabilitar los botones de la barra de herramientas del formulario.

Espero te sirva. Saludos

perico
26-01-2010, 16:17:31
esta bueno, pero me gustaria saber si se puede hacer usando el preview normal de todos modos gracias, porque con esto puedo trabajar

jcarteagaf
26-01-2010, 17:16:39
Lastimosamente en la vista previa no tienes control sobre las opciones, el único metodo que te queda es crearte tu propia Vista Previa.

Si necesitas mas ayuda no dudes en avisar.

Saludos.

perico
26-01-2010, 17:49:04
muchas gracias, voy a trabajar en eso :D

rgstuamigo
26-01-2010, 23:15:01
Yo tambien era uno de los que creía que no se podia Deshabilitar esos botones amenos que ,como dice jcarteagaf personalizemos la vista previa, pero esta tarde(viendo tu problema ;)) me he tomado la molestia de investigar mas a fondo el asunto y haciendo una :o tras otra :o prueba He conseguido deshabilitar cualquier boton de la vista previa...:D.
El truco esta en que QuickReport Utiliza Internamente un formulario prediseñado con todos los TToolButton que estan dentro de un TToolBar y todas las demas cosas...; bueno dicho formulario tiene como nombre de Clase TQRStandardPreview ;) (Incluso puedo ver dicho formulario en tiempo de diseño con F12 :eek: ), ahora el problema era: ¿Cómo poder acceder a dicho formulario y de ahi poder accesar al boton(ToolButton) en cuestion para poder deshabilitarlo(enable=true)?:confused:.
Revisando un poco de codigo por aqui y por allá pues lo he logrado haciendo lo siguiente:

Uses QRPrev,...;
...
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).Print.Enabled:=False; //dehabilito el boton de imprimir
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).SaveReport.Enabled:=False;//dehabilito el boton de guardar
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).LoadReport.Enabled:=False;//dehabilito el boton de abrir
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).CancelButton.Enabled:=False;//dehabilito el boton de cancelar
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).FindButton.Enabled:=False;//dehabilito el boton de Busqueda
...
... //INCLUSO PUEDO HACER LA SIMULACION DE PULSACION DE CUALQUIER BOTON.. //POR EJEMPLO
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).CancelButton.Click;// ...

OJO en el unico lugar que se puede acceder a dichos botones (segun mis pruebas) es en el evento AfterPreview del componente QuickRep.;). sino se podria tener una Excepcion.;)
Saludos...:)

perico
26-01-2010, 23:39:16
muchas gracias por tu ayuda. aunque.
:confused:
lo hago tal como me dices y en el evento que me dices pero al compilar me da error [Error] QrepCalc.pas(127): Undeclared identifier: 'PreviewControl' a que se debera,

rgstuamigo
26-01-2010, 23:45:54
muchas gracias por tu ayuda. aunque.
:confused:
lo hago tal como me dices y en el evento que me dices pero al compilar me da error [Error] QrepCalc.pas(127): Undeclared identifier: 'PreviewControl' a que se debera,
Talves tienes una version de QuickReport menor que la que uso yo....
Bueno haber.. intentalo asi:
TQRStandardPreview(QuickRep1.QRPrinter.Client.Parent).Print.Enabled:=False;
No te olvides de poner la unidad QRPrev en el Uses y poner el anterior codigo en el evento AfterPreview de tu QuickRep.;)
Saludos...:)

perico
27-01-2010, 01:44:47
bueno dejo el error pero igual no deshabilita el boton print, que podra ser ????

bueno yo uso delphi 7 y estoy usando el qreport que trae esta version de delphi

rgstuamigo
27-01-2010, 15:43:52
bueno dejo el error pero igual no deshabilita el boton print, que podra ser ????

bueno yo uso delphi 7 y estoy usando el qreport que trae esta version de delphi
Por alguna Razon extraña en la version 3.0.9 que viene en el propio delphi 7 (segun mis pruebas) de alguna forma internamente hay codigo que nuevamente hace habilitar los Botones(ToolButton) al momento de visualizar el reporte.Entonces la única solucion que veo es recurrir a la propiedad Visible de los ToolButton y hacer que éstos no sean visible al previsualizar el reporte.;)
Segun mis pruebas la version 3.0.9 no trabaja de igual forma que la version que tengo que es la 5.02. Ya que segun he observado ,algunos eventos se disparan en una forma diferente entre ambas versiones, y he ahí..que por eso que no te funciona igual como me funciona a mi...;).
Bueno..como te decia antes, simplemente has que dichos botones no sean visible;haaah... y ahora en ves de usar el evento AfterPreview, mejor utiliza el evento BeforePrint de tu componente QuickRep (eso es por la version que tienes), quedando tu codigo mas o menos asi:
procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
TQRStandardPreview(QuickRep1.QRPrinter.Client.Parent).Print.Visible:=False;
TQRStandardPreview(QuickRep1.QRPrinter.Client.Parent).PrintSetup.Visible:=False;
{En todo caso lo lógico es no hacer visible tanto el boton para selecionar
impresora (PrintSetup) como tambien el Boton de Imprimir (Print) ;) }
end;
Nota: Probado en Delphi 7 y Quick Report 3.0.9 ;)
Saludos...:)

perico
27-01-2010, 16:07:48
muchas gracias es lo que necesitaba, disculpa la molestia :rolleyes:

santiago14
21-09-2014, 16:18:34
Yo tambien era uno de los que creía que no se podia Deshabilitar esos botones amenos que ,como dice jcarteagaf personalizemos la vista previa, pero esta tarde(viendo tu problema ;)) me he tomado la molestia de investigar mas a fondo el asunto y haciendo una :o tras otra :o prueba He conseguido deshabilitar cualquier boton de la vista previa...:D.
El truco esta en que QuickReport Utiliza Internamente un formulario prediseñado con todos los TToolButton que estan dentro de un TToolBar y todas las demas cosas...; bueno dicho formulario tiene como nombre de Clase TQRStandardPreview ;) (Incluso puedo ver dicho formulario en tiempo de diseño con F12 :eek: ), ahora el problema era: ¿Cómo poder acceder a dicho formulario y de ahi poder accesar al boton(ToolButton) en cuestion para poder deshabilitarlo(enable=true)?:confused:.
Revisando un poco de codigo por aqui y por allá pues lo he logrado haciendo lo siguiente:

Uses QRPrev,...;
...
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).Print.Enabled:=False; //dehabilito el boton de imprimir
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).SaveReport.Enabled:=False;//dehabilito el boton de guardar
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).LoadReport.Enabled:=False;//dehabilito el boton de abrir
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).CancelButton.Enabled:=False;//dehabilito el boton de cancelar
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).FindButton.Enabled:=False;//dehabilito el boton de Busqueda
...
... //INCLUSO PUEDO HACER LA SIMULACION DE PULSACION DE CUALQUIER BOTON.. //POR EJEMPLO
TQRStandardPreview(QuickRep1.QRPrinter.PreviewControl).CancelButton.Click;// ...

OJO en el unico lugar que se puede acceder a dichos botones (segun mis pruebas) es en el evento AfterPreview del componente QuickRep.;). sino se podria tener una Excepcion.;)
Saludos...:)

Revisando un poco este asunto del Preview, me encuentro con este hilo. Realmente muy bueno lo que has puesto.
Ahora bien, ¿cómo hago para que ejecutar algo en un evento? El botón "print" de la visualización previa debería tenerlo. Yo necesito hacer algo adicional cuando se presiona el botón "print" de la preview. ¿Cómo se podrá hacer?

Gracias.

Santiago.

ecfisa
21-09-2014, 19:41:38
Hola Santiago.

En las QuickReport FAQS (http://www.quickreport.co.uk/FAQs.aspx), revisa el demo llamado CustomPreview.zip (http://www.quickreport.co.uk/resources/CustomPreview.zip).

Saludos :)