QuickReport Parada na Impressão sem dar Eject
Ola, estou querendo fazer algo que talvez seja improvável de se fazer, mas vamos la:
Gostaria de saber se tem como enviar uma página para a impressora e parar em um determinado ponto, imaginem uma impressão de cheques em um formulário A4, onde 4 cheques podem ser impressos, digamos que mande imprimir 3 cheques, gostaria que a impressora parasse no 3 e não desse o Eject. Lembrando que não quero usar impressoras matriciais.
A solução poderia ser para qualquer outro Report, Quick, Rave ou qualquer outro, agradeço desde ja o apoio.
Gostaria de saber se tem como enviar uma página para a impressora e parar em um determinado ponto, imaginem uma impressão de cheques em um formulário A4, onde 4 cheques podem ser impressos, digamos que mande imprimir 3 cheques, gostaria que a impressora parasse no 3 e não desse o Eject. Lembrando que não quero usar impressoras matriciais.
A solução poderia ser para qualquer outro Report, Quick, Rave ou qualquer outro, agradeço desde ja o apoio.
Atgomes
Curtidas 0
Respostas
Gandalf.nho
22/04/2005
Parar em um determinado ponto numa folha solta sem ejetar (não formulário contínuo) acho que não dá mesmo, mas vc pode lançar mão de alguns truques para iniciar a impressão no ponto desejado da folha, o que é muito útil, por exemplo, em folhas de etiquetas para não desperdiçá-las.
GOSTEI 0
Aroldo Zanela
22/04/2005
Ola, estou querendo fazer algo que talvez seja improvável de se fazer, mas vamos la:
Gostaria de saber se tem como enviar uma página para a impressora e parar em um determinado ponto, imaginem uma impressão de cheques em um formulário A4, onde 4 cheques podem ser impressos, digamos que mande imprimir 3 cheques, gostaria que a impressora parasse no 3 e não desse o Eject. Lembrando que não quero usar impressoras matriciais.
A solução poderia ser para qualquer outro Report, Quick, Rave ou qualquer outro, agradeço desde ja o apoio.
Colega,
Defina o tamanho do formulário pelo tamanho de cada cheque ao invés de 4 (quatro).
GOSTEI 0
Atgomes
22/04/2005
[quote:e5795fe46e=´Aroldo Zanela´]
Colega,
Defina o tamanho do formulário pelo tamanho de cada cheque ao invés de 4 (quatro).[/quote:e5795fe46e]
Caro amigo Aroldo Zanela, acho que ja fiz um teste como esse e não funcionou mas vou tentar novamente, para ver se da certo, Grato.
Ola, estou querendo fazer algo que talvez seja improvável de se fazer, mas vamos la:
Gostaria de saber se tem como enviar uma página para a impressora e parar em um determinado ponto, imaginem uma impressão de cheques em um formulário A4, onde 4 cheques podem ser impressos, digamos que mande imprimir 3 cheques, gostaria que a impressora parasse no 3 e não desse o Eject. Lembrando que não quero usar impressoras matriciais.
A solução poderia ser para qualquer outro Report, Quick, Rave ou qualquer outro, agradeço desde ja o apoio.
Colega,
Defina o tamanho do formulário pelo tamanho de cada cheque ao invés de 4 (quatro).[/quote:e5795fe46e]
Caro amigo Aroldo Zanela, acho que ja fiz um teste como esse e não funcionou mas vou tentar novamente, para ver se da certo, Grato.
GOSTEI 0
Atgomes
22/04/2005
[quote:da577fff02=´Aroldo Zanela´][quote:da577fff02=´atgomes´]Ola, estou querendo fazer algo que talvez seja improvável de se fazer, mas vamos la:
Gostaria de saber se tem como enviar uma página para a impressora e parar em um determinado ponto, imaginem uma impressão de cheques em um formulário A4, onde 4 cheques podem ser impressos, digamos que mande imprimir 3 cheques, gostaria que a impressora parasse no 3 e não desse o Eject. Lembrando que não quero usar impressoras matriciais.
A solução poderia ser para qualquer outro Report, Quick, Rave ou qualquer outro, agradeço desde ja o apoio.
Colega,
Defina o tamanho do formulário pelo tamanho de cada cheque ao invés de 4 (quatro).[/quote:da577fff02]
Caro amigo Aroldo Zanela, acho que ja fiz um teste como esse e não funcionou mas vou tentar novamente, para ver se da certo, Grato.[/quote:da577fff02]
Então amigo Aroldo Zanela, de fato a solução não resolve o meu problema, pois mesmo definindo o tamanho do papel como o tamanho do cheque ele de qualquer forma me da o Eject.
:(
GOSTEI 0
Aroldo Zanela
22/04/2005
Colega,
Na impressora está definida com este tamanho também? (Configuraçoes -> Impressoras -> Botão diretiro sobre a impressoras -> Propriedades)
Na impressora está definida com este tamanho também? (Configuraçoes -> Impressoras -> Botão diretiro sobre a impressoras -> Propriedades)
GOSTEI 0
Aroldo Zanela
22/04/2005
Colega,
Onde se lê: diretiro
Leia-se: direito
Onde se lê: diretiro
Leia-se: direito
GOSTEI 0
Edilcimar
22/04/2005
é verdade que ele ejetará porém ejetará no tamanho do papel, o que seignifica que ficará parado no ínicio do próximo cheque, eu utilizo isto para impressão de NF em papel contínuo com papel personalizado e funciona
GOSTEI 0
Edilcimar
22/04/2005
só uma correção, eu não notei que era QR é que eu utilizo Trpinter
GOSTEI 0
Atgomes
22/04/2005
só uma correção, eu não notei que era QR é que eu utilizo Trpinter
Vou fazer mais teste agora Aroldo Zanela, para ver se funcionará com o quick e edicilmar, usando o TPrinter vou continuar podendo imprimir windows sem problemas, você por acaso tem exemplo para me enviar ?
Grato.
GOSTEI 0
Atgomes
22/04/2005
Bom vamos ao teste, ajustei o papel da impressora para o tamanho do cheque, e o que o quick me faz, imprime um cheque em uma folha da o eject e depois imprime o segundo cheque na outra folha e assim por diante isto usando o Quick.
GOSTEI 0
Gandalf.nho
22/04/2005
Pelo que já vi e testei, esse truque de acertar o tamanho do papel para o tamanho de cada ´página´ para que não ejete, só funciona com formulário contínuo e não folha solta.
GOSTEI 0
Edilcimar
22/04/2005
é só configurar a página para o tamanho do cheque e imprimir utilizando printer.canvas.textou(coluna,linha,texto);
eu não tenho exemplo de cheque, eu utilizo para nota fiscal tamanho personalizado
eu não tenho exemplo de cheque, eu utilizo para nota fiscal tamanho personalizado
GOSTEI 0
Aroldo Zanela
22/04/2005
Bom vamos ao teste, ajustei o papel da impressora para o tamanho do cheque, e o que o quick me faz, imprime um cheque em uma folha da o eject e depois imprime o segundo cheque na outra folha e assim por diante isto usando o Quick.
Colega,
E se você destacar o formulário antes da impressão?
GOSTEI 0
Atgomes
22/04/2005
é só configurar a página para o tamanho do cheque e imprimir utilizando printer.canvas.textou(coluna,linha,texto);
eu não tenho exemplo de cheque, eu utilizo para nota fiscal tamanho personalizado
Infelizmente tive de deixar este problema de lado para resolver outras coisas mas tenho de resolver isso de alguma forma, Edcilmar, usei o exemplo que deixou aqui Printer.Canvas.TextOut, e mesmo usando esta impressão direta a impressora não obedece e EJETA a folha.
GOSTEI 0
Atgomes
22/04/2005
é só configurar a página para o tamanho do cheque e imprimir utilizando printer.canvas.textou(coluna,linha,texto);
eu não tenho exemplo de cheque, eu utilizo para nota fiscal tamanho personalizado
EDICILMAR SEGUE O EXEMPLO QUE USEI:
procedure TForm1.Button1Click(Sender: TObject);
var
Linha: integer;
Tamanho: integer;
Coluna: integer;
begin
Database1.Connected := tRUE;
table1.Open;
Printer.Orientation := poPortrait;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := ´Times New Roman´;
Printer.Canvas.Font.Size := 10;
Linha := 20;
Coluna := 20;
Tamanho := Printer.Canvas.TextWidth(´a´);
Table1.First;
while not Table1.Eof do
begin
if Linha = 20 then
begin
Coluna := 20;
Printer.Canvas.TextOut(0, Linha, ´Relação de Clientes´);
Linha := Linha - Printer.Canvas.Font.Height + 5;
Printer.Canvas.TextOut(Coluna, Linha, ´Cod´);
Coluna := Coluna + (Tamanho * 5);
Printer.Canvas.TextOut(Coluna, Linha, ´Nome´);
Coluna := Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna, Linha, ´Endereço´);
Coluna := Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5;
end;
Coluna := 20;
Printer.Canvas.TextOut(Coluna, Linha, Table1.FieldByName(´Codigo´).AsString);
Coluna := Coluna + (Tamanho * 5);
Printer.Canvas.TextOut(Coluna, Linha, Table1.FieldByName(´Nome´).AsString);
Coluna := Coluna + (Tamanho * 30);
Printer.Canvas.TextOut(Coluna, Linha, Table1.FieldByName(´ENDER´).AsString);
Coluna := Coluna + (Tamanho * 30);
Linha := Linha - Printer.Canvas.Font.Height + 5;
Table1.Next;
if Linha > Printer.PageHeight - 20 then
begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;
end;
GOSTEI 0
Atgomes
22/04/2005
é só configurar a página para o tamanho do cheque e imprimir utilizando printer.canvas.textou(coluna,linha,texto);
eu não tenho exemplo de cheque, eu utilizo para nota fiscal tamanho personalizado
Edicilmar esqueci de um detalhe Antes do BeginDoc, estou usando esta procedure para setar a página no tamanho do cheque.
procedure TForm1.SetPrinterPage(Width, Height : LongInt);
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
begin
Printer.GetPrinter(Device, Driver, Port, hDMode);
If hDMode <> 0 then
begin
pDMode := GlobalLock( hDMode );
If pDMode <> nil then
begin
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := Width;
pDMode^.dmPaperLength := Height;
pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
GlobalUnlock( hDMode );
end;
end;
end;
GOSTEI 0