scom Posted May 21, 2010 Report Share Posted May 21, 2010 ola amigos estou fazendo meus relatórios aagora e gostaria de saber qual font e tamanho posso usar para ficar o mais pareceido com a letra chr(15) para usar 133 caracteres na linha. estou usando o PRINT alguem pode me dar uma dica? Robson Quote Link to comment Share on other sites More sharing options...
scom Posted May 21, 2010 Author Report Share Posted May 21, 2010 ola amigos estou fazendo meus relatórios aagora e gostaria de saber qual font e tamanho posso usar para ficar o mais pareceido com a letra chr(15) para usar 133 caracteres na linha. estou usando o PRINT alguem pode me dar uma dica? Robson Quote Link to comment Share on other sites More sharing options...
fluna Posted May 21, 2010 Report Share Posted May 21, 2010 lucida console Clipper 5.3; Fw195; Link Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted May 21, 2010 Report Share Posted May 21, 2010 Courrier New tb. o tamanho é vc. quem define mas acho que o padrão é "0,-10" fica rapidinho dDá uma testada ai e diga.. Luiz Arruda-Corumba(MS) ico.corumba@gmail.com FiveWin Desde 2004id=blue> [x]Harbour xDev WS Não Abandone seu tópico Retorne avisando se a dica funcionouid=red> Quote Link to comment Share on other sites More sharing options...
scom Posted May 22, 2010 Author Report Share Posted May 22, 2010 obrigado...vou testar.... Quote Link to comment Share on other sites More sharing options...
SHARK Posted May 23, 2010 Report Share Posted May 23, 2010 Caro Robson, Se está migrando e só agora irá começar a fazer os relatórios te digo que chegou finalmente na pior parte do processo. Sofri bastante até compreender e decidir qual a melhor forma de definir como meu sistema que antes era em clipper iria imprimir usando xHarbour/FiveWin. Inicialmente sua questão é válida porém um pouco confusa. Quando declara que usa "PRINT" entendo que usa o comando "?" do clipper como abaixo: ?"teste de impressão" Outra questão confusa é: Se agora pode usar uma quantidade maior de fontes e estilos, por qual motivo pretende utilizar uma fonte que assemelha-se ao antigo método de condensado das impressoras matriciais "CHR(15)" ? Bem, entenda. Se não vai explorar os atuais recursos de impressão disponÃveis então basicamente deve manter seus códigos em arquivos PRG´s que não contenham no inÃcio a declaração #include "fivewin.ch" e seu programa irá funcionar exatamente como antes quando era compilado com clipper. Simples assim. Mas se pretende utilizar recursos de impressão parecidos com os programas do windows então sua forma de programar irá mudar radicalmente. Produzindo um relatório, mesmo com o uso de uma fonte parecida com o CHR(15), ao imprimir numa impressora matricial a impressão será lenta como se estivesse imprimindo uma imagem. Não será aquela impressão rápida que conhecemos das impressoras matriciais enviadas por programas DOS. Em impressoras laser ou jato de tinta não haverá problemas, mas em matriciais a impressão utilizando fontes como a Courier New ou Lucida console irá destruir completamente a reputação de seus sistemas. Minhas recomendações: Mantenha seus PRG´s que produzem impressão sem nenhuma alteração e a forma de utilização será idêntica ao seu antigo sistema em clipper. Para isto basta colocar as rotinas de impressão em PRG´s que não contenham #include "fivewin.ch". Você não poderá usar recursos como o preview, impressão de bitmaps, gráficos, gerenciador de impressão do windows e outros. Se deseja utilizar recursos de impressão melhores você tem duas saÃdas: 1ª Fazer todos relatórios usando a classe TPrinter do Fivewin e informar aos seus clientes que seu sistema recomenda o uso somente de impressoras laser ou jato de tinta. 2ª Permitir que o seu cliente escolha que tipo de impressão deseja usar. Os dois tipos são EMF e RAW. A impressão EMF é a tÃpica impressão dos programas windows e a impressão RAW é a impressão tÃpica dos programas DOS. Desta forma você teria dois códigos para gerar o relatório. Caso o cliente escolha EMF você pode usar fontes, imagens, gráficos, linhas, preview e todo o resto porém este método é indicado somente para impressoras laser e jato de tinha. Caso seu cliente escolha EMF para uma impressora matricial aà é uma decisão exclusivamente dele e a lenta impressão será uma consequência desta escolha. Diferentemente do modo EMF, se o cliente escolher o modo RAW você deverá escrever um código fonte exatamente como fazia antigamente no clipper, porém, você deve imprimir o relatório para um arquivo texto temporário o que é facilmente realizado com o comando SET PRINTER TO arquivo.prn e em seguida utilizar a função do xharbour PRINTFILERAW( "Epson lx-300", "arquivo.prn") para enviar para a impressora. A função PRINTFILERAW apesar de usar o gerenciador de impressão do windows para enviar o documento faz com que a impressora se comporte como uma impressora matricial recebendo comandos como CHR(15), CHR(18) e os demais conhecidos. Assim sendo, você deve também permitir que o seu cliente após escolher o modo RAW escolha também qual padrão de códigos será utilizado, EPSON ou HP. Isto é necessário pois se a impressora for padrão EPSON o comando para ligar o condensado é CHR(15) mas se for padrão HP é CHR(27)+'(s16.67H' Note que usando a função PRINTFILERAW você deve especificar exatamente o nome da impressora que está instalada no windows seja ela uma impressora local, rede ou remota. Sempre tento expor esta questão da forma mais simples possÃvel, mas percebo que é impossÃvel e somente com demonstração prática a simplicidade do que escrevi acima pode ser absorvida. Penso, inclusive, em dispor de tempo para desenvolver um tutorial esclarecedor sobre esta questão e encerrar definitivamente esta questão que fez vários de nós buscar meios e recursos que para mim são apenas "quebra galhos" afim de sanar dúvidas relacionadas a impressão que aparentemente foram desprezadas e ignoradas pelos desenvolvedores do FiveWin forçando o uso de soluções de terceiros como DOSPRN, DOSUTIL, CRISTAL REPORT, FAST REPORT e outros. Encerrando meu longo argumento, afirmo-te. Não há necessidade de utilização de nenhum recurso extra como os acima citados pois o FiveWin e igualmente o xHarbour oferecem recursos de impressão satisfatórios. Utilizo estes meios e garanto que nada mais é necessário além do conhecimento sobre estas técnicas e coloco-me a disposição para ajudá-lo neste desafio. Adicione em seu MSN o contato shark_programador@hotmail.com SharkAbraços! Shark - FWH 8.09 / xharbour 1.1.0 / xMate 1.15 / Resource WorkShop http://www.superdownloads.com.br/download/41/programa-de-auto-escola-automax/ Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted May 24, 2010 Report Share Posted May 24, 2010 Shark >> Desde o inicio uso os mesmo comando do Clipper puro para impressão @Prow()+1,2 Say "Imprimindo" até porque aqui na empresa os relatórios são gigantescos. para cada empresa uma média de 90 a 150 paginas todo fim de mês para 49 empresas, fora os que são impressos no decorrer do periodo. entao tem que ser em matriciais mesmo senão o chefe ia pra roça e ia me levar junto Até ai sem problemas, mas a coisa pega na hora de mandar isso para uma Laser/Matricial USB. baseado nisso sempre faço dois prgs de relatório.., dependendo da impressora escolhida no PrinterSet o programa checa a resolução da impressora e te joga para o prg correspondente. Sendo assim a sua dica de somente os mesmos relatórios do clipper é falho. ou então me de o caminho das pedras de como imprimir usando o mesmo codigo do clipper em ambas impressoras. Depois de tanto bater a cabeça na quina da mesa to chegando chegando a um acordo com ; //-> para Matricial DEFINE FONT oFont NAME "Courier New" SIZE 0, -8 OF oPrn DEFINE FONT oFont2 NAME "Courier New" SIZE 0, -12 BOLD OF oPrn //- Como Imprimir em Centimetros sem errar e em qualquer Impressora ResLinha := oPrn:nVertRes() / 40 ResLinha := oPrn:nLogPixely() / 2.54 ResColuna := oPrn:nLogPixelx() / 2.54id=code>id=code>Desse jeito imprimo em qq impressora usando apenas a classe tPrinter nativa do FiveWim.. e Te "agarantiu" que a impressão não fica tão lenta de matar de tanto esperar em matriciais ainda to apanhando um pouco pra fazer quadros mas um dia chego lá.. Tem a classe tImprimi do Villian que vem com os fontes e é muito legal mesmo.. dominando a tImprimi a gente só não faz chover.... por enquanto. Abraços.. Luiz Arruda-Corumba(MS) ico.corumba@gmail.com FiveWin Desde 2004id=blue> [x]Harbour xDev WS Não Abandone seu tópico Retorne avisando se a dica funcionouid=red> Quote Link to comment Share on other sites More sharing options...
elitenet Posted May 26, 2010 Report Share Posted May 26, 2010 Shark Discordo das suas colocacoes, eu tenho a impressao em RAW e EMF sem problema algum. O que eu fiz foi criar uma classe de impressao herdando TdosPrn e TPRINT. A minha classe so faz uma coisa muito simples identifica se a impressora é matricial ou jato de tinta ou laser e direciona para Tprint ou Tdosprn. Meu sistema não perde em nada em velocidade de impressão para sistemas em dos. Ela faz mais uma coisinha, eu posso usar recursos graficos em um relatorio que ela converte para texto e substitui na impressão na hora de mandar para impressoras matriciais. Veja abaixo um exemplo de como ficou simples de montar um relatorio: Local oImpressao oImpressao := TImpressao():New( "Relatório de Planos de Pagamentos", oRelCad05 ) oImpressao:Executa_Sql( "SELECT * FROM " + Sql_NameTable( "D002" ) + " WHERE codigo_pe >= " + ANY2SQL( Str( nCodigo_1, 3 ) ) + " AND codigo_pe <= " + ANY2SQL( Str( nCodigo_2, 3 ) ) + " ORDER BY codigo_pe" ) If oImpressao:Imprime() oImpressao:nPrnlin := 65 oImpressao:cPrnlinha := Replicate( "-", 143 ) oImpressao:Inicia_Relatorio( 65, 143 ) Begin Sequence RELATORIO->( dbGotop() ) While ! RELATORIO->( Eof() ) If oImpressao:Cancela_Relatorio() Break EndIf If oImpressao:Cabecalho( .t.,, .t. ) oImpressao:PrnSay( oImpressao:nPrnLin, 001, "Cod Descricao Reduzido Forma Parc. Tipo Tipo de Prazo Preco Desc. Vlr. Minimo Documento Altera Baixa" ) oImpressao:nPrnLin += 1 oImpressao:PrnSay( oImpressao:nPrnLin, 001, oImpressao:cPrnlinha ) oImpressao:nPrnLin += 1 EndIf oImpressao:PrnSay( oImpressao:nPrnLin, 01, RELATORIO->codigo_pe, "@R 999" ) oImpressao:PrnSay( oImpressao:nPrnLin, 05, RELATORIO->desc_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 37, RELATORIO->nome_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 49, RELATORIO->avista_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 59, RELATORIO->nr_parc_pe, "999" ) oImpressao:PrnSay( oImpressao:nPrnLin, 63, RELATORIO->dia_mes_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 69, RELATORIO->prazo_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 92, RELATORIO->preco_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 101, RELATORIO->per_des_pe, "@E 99.99%" ) oImpressao:PrnSay( oImpressao:nPrnLin, 109, RELATORIO->vlr_min_pe, "@E 999,999.99" ) oImpressao:PrnSay( oImpressao:nPrnLin, 120, RELATORIO->mod_doc_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 134, RELATORIO->grdup_pe ) oImpressao:PrnSay( oImpressao:nPrnLin, 140, RELATORIO->bx_auto_pe ) oImpressao:nPrnLin += 1 RELATORIO->( dbSkip() ) End End sequence oImpressao:Finaliza_Relatorio() Grava_Historico( "Imprimiu um relatorio de Planos de Pagamento", "Cadastro de Planos de Pagamento" ) EndIf Release All id=code>id=code>FW 2.3C/CLIPPER 5.X/XHARBOUR/C/C++/JAVA/DELPHI/XMATE/MD/MYSQL/FIREBIRD/INTERBASE Quote Link to comment Share on other sites More sharing options...
scom Posted May 29, 2010 Author Report Share Posted May 29, 2010 PESSOAL, ACHEI NA INTERNET QUE PARA IMPRIMIR RAPIDO EM IMPRESSORAS MATRICIAIS É SOMENTE USAR O FONT Draft 17cpi, NO FONTES DO WINDOWS NÃO TEM MAS É SO COLOCAR QUE FUNCIONAR E REALMENTE FUNCIONOU PARA MIM. FIZ ASSIM: DEFINE FONT oFontPrn NAME "Draft 17cpi" SIZE 0, -07 OF oPrn DEFINE FONT oFontPrnBold NAME "Draft 17cpi" SIZE 0, -07 BOLD OF oPrn DEFINE FONT oFontPrnMedia NAME "Draft 17cpi" SIZE 0, -12 OF oPrn DEFINE FONT oFontMediaBold NAME "Draft 17cpi" SIZE 0, -12 BOLD OF oPrn DEFINE FONT oFontPrnGrande NAME "Draft 17cpi" SIZE 0, -14 OF oPrn e to usando o PRINT veja como fico. 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.