Jump to content
Fivewin Brasil

Dúvida com PRINTER no FiveWin 13.02


reneumg

Recommended Posts

Bom dia pessoal.
Estou tentando fazer uma impressao usando o Fw 13.02 BCC5.82 e esta acontecento o seguinte.
Depois da impressao ao inves de parar no preview da impressao ele volta para a Dialog que pedi a impressao e a impressao fica embaixo desta dialog.
Como resolver isso?

Desde ja Agradeco quem puder me ajudar.

Fontes Abaixo -;

//------------------------------------------------------------//
* FUNCION : F_RelFichaProd() -> NIL
* * * *
FUNCTION F_RelFichaProd()
Local oDlg, oLst, oDbfCd, oGet[6], lNv:=.f.
Local aTipo:={.t.,.f.,.f.,.f.}

If !Acesso_Modulo("R")
Return .f.
EndIf
vBusca:=""
Select("PRODUTO")
DATABASE oDbfCd
oDbfCd:Load()
oDbfCd:bEoF := {|| NIL}
oDbfCd:bBoF := {|| NIL}

F_OrdScope( "MATPROD", PRODUTO->COD_PRO)
MATPROD->(DbSetRelation("MATERIAL",{||MATPROD->COD_MAT},"MATPROD->COD_MAT"))
PRODUTO->(DbSetRelation("GRUPOPRO",{||PRODUTO->GRUP_PRO},"PRODUTO->GRUP_PRO"))

DEFINE DIALOG oDlg RESOURCE "Dlg_FichaTecPro"

REDEFINE GET oGet[1] VAR oDbfCD:COD_PRO ID 101 OF oDlg UPDATE ;
PICTURE "@R 99/99.999" WHEN .f.

REDEFINE GET oGet[2] VAR oDbfCD:NOME ID 102 OF oDlg UPDATE ;
PICTURE "@!" WHEN .f.

REDEFINE CHECKBOX oGet[3] var aTipo[1] ID 103 OF oDlg ;
ON CLICK ( aTipo:={.t.,.f.,.f.,.f.}, F_Refresh(oGet, 3, 6))

REDEFINE CHECKBOX oGet[4] var aTipo[2] ID 104 OF oDlg ;
ON CLICK ( aTipo:={.f.,.t.,.f.,.f.}, F_Refresh(oGet, 3, 6))

REDEFINE CHECKBOX oGet[5] var aTipo[3] ID 105 OF oDlg ;
ON CLICK ( aTipo:={.f.,.f.,.t.,.f.}, F_Refresh(oGet, 3, 6))

REDEFINE CHECKBOX oGet[6] var aTipo[4] ID 106 OF oDlg ;
ON CLICK ( aTipo:={.f.,.f.,.f.,.t.}, F_Refresh(oGet, 3, 6))

REDEFINE LISTBOX oLbx1 ;
FIELDS PRODUTO->COD_PRO,;
PRODUTO->NOME,;
PRODUTO->UNIDADE ;
ID 200 OF oDlg ;
FIELDSIZES 90, 330, 45 ;
TITLE "Codigo", "Descrição", "Unid." ;
ON LEFT DBLCLICK (BscFocus(oGet[3]) ) ;
ON CHANGE (oDbfCD:Load(), F_OrdScope( "MATPROD", oDbfCD:COD_PRO), F_Refresh(oGet, 1, 2)) ;
COLOR CLR_BLUE

oLbx1:bGoTop:={|| 1 }
oLbx1:cAlias:= "PRODUTO"
oLbx1:bKeyChar = { | nKey | LstBusca( oLbx1, nKey ) }
oLbx1:aActions:= {{|| PRODUTO->(dbSetOrder(1)),oLbx1:Refresh() },;
{|| PRODUTO->(dbSetOrder(2)),oLbx1:Refresh() }}

oGet[1]:lDisColors := .f.
oGet[2]:lDisColors := .f.

REDEFINE BTNBMP ID 10 OF oDlg RESOURCE "Print32" ;
TOOLTIP "Imprimir o Produto" ;
NOBORDER ;
ACTION (ImprFichaProduto("MATPROD", aTipo))

REDEFINE BTNBMP ID 20 OF oDlg RESOURCE "Cancel" ;
TOOLTIP "Sair do Modulo" ;
NOBORDER ACTION (oDlg:End())

ACTIVATE DIALOG oDlg Center

RETURN ( NIL )

***************************************************************************************
Function ImprFichaProduto(oAuxil, aT_Prc)
Local oFnt[4], oPn[3], oLi, oLb , oPag:=1, oTot:=0
Local oT_Incid:=0, oMarg:=0, oMark:=0, oPreco
Public oPrn

