Control Botón de Impresión

Control Botón de Impresión

Postby leandro » Tue Sep 08, 2015 4:17 pm

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Control Botón de Impresión

Postby Antonio Linares » Tue Sep 08, 2015 5:36 pm

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
User avatar
Antonio Linares
Site Admin
 
Posts: 41315
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Control Botón de Impresión

Postby luisduque » Thu Sep 10, 2015 7:24 am

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
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Re: Control Botón de Impresión

Postby leandro » Thu Sep 10, 2015 1:29 pm

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Control Botón de Impresión

Postby cnavarro » Thu Sep 10, 2015 2:37 pm

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
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control Botón de Impresión

Postby Armando » Thu Sep 10, 2015 2:57 pm

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  Expand view

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
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Control Botón de Impresión

Postby cnavarro » Thu Sep 10, 2015 5:01 pm

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
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Control Botón de Impresión

Postby leandro » Fri Sep 11, 2015 9:44 pm

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Control Botón de Impresión

Postby antolin » Wed Sep 16, 2015 6:37 pm

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

Code: Select all  Expand view
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...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 93 guests

cron