reneumg Posted October 22, 2013 Report Share Posted October 22, 2013 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:=0Local oT_Incid:=0, oMarg:=0, oMark:=0, oPrecoPublic oPrn oLi:=0.6PRINTER 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 objectoFnt[2]:End() // Destroy the font objectoFnt[3]:End() // Destroy the font objectoFnt[4]:End() // Destroy the font object oPn[1]:End() // Destroy the font objectoPn[2]:End() // Destroy the font objectoPn[3]:End() // Destroy the font objectReturn nil Quote Link to comment Share on other sites More sharing options...
Yury Posted October 22, 2013 Report Share Posted October 22, 2013 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 Quote Link to comment Share on other sites More sharing options...
reneumg Posted October 22, 2013 Author Report Share Posted October 22, 2013 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. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted October 22, 2013 Report Share Posted October 22, 2013 Quais são os parâmetros do PrintBegin() ? Existe algum parâmetro de inicialização do Print/Report para verificar se existe impressora instalada e não dar erro de impressão? Quote Link to comment Share on other sites More sharing options...
reneumg Posted October 22, 2013 Author Report Share Posted October 22, 2013 Boa Tarde Oscar De uma olhada na Classe, talvez vc tem essa resposta lá. C:\FWH\SOURCE\CLASSES\printer.prg oPrn := PrintBegin( oTitulo, ; // Titulo .F., ; // User lPreview,; // Preview nil, ; // Model lModal, .F. ) // lselect Abraços Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.