Impressão direta
02/02/2006
0
Tenho dúvidas quanto a questão de mandar dos dados dos campos para o papel (em termos de localização - linha x coluna -, tenho dúvidas sobre como pedir uma mudança de linha...
Acredito que não seja difícil, mas eu ainda não sei... Infelizmente sou totalmente do QuickReport e mais infelizmente ainda, não estou conseguindo resolver com ele...
Certo da atenção de todos antecipadamente agradeço...
Té+.
(Utilizo Delphi 5 - Paradox - SQL)
Pro-luck
Posts
02/02/2006
Aroldo Zanela
Se for ´coisa´ simples, veja (do help):
var MyFile: TextFile; begin AssignPrn(MyFile); Rewrite(MyFile); Writeln(MyFile, ´Print this text´); System.CloseFile(MyFile); end;
Se precisar de maior sofisticação, veja o FortesReport que é semelhante ao QuickReport e possui filtro para impressão em modo matricial.
02/02/2006
Pro-luck
Eu lembro que no Clipper eu escolhia a linha e a coluna, mas não sei como faço isso no Delphi...
Obrigado pela urgência Aroldo Zanela... :wink:
03/02/2006
Aroldo Zanela
No caso de impressão direta com WriteLn, você deverá usar fontes mono-espaçadas (Courier New, FixedSys, Terminal, etc) e poderá efetuar o posicionamento por meio da função Format.
Uma outra solução e ´mapear´ um objeto da classe TStringList (Matriz) com n Linhas X n Colunas e preencher nas coordenadas.
Mas a forma mais simples mesmo é utilizando o Canvas. Existem vários tópicos detalhando a solução, entretanto, passa pelo GDI do windows.
03/02/2006
Aroldo Zanela
Ainda não parei para testar este [url=http://forum.clubedelphi.net/viewtopic.php?t=72997&highlight=]componente[/url] do Vinícius (vinicius2k), mas acredito que seja uma solução adequada para a sua necessidade.
03/02/2006
Eniorm
se o cara quiser fazer manual pra aprender, blza!
do contrario, pra impressão direta existe o RDPrint que é muito bom.... mas é pago e naum vem com sources
AGORA, se o cara quiser um free+sources, o lance é o EXCELENTE componente [b:1402eceafd]VDOPrint[/b:1402eceafd], feito pelo amigo Vinicius2k daqui do forum, o componente está na versão 3 e agora possui um Preview..
VDOPrint: [b:1402eceafd]www.devres.cjb.net[/b:1402eceafd]
abraço
11/02/2006
Pro-luck
Será que posso contar com o teu auxílio e esperar que poste um exemplo de como utilizar o WriteLn?
Acredito q seja exatamente isto q estou precisando.
Fontes mono-espaçadas, mais trabalhoso mesmo...
Antecipadamente agradeço...
11/02/2006
Edilcimar
var
MyFile: TextFile;
begin
AssignPrn(MyFile);
Rewrite(MyFile);
Writeln(MyFile, ´Print this text mais alguma coisa´);
System.CloseFile(MyFile);
end;
o mais alguma coisa pode ser substituido por uma variável, e ficaria
Writeln(MyFile, ´Print this text´ +´ ´+variaveltexto´);
11/02/2006
Pro-luck
O que eu não estou sabendo fazer é controlar o posicionamente. Como vc falou, controlo com uso do Format...
Vc pode dizer-me como? Ou até mesmo fazer o tal mapeamento...
Peço que não me tome por um cara chato... Só estou querendo aprender e para tanto conto com a ajuda de todos do Fórum....
Antecipadamente agradeço...
11/02/2006
Vinicius2k
Você pode criar um ´buffer´ da linha antes de escrevê-la, propriamente.
Eu sempre preferi utilizar este recurso aliado ao Format, para escrever arquivos texto que, no seu caso, é o mesmo processo.
Um exemplo simples seria:
var SBuf: string; procedure WriteToBuf(ACol: Integer; S: string); var I: Integer; begin for I := 0 to Pred(Length(S)) do SBuf[ACol+I] := S[Succ(I)]; end; procedure SuaProcedure; const Len = 255; var // ... Txt1, Txt2, Txt3, Txt4: string; Int1, Int2: Integer; Doub: Double; begin // ... SBuf := StringOfChar(32, Len); { **** } Txt1 := ´Texto 1´; Txt2 := ´Texto 2´; Txt3 := ´Texto 3´; Txt4 := ´Texto 4´; Int1 := 12345; Int2 := 67890; Doub := 1234567.890; { **** } WriteToBuf(001, Txt1); WriteToBuf(011, Txt2); WriteToBuf(021, Format(´¬7.7d´, [Int1])); WriteToBuf(031, Txt3); WriteToBuf(041, Txt4); WriteToBuf(051, Format(´¬7.7d´, [Int2])); WriteToBuf(071, FormatFloat(´,0.00´, Doub)); { **** } // Só então o "buffer" é escrito e reiniciado. Writeln(Arquivo, SBuf); SBuf := StringOfChar(32, Len); { **** } // ... end;
Em tempo, obrigado aos colegas pela indicação do VDOPrint e, principalmente, muito bom ´vê-lo´ por aqui novamente AZ ;)
12/02/2006
Kitsystem
Qual a diferença real de colocar System.CloseFile(MyFile); ?
12/02/2006
Chmelo
O componente VDOPrint do nosso amigo Vinicius2K e muito bom , eu ja uso ele ja faz um tempinho , e so voce verificar o exemplo que vem junto e voce vera que e parecido com o antigo clipper na hora de voce posicionar a linha e coluna no formulario, e agora com a nova versao deve estar melhor ainda , pois agora com preview deve ter ficado show de bola..
baixe a versao e faca o teste...
ate +
Carlos Melo
13/02/2006
Kitsystem
Minha pergunta é outra coisa, não estou procurando saber de componente de impressao
Quero saber qual a diferenca de usar
System.CloseFile(MyFile);
e apenas
CloseFile(MyFile);
13/02/2006
Dopi
Algumas outras Units (não lembro de qual versão do Delphi) tb possuem uma função CloseFile... chamando System.CloseFile() temos certeza que será executada a função [b:3454709c8c]CloseFile [/b:3454709c8c]da Unit [b:3454709c8c]System[/b:3454709c8c]
13/02/2006
Pro-luck
Valeu colegas,
Ah, se tiverem mais algumas dicas para me enviar, que possa me ajudar a conseguir impressões diretas e de maneira bem inteligentes e práticas, podem ficar a vontade para me enviar... rs rs rs
Clique aqui para fazer login e interagir na Comunidade :)