Impressão direta

02/02/2006

0

Tenho uma sequência de 10 registros com 8 campos cada um, armazenados numa tabela e quero saber o q devo fazer para mandar um a um, (registro a registro) direto para a impressora.
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

Pro-luck

Responder

Posts

02/02/2006

Aroldo Zanela

Colega,

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.


Responder

02/02/2006

Pro-luck

Minha dúvida é quanto ao posicionamento dos dados... onde cada um deverá aparecer...

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:


Responder

03/02/2006

Aroldo Zanela

Colega,

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.


Responder

03/02/2006

Aroldo Zanela

Colega,

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.


Responder

03/02/2006

Eniorm

amigos, pra que complicar ehehehe?

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


Responder

11/02/2006

Pro-luck

Caro colega,


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...


Responder

11/02/2006

Edilcimar

A primeira resposta do Zanela dá a informação desejada, caso queira colocar mais de uma ´coisa´ na mesma linha, que que fazer manualmente, tipo
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´);


Responder

11/02/2006

Pro-luck

Caro colega,

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...


Responder

11/02/2006

Vinicius2k

Colega,

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 ;)


Responder

12/02/2006

Kitsystem

Sempre trabalhei com apenas CloseFile(MyFile);

Qual a diferença real de colocar System.CloseFile(MyFile); ?


Responder

12/02/2006

Chmelo

Caro amigo,

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


Responder

13/02/2006

Kitsystem

CHMELO,

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);


Responder

13/02/2006

Dopi

Vinicius,

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]


Responder

13/02/2006

Pro-luck

Agradecimentos aos colegas do Fórum que contribuíram com o meu aprendizado quanto ao comando ´WriteLn´. Confesso que ainda não o domino completamente, mas felizmente consegui resolver o meu problema de maneira super satisfatória. Em especial, agradecimentos ao Zanela, ao Edilcimar e Vinicius2K, que sempre se mostraram pacientes e participativos.


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


Responder

13/02/2006

Kitsystem

Tambem agradeço a ajuda


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar