FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour PREVIEW
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
PREVIEW
Posted: Thu Nov 05, 2009 09:21 AM

Vengo utilizando para los informes el comando REPORT, ya que me resulta mas intuitivo que usar el oReport:=....

Estoy intentado, mediante una opci贸n previa marcada por el usuario, que pueda mostrar el previo o no, pero el comando no admite ninguna variaci贸n.

Tambien he intentado con oReport:lScreen:= .T., pero da error.

He leido en el siguiente tema: viewtopic.php?f=20&t=1525&hilit=lscreen
una contestaci贸n del maestro Giordano, diciendo que no se puede. Como es una contestaci贸n antigua, no s茅 si posteriormente alguien lo ha logrado.

Un saludo



Manuel
Posts: 189
Joined: Wed Apr 05, 2006 09:48 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 10:46 AM

Manuel, esto te tiene que funcionar

IF ::nDevice == 1 // Vista Previa

PRINT ::oPrn NAME ::cDlgTitle PREVIEW TO ::cPrinter

REPORT ::oReport ;
    TITLE " "," ",  " " , " "," ", " ", " ", " ",::cTitulo1,::cTitulo2,iif(::cTitulo3!=NIL,::cTitulo3," ") CENTERED;
FONT   ::oFont3, ::oFont2, ::oFont1 ;
    HEADER ' ', ::cDlgTitle CENTERED   ;
    FOOTER ' ', "Fecha: "+dtoc(date())+ "   P谩gina.: "+str(::oReport:nPage,3) ;
    CAPTION  oVar:cVersion  ;
    TO DEVICE  ::oPrn

ELSEIF ::nDevice == 2 // Imprimir

    REPORT ::oReport ;
    TITLE  " ",::cTitulo1,::cTitulo2,iif(::cTitulo3!=NIL,::cTitulo3," ") CENTERED;
    FONT   ::oFont3, ::oFont2, ::oFont1 ;
    HEADER ' ', ::cDlgTitle  ;
    FOOTER ' ', "Fecha: "+dtoc(date())+ "   P谩gina.: "+str(::oReport:nPage,3) ;
    CAPTION oVar:cVersion

ENDIF

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 12:17 PM
Hola...
Yo lo hagho as铆.

Code (fw): Select all Collapse
AntesDeImp(oBrush1,oWnd,@vChkSI,@vChkVP,@IfImp) // Ac谩 modifico los variables vChkSI y vChkVP 

IF vChkSI
聽 聽GetPrintDc()
ENDIF

IF vChkVP
聽 聽REPORT oReport TITLE Titulo CENTER;
聽 聽 聽 聽 聽 HEADER Empresa,Titulo2 LEFT;
聽 聽 聽 聽 聽 FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
聽 聽 聽 聽 聽 FONT oFont0,oFont1,oFont2,oFont3;
聽 聽 聽 聽 聽 PREVIEW;
聽 聽 聽 聽 聽 CAPTION "Vista previa del listado"
ELSE
聽 聽REPORT oReport TITLE Titulo CENTER;
聽 聽 聽 聽 聽 HEADER Empresa,Titulo2 LEFT;
聽 聽 聽 聽 聽 FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
聽 聽 聽 聽 聽 FONT oFont0,oFont1,oFont2,oFont3;
聽 聽 聽 聽 聽 CAPTION "Vista previa del listado"
ENDIF


Code (fw): Select all Collapse
// PREGUNTO SI SELECCIONA IMPRESORA Y VE VISTA PREVIA Y POR DONDE SALE
Function AntesDeImp(oBrush,oDlg,vChkSI,vChkVP,IfImp)
Local oDlg1,Btn1,Btn2,oGet1,oFont1

oBrush1:=oBrush

DEFINE FONT oFont1 NAME "ROMAN" SIZE 0,-12 BOLD

DEFINE DIALOG oDlg1 RESOURCE "ANTESDEIMP1" OF oDlg ICON "A_ICONO1";
聽 聽TRANSPARENT BRUSH oBrush1

聽 聽REDEFINE CHECKBOX vChkSI 聽 聽 ID 100 OF oDlg1
聽 聽REDEFINE CHECKBOX vChkVP 聽 聽 ID 101 OF oDlg1