oLi:=0.6
PRINTER oPrn FROM USER preview NAME "Ficha Técnica do Produto" // Escolhe a Impressora

// oPrn:SetLandScape() // Paisagem
oPrn:SetPortrait() //Retrato
oPrn:SetPage(9) //A4
oPrn:SetSize(2150,2790)
If Empty( oPrn:hDC )
msgalert("Impressora não esta Instalada!!!")
Return nil // Printer was not installed or ready
Endif

Define FONT oFnt[1] NAME "Ms Sans Serif" SIZE 0, -6 OF oPrn
Define FONT oFnt[2] NAME "Ms Sans Serif" SIZE 0, -8 OF oPrn BOLD
Define FONT oFnt[3] NAME "Ms Sans Serif" SIZE 0, -10 OF oPrn ITALIC
Define FONT oFnt[4] NAME "Times New Roman" SIZE 0, -14 OF oPrn

Define PEN oPn[1] width 0.5 of oPrn
Define PEN oPn[2] width 1 of oPrn
Define PEN oPn[3] width 3 of oPrn

PAGE
oLi+=0.4
SayTxt( oLi, 5.30 , "FICHA DE COMPOSIÇÃO DO PRODUTO", oFnt[4], oprn)
SayBox( oLi, 0.2 , oLi+.6, 20.0 , oPrn , oPn[1])
oLi+=0.6
SayTxt( oLi, 0.40 , "Código", oFnt[1], oprn)
SayTxt( oLi, 3.10 , "Descrição do Produto", oFnt[1], oprn)
SayTxt( oLi,12.60 , "Unid.", oFnt[1], oprn)
SayTxt( oLi,14.40 , "Grupo de Venda", oFnt[1], oprn)

SayTxt( oLi+.2, 0.40 , PRODUTO->COD_PRO, oFnt[3], oprn)
SayTxt( oLi+.2, 3.10 , PRODUTO->NOME , oFnt[3], oprn)
SayTxt( oLi+.2,12.60 , PRODUTO->UNIDADE, oFnt[3], oprn)
SayTxt( oLi+.2,14.40 , GRUPOPRO->GRUP_PRO+"-"+GRUPOPRO->DESCR, oFnt[3], oprn)

SayBox( oLi, 0.2 , oLi+.6, 03.0 , oPrn , oPn[1])
SayBox( oLi, 3.0 , oLi+.6, 12.5 , oPrn , oPn[1])
SayBox( oLi,12.5 , oLi+.6, 14.3 , oPrn , oPn[1])
SayBox( oLi,14.3 , oLi+.6, 20.0 , oPrn , oPn[1])
oLi+=0.6
(oAuxil)->(DbGotop())
Do While !(oAuxil)->(Eof())
oPreco:=iif(aT_Prc[2], MATERIAL->ULT_PRECO,;
iif(aT_Prc[3], MATERIAL->MED_PRECO,;
iif(aT_Prc[4], MATERIAL->MOR_PRECO, MATERIAL->COT_PRECO)))

SayTxt( oLi, 0.30 , "Código", oFnt[1], oprn)
SayTxt( oLi, 1.80 , "Descrição do Material", oFnt[1], oprn)
SayTxt( oLi, 9.30 , "Quantidade", oFnt[1], oprn)
SayTxt( oLi,10.50 , "Peso Espec.", oFnt[1], oprn)
SayTxt( oLi,12.10 , "ICMS", oFnt[1], oprn)
SayTxt( oLi,13.35 , "IPI", oFnt[1], oprn)
SayTxt( oLi,14.40 , "Qtde Total", oFnt[1], oprn)
SayTxt( oLi,16.60 , "Val. Unitário", oFnt[1], oprn)
SayTxt( oLi,18.60 , "Valor Total", oFnt[1], oprn)

SayTxt( oLi+.2, 0.40 , Transform(MATPROD->COD_MAT, [@R 99/99.999] ), oFnt[2], oprn)
SayTxt( oLi+.2, 1.90 , MATERIAL->NOME , oFnt[2], oprn)
SayTxt( oLi+.2, 9.20 , Transform(MATPROD->QTD_TOT, [@E 99,999.999] ), oFnt[2], oprn)
SayTxt( oLi+.2,10.40 , Transform(MATERIAL->PESO_ESP, [@E 9,999.9999] ) , oFnt[2], oprn)
SayTxt( oLi+.2,12.00 , Transform(MATERIAL->ICMS, [@E 99.99] )+"%" , oFnt[2], oprn)
SayTxt( oLi+.2,13.10 , Transform(MATERIAL->IPI, [@E 999.99] )+"%" , oFnt[2], oprn)
SayTxt( oLi+.2,14.30 , Transform(F_QtdeTotal(), [@E 9,999,999.999] )+" "+MATPROD->UNIDADE, oFnt[2], oprn)
SayTxt( oLi+.2,16.40 , Transform(oPreco, [@E 9,999,999.999] ), oFnt[2], oprn)
SayTxt( oLi+.2,18.10 , Transform(F_CstTotal(F_QtdeTotal(), aT_Prc), [@E 9,999,999.99] ), oFnt[2], oprn)

