Fórum Impressão direta #311458
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
Curtir tópico
+ 0Posts
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.
Gostei + 0
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:
Gostei + 0
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.
Gostei + 0
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.
Gostei + 0
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
Gostei + 0
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...
Gostei + 0
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´);
Gostei + 0
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...
Gostei + 0
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 ;)
Gostei + 0
12/02/2006
Kitsystem
Qual a diferença real de colocar System.CloseFile(MyFile); ?
Gostei + 0
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
Gostei + 0
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);
Gostei + 0
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]
Gostei + 0
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
Gostei + 0
13/02/2006
Kitsystem
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)