聽 聽REDEFINE BTNBMP Btn1 ID 200 OF oDlg1 RESOURCE "ACEPTAR22" LEFT;
聽 聽 聽 ACTION IfImp:=.t., oDlg1:End();
聽 聽 聽 PROMPT "Aceptar" 2007;
聽 聽 聽 TOOLTIP "Aceptar" FONT oFont1

聽 聽REDEFINE BTNBMP Btn2 ID 201 OF oDlg1 RESOURCE "CANCELAR22" LEFT;
聽 聽 聽 ACTION IfImp:=.f., oDlg1:End();
聽 聽 聽 PROMPT "Cancelar" 2007;
聽 聽 聽 TOOLTIP "Cancelar" FONT oFont1

聽 聽Btn1:bGotFocus :={|| Btn1:bClrGrad:=bClrGradGF,Btn1:refresh()}
聽 聽Btn1:bLostFocus:={|| Btn1:bClrGrad:=bClrGradLF,Btn1:refresh()}

聽 聽Btn2:bGotFocus :={|| Btn2:bClrGrad:=bClrGradGF,Btn2:refresh()}
聽 聽Btn2:bLostFocus:={|| Btn2:bClrGrad:=bClrGradLF,Btn2:refresh()}

ACTIVATE DIALOG oDlg1 CENTERED

oFont1:End()

Return nil
//


Ac谩 la imagen para que te des una idea:



Espero te sirva.

Saludos, Esteban.
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 09:31 PM
Muchas gracias a los dos por vuestra ayuda. Actualmente lo tengo planteado de una forma parecida a la que exponeis. Seguramente no me he explicado bien, ya que lo que busco es hacer un solo comando de REPORT (no dos) que sirva para PREVIEW y no PREVIEW y no tener que repetir, dos veces, el mismo c贸digo del report, quitando o poniendo, la palabra PREVIEW.

Por ejemplo, modificando el c贸digo de Esteban:

聽 聽REPORT oReport TITLE Titulo CENTER;
聽 聽 聽 聽 聽 HEADER Empresa,Titulo2 LEFT;
聽 聽 聽 聽 聽 FOOTER "Fecha:"+DTOC(Date())+" Hora:"+Time()+" Pagina:"+STR(oReport:nPage,3) RIGHT;
聽 聽 聽 聽 聽 FONT oFont0,oFont1,oFont2,oFont3;
聽 聽 聽 聽 聽 IF ( lNoPrevio, , PREVIEW) ; 聽 聽 聽 聽 聽
CAPTION "Vista previa del listado"


Esto no funciona y oReport:=.f. tampoco.
Un saludo



Manuel
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 09:49 PM

???

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 11:14 PM
Manuel:

A ver si entend铆 bien, primero creas una variable digamos lPreview

Code (fw): Select all Collapse
IF algo
   lPreview := (.T.)
ELSE
   lPreview := (.F.)
ENDIF

REPORT oReporte CAPTION cTitulo lPreview


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: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: PREVIEW
Posted: Thu Nov 05, 2009 11:42 PM
Manuel,

Yo propondr铆a una peque帽a variaci贸n del c贸digo de Armando, repitiendo solo la primera l铆nea del comando:
Code (fw): Select all Collapse
if lPreview
聽 聽REPORT oRpt ... PREVIEW
else
聽 聽REPORT oRpt ...
endif

y el resto del c贸digo del reporte sin variaci贸n
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: PREVIEW
Posted: Fri Nov 06, 2009 04:31 AM
Antonio Linares wrote:Manuel,

Yo propondr铆a una peque帽a variaci贸n del c贸digo de Armando, repitiendo solo la primera l铆nea del comando:
Code (fw): Select all Collapse
if lPreview
聽 聽REPORT oRpt ... PREVIEW
else
聽 聽REPORT oRpt ...
endif

y el resto del c贸digo del reporte sin variaci贸n


Entonces estamos en las mismas.

Asi es como lo tengo actualmente y lo que queria, simplemente, es mejorar el c贸digo. Pero por lo que veo, hay que duplicar OBLIGATORIAMENTE el comando REPORT.

Muchas gracias a todos.
Un saludo



Manuel
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: PREVIEW
Posted: Fri Nov 06, 2009 12:52 PM
Hola, es solo una idea:
Salu2