SayBox( oLi, 0.2 , oLi+.5, 01.7 , oPrn , oPn[1])
SayBox( oLi, 1.7 , oLi+.5, 09.2 , oPrn , oPn[1])
SayBox( oLi,09.2 , oLi+.5, 10.4 , oPrn , oPn[1])
SayBox( oLi,10.4 , oLi+.5, 11.9 , oPrn , oPn[1])
SayBox( oLi,11.9 , oLi+.5, 13.1 , oPrn , oPn[1])
SayBox( oLi,13.1 , oLi+.5, 14.3 , oPrn , oPn[1])
SayBox( oLi,14.3 , oLi+.5, 16.4 , oPrn , oPn[1])
SayBox( oLi,16.4 , oLi+.5, 18.0 , oPrn , oPn[1])
SayBox( oLi,18.0 , oLi+.5, 20.0 , oPrn , oPn[1])
oLi+=0.5
oTot+=F_CstTotal(F_QtdeTotal(), aT_Prc)
// oLi+=1.2
If oLi >= 25
ENDPAGE
oLi:=0.6
PAGE
EndIf
(oAuxil)->(DBSkip())
EndDo
Tot_Encargos(oTot, @oT_Incid, @oMarg, @oMark)

SayTxt( oLi, 0.30 , "Incidências", oFnt[1], oprn)
SayTxt( oLi, 2.10 , "Marg. Lucro", oFnt[1], oprn)
SayTxt( oLi, 4.10 , "Mark Up", oFnt[1], oprn)
SayTxt( oLi, 6.10 , "Preço Venda", oFnt[1], oprn)
SayTxt( oLi,18.10 , "Custo Total", oFnt[1], oprn)

SayTxt( oLi+.2, 0.3, Transform(oT_Incid, [@E 999.99] )+"%", oFnt[3], oprn)
SayTxt( oLi+.2, 2.1, Transform(oMarg, [@E 999.99] )+"%", oFnt[3], oprn)
SayTxt( oLi+.2, 4.1, Transform(oMark, [@E 99.99999] ), oFnt[3], oprn)
SayTxt( oLi+.2, 6.1, Transform(oTot*oMark, [@E 99,999,999.99] ), oFnt[3], oprn)
SayTxt( oLi+.2,18.1, Transform(oTot, [@E 9,999,999.99] ), oFnt[3], oprn)

SayBox( oLi, 0.2 , oLi+.6, 2.0 , oPrn , oPn[1])
SayBox( oLi, 2.0 , oLi+.6, 4.0 , oPrn , oPn[1])
SayBox( oLi, 4.0 , oLi+.6, 6.0 , oPrn , oPn[1])
SayBox( oLi, 6.0 , oLi+.6, 8.5 , oPrn , oPn[1])
SayBox( oLi,18.0 , oLi+.6, 20.0 , oPrn , oPn[1])
oLi+=0.5
ENDPAGE

ENDPRINT

CursorArrow()
oFnt[1]:End() // Destroy the font object
oFnt[2]:End() // Destroy the font object
oFnt[3]:End() // Destroy the font object
oFnt[4]:End() // Destroy the font object

oPn[1]:End() // Destroy the font object
oPn[2]:End() // Destroy the font object
oPn[3]:End() // Destroy the font object
Return nil

Link to comment
Share on other sites

Olá

Utilize o parâmetro da TPrinter para MODAL

PRINTER oPrn FROM USER PREVIEW NAME "Impressao" MODAL

ou utilize a PrintBegin, acho bem mais fácil

oPrinter:=PrintBegin("Impressão", .T., .T., NIL, .T.)

Abraço

PS: o post q vc fez ficou muito ruim de ler pois alguns caracteres especiais não ficaram corretos, antes de postar outra coisa veja se consegue corrigir isso

Link to comment
Share on other sites

Valeu Yury deu certo sua dica

*Mudei este

//PRINTER oPrn FROM USER preview NAME "Ficha Técnica do Produto" MODAL // Escolhe a Impressora

*Para Este

oPrn:=PrintBegin("Ficha Técnica do Produto", .T., .T., NIL, .T.)

Ah não tinha visto que tinha ficado daquele jeito, tá corrigido.

Obrigado.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...