Control Botón de Impresión

Post Reply
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Control Botón de Impresión

Post by leandro »

Buenos días para todos....

En este oportunidad debo poder ejecutar una acción al momento que el usuario envié la orden de impresión. Lo que requiero es hacer el registro en una tabla del usuario, la hora y la fecha en la que se dio la orden de impresión del documento.

Saludos

Image
imagen
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Control Botón de Impresión

Post by Antonio Linares »

Leandro,

Lo más sencillo es modificar el código de FWH\source\classes\rpreview.prg

Si nos muestras el código fuente de como construyes ese impreso, tal vez encontremos una forma de hacerlo que no precise de modificar rpreview.prg
regards, saludos

Antonio Linares
www.fivetechsoft.com
luisduque
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela
Contact:

Re: Control Botón de Impresión

Post by luisduque »

Hola Leandro

como dice el Maestro Antonio Linares

Modifica la clase rpreview

METHOD PrintPage() CLASS TPreview

local hMeta := ::oMeta1:hMeta
local oDlg, oRad, oPageIni, oPageEnd
local nOption := 1, nFirst := 1, nLast := Len( ::oDevice:aMeta ) // DEVICE
local oThis := Self
local lCancel := .t.

if nLast != 1

DEFINE DIALOG oDlg SIZE 400, 183 TITLE FWString( "Printing" )
oDlg:lTruePixel := .f.

@ 8, 8 GROUP PROMPT FWString( "Printing range" ) SIZE 135, 72 PIXEL OF oDlg

@ 18, 18 RADIO oRad VAR nOption ;
ITEMS FWString( "All" ), FWString( "Current page" ), FWString( "Pages" ) ;
ON CHANGE If( nOption == 3,;
( oPageIni:Enable(), oPageEnd:Enable() ),;
( oPageIni:Disable(), oPageEnd:Disable() ) ) PIXEL

@ 61, 30 SAY FWString( "From" ) OF oDlg PIXEL

@ 60, 53 GET oPageIni ;
VAR nFirst PICTURE "@K 99999" ;
VALID If( nFirst < 1 .or. nFirst > nLast, ( MsgBeep(), .F. ), .T. ) ;
OF oDlg SIZE 22, 11 PIXEL

@ 61, 80 SAY FWString( "To" ) OF oDlg PIXEL

@ 60, 103 GET oPageEnd ;
VAR nLast PICTURE "@K 99999" ;
VALID If( nLast < nFirst .or. nLast > Len( ::oDevice:aMeta ),; // DEVICE
( MsgBeep(),.F. ), .T.) OF oDlg PIXEL

@ 10, 152 BUTTON FWString( "&Ok" ) OF oDlg SIZE 42, 14 ;
ACTION ( lCancel := .f., oDlg:End() ) PIXEL

@ 28, 152 BUTTON FWString( "&Cancel" ) OF oDlg SIZE 42, 14 ;
ACTION oDlg:End() PIXEL

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oPageIni:Disable(), oPageEnd:Disable(), .T. )

else
lCancel := .f.
endif

if ! lCancel
MsgRun( ::oDevice:cDocument, "Printing Report",;
{ || ::PrintPrv( nil, nOption, nFirst, nLast ) } )
endif
///puedes colocar lo que quieras hacer en mi caso me toco para una impresión particular salir al imprimir por medio de la variable zPrintTick que es una variable de mi software
If zPrintTick
::oWnd:End()
EndIf
///
return nil
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Control Botón de Impresión

Post by leandro »

Antonio y Luis muchas gracias por responder. Ya había mirado esa opción, pero la verdad es que no me gusta modificar las clases. Pensé que posiblemente había otra forma de hacerlo. Voy a crear un pequeño dialogo para controlar ese proceso.
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control Botón de Impresión

Post by cnavarro »

Por qué no haces solo un EXTEND CLASS del METHOD BuildButtonBar y en el ACTION del PrintPage, haces antes una llamada a tu funcion?
.... ACTION ( MiFunc(), ::PrintPage(), .. )

Aunque lo interesante seria tener las acciones de los botones en un array de codeblocks para poderlos modificar
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Control Botón de Impresión

Post by Armando »

Leandro:

Me parece que lo mas sensato es lo que te recomienda el Teacher Antonio, modifica el RPReview.Prg

1.- Creas una variable pública desde tu aplicación, por ejemplo
MEMVAR lImpreso := (.F.)

2.- En el RPReview.Prg recibes esa variable
MEMVAR lImpreso

3.- El la parte del código donde se imprime la vista previa (RPReview.Prg), en el que tengo yo
es en la parte:

Code: Select all

STATIC FUNCTION PrintPrv(oDlg, nOption, nPageIni, nPageEnd)

LOCAL oDevice := DEVICE
LOCAL aFiles := oDevice:aMeta
LOCAL hMeta := oMeta1:hMeta
LOCAL nFor

CursorWait()

StartDoc(oDevice:hDC, oDevice:cDocument )

lImpreso := (.T.)  ////   Aquí  *******************************
 
cambias la variable a TRUE

4.- Ya en la parte de tu aplicación puedes hacer lo que desees una vez que la variable lImpreso
esta en TRUE

Ojalá te sirva el ejemplo, Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control Botón de Impresión

Post by cnavarro »

Es cuestion de gustos, en mi pueblo se dice "Cada maestrillo tiene su librillo" :D
Este es mi "librillo": Todos tenemos versiones personalizadas de varias ( e incluso muchas ) clases
Al igual que a Leandro, no me gusta modificar las clases, ya que en futuras actualizaciones de Fwh tengo que estar comparando con las actualizaciones de esas clases si deseo utilizar las novedades y mejoras que traen.
Con el EXTEND CLASS solo me preocupo de comparar ese/esos metodo(s) en concreto que puedo tener agrupados en un solo PRG, así en el caso de que dichas actualizaciones ya contemplen o mejoren los requisitos que necesito, solo tengo que borrar dicho metodo del modulo de EXTENDS.PRG que añado a los proyectos como un PRG mas.
Saludos
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Control Botón de Impresión

Post by leandro »

Cristobal y Armando Gracias por responder.

Armando la verdad es que no me gusta eso de modificar las clases, una vez lo hice asi y tuve muchos problemas. De todas formas voy a intentarlo solo para probar.

Cristobal gracias por la ayuda, voy a seguir tu consejo.

Pruebo y comento.
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Control Botón de Impresión

Post by antolin »

Si añades un codeblock, por ejemplo, bPrint, y lo llamasdesde el método PrintPrv:

Code: Select all

DATA bPrint
...
...

METHOD PRINTPRV()
...
if ::bPrint # NIL
   EVAL(::bPrint,Self,...)
endif
...
El cambio es muy pequeño y no tiene que modificar ningún programa. Y ya lo tienes para los restos. Estoy pensando en hacerlo para mi, por lo que pueda pasar...

Un saludo.
Peaaaaaso de foro...
Post Reply