Arthur Silvestre Posted April 15, 2013 Report Share Posted April 15, 2013 Bom dia a todos, venho mais uma vez pedir a ajuda dos meus amigos. tenho uma situação em que preciso criar um relatório com o box, e dia modelar o relatório e deixar bem alinhado. o que acontece é o fato das impressoras não possuÃrem a mesma resolução, ou seja, gostaria de criar uma "resolução padrão". Espero que eu tenha sido compreensÃvel segue o código de como está atualmente. function Consu_DadosComp2 *Relatorio modelo fivewin cTitulo := 'Recibo De Pagamento ' tit := 'Recibo De Pagamento ' if FuncImp() = .f. return .f. endif PRINT oPrn NAME cTitulo PREVIEW * nTam :=18 nTamRel:=92 RESOLUCAO_IMPRESSORA() nTamPag:=66 tlin :=62 * DEFINE FONT oFontic NAME "Britannic Bold" size ntam+3,-12 OF oPrn DEFINE FONT oFonti1 NAME "Times New Roman" size ntam+1,-12 of oPrn DEFINE FONT oFonti2 NAME "Arial" size ntam,-12 OF oPrn DEFINE FONT oFont2 NAME 'ARIAL' SIZE 0,-8 OF oPrn DEFINE FONT oFonti3 NAME "Courier New" size ntam,-12 OF oPrn DEFINE FONT oFonti4 NAME "Arial" size ntam+9,-9 OF oPrn oprn:setfont(oFonti3) if empty( oprn:hdc ) MsgStop( "Impressora não está pronta !!!" ) return nil endif tpag=0 inicio=0 GeraPrev() page oPrn:SetLandScape() &&------------------------------------------------------------------------------&& mLarg := oFont2:nHeight nTab := oPrn:nHorzRes() / 85 nSpc := (oPrn:nHorzRes()-(2*nTab)) / 85 //oPrn:SayBitmap( ( 1 * mLarg ) , nTab+nSpc, , 83*nSpc, 98*mLarg ) oprn:box((1*mLarg),nTab+nSpc,(83*nSpc),(98*mLarg)) //oprn:box(060,40,6555,5050) //oprn:box(090,70,0400,5025) inicio++ &&------------------------------------------------------------------------------&& *FINAL DO RELATÓRIO oDlgPrev:End() if inicio=0 msginfo("Não Existem informações para imprimir...","Atenção") Return.f. endif oprn:lprvmodal:=.T. endpage endprint oFontic:end() oFonti1:end() oFonti2:end() oFonti3:end() return Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 15, 2013 Report Share Posted April 15, 2013 STATIC FUNCTION IMPRIMIR_CAIXA_DIA( DbPedidos, DbPedAnual, cDataInicial, ; cDataFinal, aGet, DeOndeParte ) LOCAL cAlias, oImagem, gcFile LOCAL ResColuna, ResLinha LOCAL oPrn, oFont, oFontLogo, oFontDivi, oFontList, ; oFontCurs, oPen1, oPen2, oPen3, oFontSubl LOCAL nLinha, nColuna // Linha e coluna da Descicao LOCAL nDinheiro, nCheque, nChequePre, nTickets, nCartaoCred,; nCartaoDebi, nContraVale, nPagina, nTotalGeral, xDataLista MEMVAR XCAIXAINI, XCAIXAFIN, XOPERAINI, XOPERAFIN PUBLIC XNOMEEMP, XCIDDIR XDATALISTA := ALLTRIM(XCIDDIR)+ ", " + ; LTRIM( STR( DAY( DATE() ) ) ) + ; " de " + ; OemToAnsi(CMONTH( DATE() )) + ; " de " + ; STR( YEAR( DATE() ) ) + ; "." // VariAveis Para Achar os Valores Que o Cliente Pagou nDinheiro := 0.00 nCheque := 0.00 nChequePre := 0.00 nTickets := 0.00 nCartaoCred := 0.00 nCartaoDebi := 0.00 nContraVale := 0.00 nTotalGeral := 0.00 cAlias := ALIAS() // DbPedidos //-> Mostra o Relatorio... Preview do Fluxo do Caixa PRINT oPrn NAME "Fluxo do Caixa Discriminado" PREVIEW MODAL IF EMPTY( oPrn:hDC ) RETURN NIL // Printer was not installed or ready ENDIF DEFINE FONT oFont NAME "Courier New" SIZE 0, -8 OF oPrn DEFINE FONT oFontDivi NAME "Courier New" SIZE 0, -12 BOLD OF oPrn DEFINE FONT oFontCurs NAME "Courier New" SIZE 0, -14 BOLD OF oPrn DEFINE FONT oFontSubl NAME "Courier New" SIZE 0, -16 BOLD UnderLine OF oPrn //-> Problemas com o Windows XP - Formato da FONTE Nao Reconhecido IF IsWinNT() .OR. IsWin2000() // Para Windows XP/NT e 2000 / 2003 DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -16 BOLD OF oPrn DEFINE FONT oFontList NAME "Courier New" SIZE 0, -20 BOLD OF oPrn ELSE //-> 95/98/ME DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -20 BOLD OF oPrn DEFINE FONT oFontList NAME "Courier New" SIZE 0, -22 BOLD OF oPrn ENDIF //-> Caneta do Preview DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BROWN OF oPrn DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN OF oPrn DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK OF oPrn oPrn:SetPage(9) //-> A4 //9 oPrn:SetPortrait() //-> Vertical(Retrato) //oPrn:SetLandscape() //-> Horizontal //- Como Imprimir em Centimetros sem errar e em qualquer Impressora ResLinha := oPrn:nVertRes() / 40 ResLinha := oPrn:nLogPixely() / 2.54 ResColuna := oPrn:nLogPixelx() / 2.54 nPagina := 1 PAGE nLinha := 0.50 nColuna := 10.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 1.00 //-> Data de Hoje oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 10.00 //-> Cabe‡alho oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) nColuna := 17.50 //-> Pagina oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 10.00 IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) + ; " - " + ; "Caixa Final..: " + STR( XCAIXAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) + ; " - " + ; "Operador Final..: " + ( XOPERAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ENDIF nLinha += 0.50 nColuna := 1.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Pula a Linha //-> Cabecalho oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Cà DIGO PROD " + SPACE(12) + ; "DESCRI€ÇO " + SPACE(10) + ; "VL. UNITµRIO " + SPACE(08) + ; "QTDE VENDIDA " + SPACE(10) + ; "TOTAL ÖTEM " ), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Pula a Linha oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Vou imprimir os produtos WHILE ( .NOT. EOF() ) SYSREFRESH() IF EOF() EXIT ENDIF IF nLinha >= 27 // Nova Pagina = 54 Linhas ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile PAGE // Nova Pagina - Abro uma nova pagina nPagina := nPagina + 1 nLinha := 0.50 nColuna := 10.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 1.00 //-> Data de Hoje oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 10.00 //-> Cabecalho oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) nColuna := 17.50 //-> Pagina oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "P gina: " + STRZERO( nPagina ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 10.00 IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Caixa Inicial: " + ; STR( XCAIXAINI ) + " - " + ; "Caixa Final..: " + ; STR( XCAIXAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Operador Inicial: " + ; ( XOPERAINI ) + " - " + ; "Operador Final..: " + ; ( XOPERAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ENDIF nLinha += 0.50 nColuna := 1.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Pula a Linha //-> Cabecalho oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Cà DIGO PROD " + SPACE(12) + ; "DESCRI€ÇO " + SPACE(11) + ; "VL. UNITµRIO " + SPACE(08) + ; "QTDE VENDIDA " + SPACE(10) + ; "TOTAL ÖTEM " ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Pula a Linha oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF nColuna := 1.00 //-> Codigo do Produto oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; ( cAlias )->CODIGO, oFont,, CLR_BLACK,, PAD_LEFT ) nColuna := 3.50 //-> Nome do Produto oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; SUBSTR(( cAlias )->DESCRICAO,1,30), oFont,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 9.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; TRANSF((( cAlias )->VLUNITARIO), ; "@E 999,999,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 12.50 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; TRANSF((( cAlias )->QTD_VENDEU), ; "999999999999.99" ), oFont,, CLR_BLACK,, PAD_LEFT ) nColuna := 15.50 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; TRANSF((( cAlias )->TOTITEM), ; "@E 999,999,999,999.99" ), oFont,, CLR_BLACK,, PAD_LEFT ) nColuna := 1.00 nLinha += 0.30 //-> Pula a Linha oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nDinheiro := nDinheiro + ( cAlias )->DINHEIRO - ; ( cAlias )->TROCOCLIEN nCheque := nCheque + ( cAlias )->CHEQUE nChequePre := nChequePre + ( cAlias )->CHEQUEPRE nTickets := nTickets + ( cAlias )->TICKETS nCartaoCred := nCartaoCred + ( cAlias )->CARTAOCRED nCartaoDebi := nCartaoDebi + ( cAlias )->CARTAODEBI nContraVale := nContraVale + ( cAlias )->CONTRAVALE nTotalGeral := nTotalGeral + ( cAlias )->TOTPEDIDO SKIP // Proximo Produto nLinha += 0.50 //-> Pula a Linha Para o Proximo Produto ENDDO IF nLinha >= 27 // Nova Pagina = 54 Linhas ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile PAGE // Nova Pagina - Abro uma nova pagina nPagina := nPagina + 1 nLinha := 0.50 nColuna := 10.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 1.00 //-> Data de Hoje oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 10.00 //-> Cabecalho oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) nColuna := 17.50 //-> Pagina oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinha += 0.50 nColuna := 10.00 IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) + ; " - " + ; "Caixa Final..: " + STR( XCAIXAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) + ; " - " + ; "Operador Final..: " + ( XOPERAFIN ) ), ; oFont,, CLR_BLACK,, PAD_CENTER ) ENDIF nLinha += 0.50 nColuna := 1.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 //-> Pula a Linha ENDIF nColuna := 1.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "TOTAL GERAL: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) nColuna := 14.00 //-> Total Geral oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; TRANSF( nTotalGeral, "@E 999,999,999,999.99" ), ; oFontDivi,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.50 nColuna := 1.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT ) nLinha += 0.50 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "RESUMO GERAL: ", oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.50 nColuna := 1.00 IF nDinheiro > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM DINHEIRO..: " + ; TRANSF( nDinheiro, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nCheque > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM CHEQUE....: " + ; TRANSF( nCheque, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nChequePre > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM CHEQUE PRE: " + ; TRANSF( nChequePre, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nTickets > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM TICKETS...: " + ; TRANSF( nTickets, "@E 999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nCartaoCred > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM C. CREDITO: " + ; TRANSF( nCartaoCred, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nCartaoDebi > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM C. DEBITO.: " + ; TRANSF( nCartaoDebi, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF IF nContraVale > 0 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "EM C. VALE...: " + ; TRANSF( nContraVale, "@E 9,999,999.99" ), oFont,, ; CLR_BLACK,, PAD_LEFT ) nLinha += 0.30 ENDIF nLinha += 0.50 nColuna := 14.00 oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "" + XDATALISTA, ; oFont,, CLR_BLACK,, PAD_CENTER ) nLinha ++ oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ; "________________________________"+ ; "__________", ; oFont,, CLR_BLACK,, PAD_CENTER ) nLinha += 0.30 ENDPAGE ENDPRINT oFont:End() oFontLogo:End() oFontDivi:End() oFontList:End() oFontCurs:End() oFontSubl:End() oPen1:End() oPen2:End() oPen3:End() RETURN NIL Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 16, 2013 Report Share Posted April 16, 2013 Kapiaba Isso é uma pergunta? Ou já é a resposta? Att João Bosco Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 16, 2013 Report Share Posted April 16, 2013 A pergunta é do Arthur Silvestre, veja: gostaria de criar uma "resolução padrão". Minha Resposta: //- Como Imprimir em Centimetros sem errar e em qualquer Impressora ResLinha := oPrn:nVertRes() / 40 ResLinha := oPrn:nLogPixely() / 2.54 ResColuna := oPrn:nLogPixelx() / 2.54 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted April 17, 2013 Author Report Share Posted April 17, 2013 A pergunta é do Arthur Silvestre, veja: gostaria de criar uma "resolução padrão". Minha Resposta: //- Como Imprimir em Centimetros sem errar e em qualquer Impressora ResLinha := oPrn:nVertRes() / 40 ResLinha := oPrn:nLogPixely() / 2.54 ResColuna := oPrn:nLogPixelx() / 2.54 Desculpa tanta demora em responder. O que vou utilizar é um "oprn:Box( , , , )" e quando mudo de uma lx300 para uma deskjet ou uma com uma pixelação a 900 ou 1000 ele alterna os tamanhos, mesmo com esse esquema ai kapiaba Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 17, 2013 Report Share Posted April 17, 2013 É mesmo? Tá fazendo assim?? STATIC FUNCTION IMPRIME_LISTANOTAS( lAppend, oDbfTabela, oDbfCadDig, ; oDbfTurmas, oDbfVendedor, ; oDbfEmpresa ) LOCAL nPulaLinha //-> Para os For...Next - Final LOCAL oPrn, oFont, oFontLogo, oFontDivi, oFontList, ; oFontCurs, oPen1, oPen2, oPen3, oFontSubl LOCAL nLinAlun LOCAL nColAlun //-> Linhas Para Quinze Nomes Inicialmente Primeiro Preview LOCAL nLinInNomes, nColInNomes, nLinFiNomes, nColFiNomes LOCAL nLinMaisNom, nColMaisNom LOCAL nLinLogo, nColLogo LOCAL ResColuna, ResLinha LOCAL nLinNome, nColNome LOCAL nLinNume, nColNume LOCAL nLinNCpf, nColNCpf LOCAL nLinMod1, nColMod1 LOCAL nLinMod2, nColMod2 LOCAL nLinMod3, nColMod3 LOCAL nLinMod4, nColMod4 MEMVAR XNOMEEMP, XPORTARIA, XENDERECO, XTELEFONE, XEMAIL, XOFICIO, XNOMECUR MEMVAR XCOD, XTURMA1, XDE1, XA1, XHRINI1, XHRTER1, XSALA1, XTOTCARG MEMVAR XCOMPTURM, XDIRETOR, XCREDENCIAL EXTERNAL ISPRINTER IF .NOT. ISPRINTER() SndPlaySound(".\Erro.wav" ) Checa_Imp() // Checar Se a Impressora Est Ativa.. Return Nil ENDIF CursorWait() SELECT ( oDbfCadDig:cAlias ) // Seleciona o Alias oDbfCadDig:SetOrder( 2 ) //-> Por Nome do Aluno - Michelle Alfa oDbfCadDig:GoTop() //-> Pegar as Turmas do Curso - Filtro Por Ordem Alfab‚tica - Michelle SET FILTER TO ( oDbfCadDig:cAlias )->TURMA = XTURMA1 .AND. ; ( oDbfCadDig:cAlias )->COD = XCOD GO TOP //-> Mostra o Relat¢rio... PRINTER oPrn NAME "Relatório da Lista de Notas dos Alunos" PREVIEW MODAL DEFINE FONT oFont NAME "Arial" SIZE 0, -10 BOLD OF oPrn DEFINE FONT oFontDivi NAME "ARIAL" SIZE 0, -12 BOLD OF oPrn DEFINE FONT oFontCurs NAME "ARIAL" SIZE 0, -14 BOLD OF oPrn DEFINE FONT oFontSubl NAME "ARIAL" SIZE 0, -15 BOLD UnderLine OF oPrn DEFINE FONT oFontLogo NAME "ARIAL" SIZE 0, -20 BOLD OF oPrn DEFINE FONT oFontList NAME "ARIAL" SIZE 0, -26 BOLD OF oPrn //-> Caneta do Preview DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BLACK OF oPrn DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BLACK OF oPrn DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK OF oPrn oPrn:SetPage(9) //->Folha oPrn:SetLandScape() //->Horizontal(Paisagem) //- Como Imprimir em Centimetros sem errar e em qualquer Impressora ResLinha := oPrn:nLogPixely()/2.54 ResColuna := oPrn:nLogPixelx()/2.54 PAGE //-> µrea dos Boxes do Relat¢rio---------------------------------// //-> Box do Logo oPrn:Box( 0.23 * ResLinha, 0.20 * ResColuna, ; 2.41 * ResLinha, 27.70 * ResColuna, oPen3 ) //-> µrea do Texto do Primeiro Box oPrn:Say( 0.60 * ResLinha, 9.00 * ResColuna, ; "DETRAN-SP", oFontLogo,, ; CLR_BLACK,, PAD_CENTER ) oPrn:Say( 1.40 * ResLinha, 8.50 * ResColuna, ; "DIVISÃO DE EDUCAÇÃO DE TRÂNSITO", ; oFontCurs,, ; CLR_BLACK,, PAD_CENTER ) //-> µrea do Texto do Segundo Box oPrn:Say( 0.90 * ResLinha, 20.50 * ResColuna, ; "LISTA DE NOTAS", oFontList,, ; CLR_BLACK,, PAD_CENTER ) //-> Faz um Tra‡o Vertical no Meio do Logo nLinLogo := 0.20 nColLogo := 13.85 FOR nPulaLinha = 1 TO 20 oPrn:Say( nLinLogo * ResLinha, nColLogo * ResColuna, "|", ; oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) nLinLogo += 0.09 NEXT nPulaLinha //-> Linha Coluna oPrn:SayBitMap( 0.30 * ResLinha, 0.50 * ResColuna, ; "DETRAN2.BMP", ; 2.50 * ResLinha, 1.95 * ResColuna ) //-> Linha em Branco Para Fecha a Pagina, Embaixo do Logo oPrn:Box( 2.40 * ResLinha, 0.20 * ResColuna, ; 2.90 * ResLinha, 27.70 * ResColuna, oPen1 ) //-> Box da Empresa oPrn:Box( 2.89 * ResLinha, 0.20 * ResColuna, ; 3.40 * ResColuna, 27.70 * ResColuna, oPen1 ) oPrn:Say( 2.90 * ResLinha, 0.50 * ResColuna, ; "NOME DA EMPRESA: " + XNOMEEMP, oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Linha em Branco Para Fechar a Pagina, Embaixo da Empresa oPrn:Box( 3.39 * Reslinha, 0.20 * ResColuna, ; 3.70 * ResLinha, 27.70 * ResLinha, oPen1 ) //-> Box do Curso oPrn:Box( 3.69 * ResLinha, 0.20 * ResColuna, ; 4.70 * ResLinha, 13.85 * ResColuna, oPen3 ) oPrn:Say( 3.80 * ResLinha, 0.50 * ResColuna, ; "NOME DO CURSO: "+XNOMECUR, oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Box da Turma oPrn:Box( 4.69 * ResLinha, 0.20 * ResColuna, ; 5.70 * ResLinha, 13.85 * ResColuna, oPen3 ) oPrn:Say( 4.80 * ResLinha, 0.50 * ResColuna, ; "TURMA: "+XCOMPTURM, oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Box do Per¡odo do Curso oPrn:Box( 3.69 * ResLinha, 13.84 * ResColuna, ; 5.70 * ResLinha, 27.70 * ResColuna, oPen3 ) oPrn:Say( 4.50 * ResLinha, 16.84 * ResColuna, ; "PERÃODO DO CURSO ", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) oPrn:Say( 3.75 * ResLinha, 19.84 * ResColuna, ; "CARGA HORÃRIA: "+XTOTCARG, oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 4.25 * ResLinha, 19.84 * ResColuna, ; "DIAS: "+DTOC(XDE1) + " a " + DTOC(XA1), ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 4.75 * ResLinha, 19.84 * ResColuna, ; "HORA DE INICIO: "+XHRINI1, ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 5.25 * ResLinha, 19.84 * ResColuna, ; "HORA DE TÉRMINO: "+XHRTER1, oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Linha em Branco Para Fechar a Pagina, Embaixo da Turma oPrn:Box( 5.69 * ResLinha, 0.20 * ResColuna, ; 6.20 * ResLinha, 27.70 * ResColuna, oPen3 ) //-> Linha em Branco Para a Rela‡Æo de Alunos Matriculados oPrn:Box( 6.19 * ResLinha, 0.20 * ResColuna, ; 6.70 * ResLinha, 27.70 * ResColuna, oPen3 ) //-> Texto da Rela‡Æo de Alunos Matriculados oPrn:Say( 6.25 * ResLinha, 13.85 * ResColuna, ; "RELAÇÃO DE ALUNOS MATRICULADOS ", ; oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) //-> Box do SAY do Nome do Aluno/cpf aqui oPrn:Box( 6.69 * ResLinha, 0.20 * ResColuna, ; 7.70 * ResLinha, 14.80 * ResColuna, oPen3 ) oPrn:Say( 7.00 * ResLinha, 0.45 * ResColuna, "Nº. ", ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.00 * ResLinha, 5.1 * ResColuna, ; "ALUNO ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.00 * ResLinha, 13.00 * ResColuna, "CPF ", ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Box do SAY da Nota do Aluno Por M¢dulo aqui oPrn:Box( 6.69 * ResLinha, 14.79 * ResColuna, ; 7.20 * ResLinha, 27.70 * ResColuna, oPen3 ) oPrn:Say( 6.75 * ResLinha, 21.00 * ResColuna, ; "NOTAS POR MÓDULO ", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) //-> Box dos M¢dulos I II III IV aqui oPrn:Box( 7.19 * ResLinha, 14.79 * ResColuna, ; 7.70 * ResLinha, 27.70 * ResColuna, oPen3 ) oPrn:Say( 7.25 * ResLinha, 15.50 * ResColuna, ; "MÓDULO I ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.25 * ResLinha, 18.70 * ResColuna, ; "MÓDULO II ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.25 * ResLinha, 21.70 * ResColuna, ; "MÓDULO III ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.25 * ResLinha, 24.70 * ResColuna, ; "MÓDULO IV ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //->Separa //-> Ultimo Box, Foi 7.70 M¢dulos I II III IV nLinInNomes := 7.69 nColInNomes := 0.20 nLinFiNomes := 8.35 nColFiNomes := 27.70 FOR nPulaLinha = 1 TO 15 //-> Box das Quinze Linhas Para os Nomes oPrn:Box( nLinInNomes * ResLinha, nColInNomes * ResColuna, ; nLinFiNomes * ResLinha, nColFiNomes * ResColuna, oPen3 ) nLinInNomes += 0.65 nLinFiNomes += 0.65 NEXT nPulaLinha //-> Cria a Numera‡Æo de 1 a 15 Para os Nomes dos Alunos Lado Esquerdo do Texto nLinMaisNom := 7.80 nColMaisNom := 0.50 FOR nPulaLinha = 1 TO 15 //-> Linhas oPrn:Say( nLinMaisNom * ResLinha, nColMaisNom * ResColuna, ; STR( nPulaLinha, 2 ), ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) nLinMaisNom += 0.65 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do N§ nLinNume := 6.68 nColNume := 1.10 FOR nPulaLinha = 1 TO 105 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Vou IMPRIMIR o NOME / CPF do Aluno nLinNome := 7.85 nColNome := 1.25 nLinNCpf := 7.85 nColNCpf := 12.30 nLinMod1 := 7.85 nColMod1 := 16.20 nLinMod2 := 7.85 nColMod2 := 19.30 nLinMod3 := 7.85 nColMod3 := 22.40 nLinMod4 := 7.85 nColMod4 := 25.40 nPulaLinha := 0 WHILE !EOF() SYSREFRESH() IF EOF() EXIT ENDIF IF nPulaLinha >= 15 EXIT ENDIF //-> Nome do Aluno oPrn:Say( nLinNome * ResLinha, nColNome * ResColuna, ; ( oDbfCadDig:cAlias )->NOME, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> CPF do Aluno oPrn:Say( nLinNCpf * ResLinha, nColNCpf * ResColuna, ; ( oDbfCadDig:cAlias )->CIC, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO I oPrn:Say( nLinMod1 * ResLinha, nColMod1 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOI, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO II oPrn:Say( nLinMod2 * ResLinha, nColMod2 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOII, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO III oPrn:Say( nLinMod3 * ResLinha, nColMod3 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOIII, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO IV oPrn:Say( nLinMod4 * ResLinha, nColMod4 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOIV, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) SKIP nLinNome += 0.65 //-> Pula a Linha Para o Novo Nome nLinNCpf += 0.65 //-> Pula a Linha Para o Novo CPF nLinMod1 += 0.65 //-> Pula a Linha Para o Novo ModuloI nLinMod2 += 0.65 //-> Pula a Linha Para o Novo ModuloII nLinMod3 += 0.65 //-> Pula a Linha Para o Novo ModuloIII nLinMod4 += 0.65 //-> Pula a Linha Para o Novo ModuloIV nPulaLinha++ //-> NÆo Deixar Escrever Mais de 15 Nomes ENDDO //-> Faz um Tra‡o Vertical na Frente do Nome do Aluno nLinNume := 6.68 nColNume := 12.00 FOR nPulaLinha = 1 TO 105 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF do Aluno nLinNume := 7.68 nColNume := 14.80 FOR nPulaLinha = 1 TO 95 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO I nLinNume := 7.18 nColNume := 18.20 FOR nPulaLinha = 1 TO 100 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO II nLinNume := 7.18 nColNume := 21.20 FOR nPulaLinha = 1 TO 100 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO III nLinNume := 7.18 nColNume := 24.30 FOR nPulaLinha = 1 TO 100 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Observa‡Æo no Rodap‚ do Texto - Primeiro Preview oPrn:Say( 18.00 * ResLinha, 13.50 * ResColuna, ; "Caso haja na turma alunos fazendo " + ; "o curso de atualização, não inserir " + ; "notas e sim se o mesmo foi ou não " + ; "aprovado.", oFont,, ; CLR_BLACK,, PAD_CENTER ) ENDPAGE //-> Aqui, NÆo Coube na P gina, Mandei Pular Para a Pr¢xima... //-> Nova P gina Porque NÆo Coube no Preview da Anterior Modelo Michele PAGE nLinInNomes := 0.23 nColInNomes := 0.20 nLinFiNomes := 0.88 nColFiNomes := 27.70 FOR nPulaLinha = 1 TO 13 //-> Box das Linhas Para os Nomes - Segunda P gina oPrn:Box( nLinInNomes * ResLinha, nColInNomes * ResColuna, ; nLinFiNomes * ResLinha, nColFiNomes * ResColuna, oPen3 ) nLinInNomes += 0.64 nLinFiNomes += 0.65 NEXT nPulaLinha //-> Cria a Numera‡Æo de 16 a 20 Para os Nomes dos Alunos Lado Esquerdo do Texto nLinMaisNom := 0.30 nColMaisNom := 0.50 FOR nPulaLinha = 16 TO 20 //-> Linhas oPrn:Say( nLinMaisNom * ResLinha, nColMaisNom * ResColuna, ; STR( nPulaLinha, 2 ), ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) nLinMaisNom += 0.65 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do N§ do Segundo Preview nLinNume := 0.22 nColNume := 1.10 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Se o Total de Alunos For Maior Que 15... Continua Imprimindo IF nPulaLinha >= 15 //-> Vou IMPRIMIR o NOME / CPF do Aluno Continua‡Æo nLinNome := 0.40 nColNome := 1.25 nLinNCpf := 0.40 nColNCpf := 12.30 nLinMod1 := 0.40 nColMod1 := 16.20 nLinMod2 := 0.40 nColMod2 := 19.30 nLinMod3 := 0.40 nColMod3 := 22.40 nLinMod4 := 0.40 nColMod4 := 25.40 WHILE !EOF() SYSREFRESH() IF EOF() EXIT ENDIF //-> Nome do Aluno oPrn:Say( nLinNome * ResLinha, nColNome * ResColuna, ; ( oDbfCadDig:cAlias )->NOME, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> CPF do Aluno oPrn:Say( nLinNCpf * ResLinha, nColNCpf * ResColuna, ; ( oDbfCadDig:cAlias )->CIC, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO I oPrn:Say( nLinMod1 * ResLinha, nColMod1 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOI, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO II oPrn:Say( nLinMod2 * ResLinha, nColMod2 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOII, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO III oPrn:Say( nLinMod3 * ResLinha, nColMod3 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOIII, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) //-> NOTAS DO MODULO IV oPrn:Say( nLinMod4 * ResLinha, nColMod4 * ResColuna, ; ( oDbfCadDig:cAlias )->MODULOIV, ; oFont,, ; CLR_BLACK,, PAD_LEFT ) SKIP nLinNome += 0.65 //-> Pula a Linha Para o Novo Nome nLinNCpf += 0.65 //-> Pula a Linha Para o Novo CPF nLinMod1 += 0.65 //-> Pula a Linha Para o Novo ModuloI nLinMod2 += 0.65 //-> Pula a Linha Para o Novo ModuloII nLinMod3 += 0.65 //-> Pula a Linha Para o Novo ModuloIII nLinMod4 += 0.65 //-> Pula a Linha Para o Novo ModuloIV ENDDO ENDIF //-> Faz um Tra‡o Vertical na Frente do Nome do Aluno nLinNume := 0.22 nColNume := 12.00 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF do Aluno nLinNume := 0.22 nColNume := 14.80 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO I nLinNume := 0.22 nColNume := 18.20 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO II nLinNume := 0.22 nColNume := 21.20 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente do CPF MODULO III nLinNume := 0.22 nColNume := 24.30 FOR nPulaLinha = 1 TO 36 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha oPrn:Say( 4.85 * ResLinha, 0.50 * ResColuna, ; "ASSINATURA: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 5.45 * ResLinha, 0.50 * ResColuna, ; "NOME DO DIRETOR: "+XDIRETOR, ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 6.10 * ResLinha, 0.50 * ResColuna, ; "Nº. DA CREDENCIAL: "+XCREDENCIAL, ; oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 7.35 * ResLinha, 13.85 * ResColuna, ; "PARA USO DA DIVISÃO DE EDUCAÇÃO " + ; "DE TRÂNSITO", oFontDivi,, ; CLR_BLACK,, PAD_CENTER ) oPrn:Say( 8.10 * ResLinha, 0.50 * ResColuna, ; "CONFERIDO POR: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 8.10 * ResLinha, 10.50 * ResColuna, ; "REGISTRO: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 8.10 * ResLinha, 19.50 * ResColuna, ; "PROTOCOLO: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Box Embaixo de Conferido/Registro/protocolo oPrn:Box( 8.60 * ResLinha, 0.20 * ResColuna, ; 12.20 * ResLinha, 27.70 * ResColuna, oPen3 ) //-> Box Para DE oPrn:Box( 8.60 * ResLinha, 10.30 * ResColuna, ; 10.10 * ResLinha, 19.30 * ResColuna, oPen3 ) //-> Box Para A oPrn:Box( 10.09 * ResLinha, 10.30 * ResColuna, ; 11.60 * ResLinha, 19.30 * ResColuna, oPen3 ) //-> Faz um Tra‡o Vertical na Frente CONFERIDO nLinNume := 7.85 nColNume := 10.30 FOR nPulaLinha = 1 TO 41 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha //-> Faz um Tra‡o Vertical na Frente REGISTRO nLinNume := 7.85 nColNume := 19.30 FOR nPulaLinha = 1 TO 41 oPrn:Say( nLinNume * ResLinha, nColNume * ResColuna, "|", ; oFont,, ; CLR_BLACK,, PAD_CENTER ) nLinNume += 0.10 NEXT nPulaLinha oPrn:Say( 9.10 * ResLinha, 10.50 * ResColuna, ; "DE: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 10.70 * ResLinha, 10.50 * ResColuna, ; "A: ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Box Em Cima de CARIMBO E ASSINATURA - Lado Esquerdo da Folha oPrn:Box( 11.20 * ResLinha, 0.20 * ResColuna, ; 12.20 * ResLinha, 10.29 * ResColuna, oPen3 ) oPrn:Say( 11.50 * ResLinha, 2.00 * ResColuna, ; "CARIMBO E ASSINATURA ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) oPrn:Say( 11.65 * ResLinha, 11.50 * ResColuna, ; "CARIMBO E ASSINATURA ", oFontDivi,, ; CLR_BLACK,, PAD_LEFT ) //-> Observa‡Æo no Rodap‚ do Texto - Segundo Preview oPrn:Say( 18.00 * ResLinha, 13.50 * ResColuna, ; "Caso haja na turma alunos fazendo " + ; "o curso de atualização, não inserir " + ; "notas e sim se o mesmo foi ou não " + ; "aprovado.", oFont,, ; CLR_BLACK,, PAD_CENTER ) ENDPAGE //-> Final do Relat¢rio... Afff Maria - Esse eu sofri pra caramba ENDPRINT oFont:End() oFontLogo:End() oFontDivi:End() oFontList:End() oFontCurs:End() oFontSubl:End() oPen1:End() oPen2:End() oPen3:End() SELECT ( oDbfTabela:cAlias ) // Seleciona o Alias RETURN NIL Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted April 17, 2013 Report Share Posted April 17, 2013 Quote Link to comment Share on other sites More sharing options...
Eduardo Bilato Posted April 17, 2013 Report Share Posted April 17, 2013 Na boa... eu acho que se quisermos ajudar, devemos postar uma resposta simples, tipo"tente utilizar o comando talsintaxe do comando talum exemplo do comando tal aplicado:comando tal aplicado"e boa!Ficar postando um monte de código só vai complicar a vida de quem tá com dúvida, além de ficar difÃcil de saber em qual parte do código está a solução... é o que eu acho Luisão 1 Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted April 17, 2013 Report Share Posted April 17, 2013 Eduardo Bilato and Luisão 2 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 17, 2013 Report Share Posted April 17, 2013 Na boa... eu acho que se quisermos ajudar, devemos postar uma resposta simples, tipo "tente utilizar o comando tal sintaxe do comando tal um exemplo do comando tal aplicado: comando tal aplicado" e boa! Ficar postando um monte de código só vai complicar a vida de quem tá com dúvida, além de ficar difÃcil de saber em qual parte do código está a solução... é o que eu acho Eduardo a resposta está já nas primeiras linhas, veja: //-> Box do Logo oPrn:Box( 0.23 * ResLinha, 0.20 * ResColuna, ; 2.41 * ResLinha, 27.70 * ResColuna, oPen3 ) abs, Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 17, 2013 Report Share Posted April 17, 2013 kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 17, 2013 Report Share Posted April 17, 2013 Arthur Eu trabalho desta forma, funciona para qualquer resolução de dpi deste 300 ate 1800 PRINTER oPrinter FROM USER PREVIEW NAME "Resumo " CURSORWAIT() DEFINE FONT oFont NAME "ARIAL" size 0,-13 OF oPrinter DEFINE FONT oFont2 NAME "ARIAL" BOLD size 0,-16 OF oPrinter DEFINE FONT oFont3 NAME "ARIAL" BOLD size 0,-14 OF oPrinter DEFINE FONT oFont4 NAME "ARIAL" size 0,-10 OF oPrinter DEFINE PEN oPen1 WIDTH 1 OF oPrinter DEFINE PEN oPen2 WIDTH 4 OF oPrinter nMargin := int(oPrinter:nLogPixelX()*0.2) nWidth := oPrinter:nHorzRes() nHeight := oPrinter:nVertRes() nLinha := oFont:nHeight nRow := 0 pPagi := 0 oPrinter:StartPage() pPagi++ nRow:=nMargin nCol:=nMargin oPrinter:StartPage() oPrinter:Box(nRow+nLinha,ColCerta( 85), nHeight-20, ColCerta(2150) ) for hi:=1 to 10 oPrinter:Say(nRow,ColCerta( 95),"Titulo1",oFont4) oPrinter:Say(nRow,ColCerta(1250),"Titulo2",oFont4,5,,2) oPrinter:Say(nRow,ColCerta(1450),"Titulo3",oFont4,5,,2) oPrinter:Say(nRow,ColCerta(1850),"Titulo4",oFont4,8,,2) oPrinter:Say(nRow,ColCerta(2050),"Titulo5",oFont4,8,,2) nRow+=nLinha Next oPrinter:Endpage() oPrinter:Preview() CURSORARROW() DeleteObject(oPrinter) return NIL //------------------------------------------------------------------------------ FUNCTION ColCerta(pCol) Local nCol:=0 //pCol -> 2400 // padrão 300dpi //X -> nWidth nCol := (pCol*nWidth)/2400 Return nCol João Bosco Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 17, 2013 Report Share Posted April 17, 2013 Excelente João Bosco, também fica perfeito assim. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted April 17, 2013 Report Share Posted April 17, 2013 Uai Kapiaba já testou? Att João Bosco Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 17, 2013 Report Share Posted April 17, 2013 Uai Kapiaba já testou? Att João Bosco kkkkkkkkkk, NÃO, eu sei ler. abs. Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted April 17, 2013 Author Report Share Posted April 17, 2013 kkkkkkkkkk, NÃO, eu sei ler. abs. vishhhhhhhhhhhhhhhhhhhhh cabixiga kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk sipuada da gota Valeu pessoal, funcionou, usei o método do kapiaba. Desculpem a todos a minha falta de inrresponssabilidade. kkkk abs 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.