FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Control Bot贸n de Impresi贸n
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Control Bot贸n de Impresi贸n
Posted: Tue Sep 08, 2015 04: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


imagen
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Control Bot贸n de Impresi贸n
Posted: Tue Sep 08, 2015 05: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
Posts: 133
Joined: Mon May 12, 2008 04:13 PM
Re: Control Bot贸n de Impresi贸n
Posted: Thu Sep 10, 2015 07: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
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Control Bot贸n de Impresi贸n
Posted: Thu Sep 10, 2015 01: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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Control Bot贸n de Impresi贸n
Posted: Thu Sep 10, 2015 02: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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Control Bot贸n de Impresi贸n
Posted: Thu Sep 10, 2015 02: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 (fw): Select all Collapse
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Control Bot贸n de Impresi贸n
Posted: Thu Sep 10, 2015 05: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
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Control Bot贸n de Impresi贸n
Posted: Fri Sep 11, 2015 09: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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Control Bot贸n de Impresi贸n
Posted: Wed Sep 16, 2015 06:37 PM
Si a帽ades un codeblock, por ejemplo, bPrint, y lo llamasdesde el m茅todo PrintPrv:

Code (fw): Select all Collapse
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...

FWH 2007 - xHarbour - BCC55

Continue the discussion