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
imagen
Control Botón de Impresión
Control Botón de Impresión
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 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Control Botón de Impresión
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
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
Re: Control Botón de Impresión
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
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
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql
Ing. MSc. Luis Duque
http://www.accasoft.net
Re: Control Botón de Impresión
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 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Re: Control Botón de Impresión
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
.... 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.
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.
Re: Control Botón de Impresión
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:
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
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í *******************************
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Control Botón de Impresión
Es cuestion de gustos, en mi pueblo se dice "Cada maestrillo tiene su librillo"
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
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.
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.
Re: Control Botón de Impresión
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.
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 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Re: Control Botón de Impresión
Si añades un codeblock, por ejemplo, bPrint, y lo llamasdesde el método PrintPrv:
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.
Code: Select all
DATA bPrint
...
...
METHOD PRINTPRV()
...
if ::bPrint # NIL
EVAL(::bPrint,Self,...)
endif
...
Un saludo.
Peaaaaaso de foro...