Code (fw): Select all Collapse
If lSipreview
   cPrev := "PREVIEW"
  eLSE
   cPrev := ""
EndIf

REPORT oRpt ... &cPrev
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: PREVIEW
Posted: Fri Nov 06, 2009 09:07 PM
Willi Quintana wrote:Hola, es solo una idea:
Salu2

Code (fw): Select all Collapse
If lSipreview
聽 聽cPrev := "PREVIEW"
聽 eLSE
聽 聽cPrev := ""
EndIf

REPORT oRpt ... &cPrev


Gracias Willi por contestar. Ya no prob茅 y no funciona. Curiosamente en el fichero ppo. sigue figurando la variable de la siguiente manera:

oReport := &cPrevio := RptBegin({{
Un saludo



Manuel
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: PREVIEW
Posted: Fri Nov 06, 2009 11:45 PM
Manuel,

La soluci贸n es sencilla: usar el c贸digo ya preprocesado
Code (fw): Select all Collapse
聽 <oReport> := RptBegin( {<{bTitle}>}, {<{bHead}>}, {<{bFoot}>},;
聽 聽 聽 聽 聽 聽 聽 聽 {<oFont>}, {<oPen>}, <.lSum.>, <cRptFile>, <cResName>,;
聽 聽 聽 聽 聽 聽 聽 聽 [<.toPrint.>], <.toScreen.>, <(toFile)>, <oDevice>, <cName>,;
聽 聽 聽 聽 聽 聽 聽 聽 [UPPER(<(TFmt)>)], [UPPER(<(HFmt)>)], [UPPER(<(FFmt)>)] )

Y reemplazar <.toScreen.> con una variable l贸gica lPreview
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 346
Joined: Mon Oct 05, 2009 03:35 PM
Re: PREVIEW
Posted: Sat Nov 07, 2009 05:43 AM

hola espero que te sirva:

el secreto esta en la definici贸n de las impresoras y luego pasarle la definici贸n impresora al report

e aqui el codigo:

el lImp maneja la desici贸n del usuario de ver o no el informe

function reporte( lImp )
local oPrn, oRpt

IF lImp ; PRINTER oPrn FROM USER PREVIEW
ELSE ; PRINTER oPrn
ENDIF

REPORT oRpt TITLE ...... < etc >...... TO DEVICE oPrn
...
...
RETURN nil


una pregunta y un solo cuerpo del report.

espero que esto te sirva

saludos desde Chile.

SkyPe: armando.lagunas@hotmail.com

Mail: armando.lagunas@gmail.com
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: PREVIEW
Posted: Sat Nov 07, 2009 06:23 AM
Antonio Linares wrote:Manuel,

La soluci贸n es sencilla: usar el c贸digo ya preprocesado
Code (fw): Select all Collapse
聽 <oReport> := RptBegin( {<{bTitle}>}, {<{bHead}>}, {<{bFoot}>},;
聽 聽 聽 聽 聽 聽 聽 聽 {<oFont>}, {<oPen>}, <.lSum.>, <cRptFile>, <cResName>,;
聽 聽 聽 聽 聽 聽 聽 聽 [<.toPrint.>], <.toScreen.>, <(toFile)>, <oDevice>, <cName>,;
聽 聽 聽 聽 聽 聽 聽 聽 [UPPER(<(TFmt)>)], [UPPER(<(HFmt)>)], [UPPER(<(FFmt)>)] )

Y reemplazar <.toScreen.> con una variable l贸gica lPreview


Antonio,

Como dec铆a en el primer mensaje de este hilo "Vengo utilizando para los informes el comando REPORT, ya que me resulta mas intuitivo que usar el oReport:=....".-

Con el c贸digo preprocesado funciona, pero es menos comprensible y por eso buscaba una soluci贸n con el comando.
Un saludo



Manuel
Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: PREVIEW
Posted: Sat Nov 07, 2009 06:25 AM
armando.lagunas wrote:
function reporte( lImp )
local oPrn, oRpt

IF lImp ; PRINTER oPrn FROM USER PREVIEW
ELSE ; PRINTER oPrn
ENDIF

REPORT oRpt TITLE ...... < etc >...... TO DEVICE oPrn
...
...
RETURN nil



Armando, muchas gracias. FUNCIONA PERFECTAMENTE.
Un saludo



Manuel

Continue the discussion