Enviar un hoja actual de varias por email con rpreview
Posted: Thu Jan 18, 2018 12:30 pm
Hola, por necesidades de la aplicación usando rpreview.prg con la opción de enviar por email se debe enviar una pagina determinada o unas determinadas, el código de envio de email lo he modificado pero no consigo que me envié solo una hoja o parte y estoy haciendo pruebas me ha error, y creo que estoy tan mareado que no encuentro el error, aunque estoy seguro que es una tonteria, os adjunto el codigo que he cambiado de rpreview.prg para ver si me podeis hechar una mano, primero he hecho que acceda al dialogo de elegir hoja, (funciona) y despues se va a sendemail y hay es donde me lio.
Muchas Gracias.
Codigo de elegir que pagina,s elegir :
Código Enviar email :
Muchas Gracias.
Codigo de elegir que pagina,s elegir :
Code: Select all | Expand
METHOD PrintPage(nvalue) 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
if nValue = 1
MsgRun( ::oDevice:cDocument, "Printing Report",;
{ || ::PrintPrv( nil, nOption, nFirst, nLast ) } )
else
::SendEmail(nil, nOption, nFirst, nLast) // --->AQUI ES DONDE LE DIGO QUE VAYA A SENDEMAIL
endif
endif
return nil
Código Enviar email :
Code: Select all | Expand
METHOD SendEmail(oDlg, nOption, nPageIni, nPageEnd ) CLASS TPreview
local oMail, cName, cFile
local ctext
local oDevice := ::oDevice // DEVICE
local aFiles := oDevice:aMeta
local hMeta := ::oMeta1:hMeta
local nFor
CursorWait()
StartDoc( oDevice:hDC, oDevice:cDocument )
do case
case nOption == 1 // All
for nFor := 1 to Len( aFiles )
* StartPage( oDevice:hDC )
hMeta := GetEnhMetaFile( aFiles[ nFor ] )
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
DeleteEnhMetafile( hMeta )
* EndPage( oDevice:hDC )
next
case nOption == 2 // Current page
* StartPage( oDevice:hDC )
hMeta := ::oMeta1:hMeta
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
* EndPage( oDevice:hDC )
case nOption == 3 // Range
for nFor := nPageIni to nPageEnd
* StartPage( oDevice:hDC )
hMeta := GetEnhMetaFile( aFiles[ nFor ] )
PlayEnhMetaFile( oDevice:hDC, hMeta,, .t. )
DeleteEnhMetafile( hMeta )
* EndPage( oDevice:hDC )
next
endcase
EndDoc( oDevice:hDC )
CursorArrow()
if oDlg != nil
oDlg:End()
endif
cName := If( ::oReport != nil, ::oReport:cName, ::oDevice:cDocument )
* cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ;
* Left( HB_TToS( HB_DateTime() ), 14 ) + ".pdf"
* cFile := cFilePath( ::oDevice:aMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ".pdf"
cFile := cFilePath( ::oDevice:hMeta[ 1 ] ) + StrTran( cName, '.', '' ) + ".pdf"
CursorWait()
cFiled := ::SaveAs( .t., cFile, .f. )
CursorArrow()
if ! File( cFile )
MsgInfo( FWString( "PDF not saved to send Email" ), FWString( "Information" ) )
elseif ::bEmail != nil
Eval( ::bEmail, Self, cName, cFile )
else
if !empty(vmailpre)
DEFINE MAIL oMail ;
SUBJECT cName ;
TEXT ctext ;
FILES cFile, cFiled;
FROM USER;
TO alltrim(vmailpre)
* FILES cFile, cFiled;
* TEXT ctext ;
else
DEFINE MAIL oMail ;
SUBJECT cName ;
TEXT ctext ;
FILES cFile, cFiled ;
FROM USER
* TEXT ctext ;
endif
ACTIVATE MAIL oMail
// MsgInfo( oMail:nRetCode )
endif
::oMeta1:SetFocus()
return nil