Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Imprimir Etiquetas


João Paulo Taraciuk

Pergunta

Gostaria de saber como eu faço para imprimir etiquetas corrtamente no Qreport, quero imprimir em formulário contínuo, sem espaços nem em cima nem embaixo da página, a primeira página, imprime beleza, mas na segunda, ele dá um espaço antes da primeira etiqueta, então todas saem fora , estou utilizando página com duas colunas de 12 etiquetas cada, etiquetas de 2,4cm por 8,9cm.

Utilizo Delphi 7, a impressão é tipo mala direta, com 4 linhas por etiqueta.

Este erro ocorre em impressora matricial, em jato de tinta ele imprime legal, sem cabeçalhos.

Ah, gostaria de saber também como faço para imprimir em linhas ao invés de colunas.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Verifique se o tipo de papel que voce selecionou para o Quick Report é o mesmo que esta definido na impressora

exemplo: se o tipo for A4 no QR e Carta na impressora pode ocorrer este problema ( verifique )

eu tambem imprimo etiquetas e uso no QR PaperSize = A4Small e na impressora a mesma coisa e imprime certinho

Ah, gostaria de saber também como faço para imprimir em linhas ao invés de colunas.

isto é feito na banda de detalhe (Detail) e depende de como voce dispõe os campos na banda

exemplo: se voce colocar dois componentes QRDBText1 com o mesmo link para um campo ( nome da rua ) um ao lado do outro e controlar a leitura do arquivo, voce vai ter o nome de duas ruas diferentes um ao lado do outro, neste caso voce estara imprimindo em linhas mas dentro de colunas

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Dúvida na impressão em linha

Desculpa amigo, sou iniciante e não sei como poderia fazer dessa maneira, teria como você me dar uma luz, eu estou utilizando um ClientDataSet em um outro form, 4 QRBDText em cada etiqueta, Nome, Endereço, Bairro, CEP, pretendo imprimir etiquetas Pimaco, página com 24 etiquetas, 12 em cada coluna, Um QRBand, o Qreport está marcado como duas colunas, a dúvida é como eu posso controlar a leitura dos dados.

Se puder me ajudar eu agradeço

valeu!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Para começar o comprimento vertical da banda de detalhe do QR deve ser igual ao comprimento vertical da etiqueta mais a metade da distancia entre as etiquetas, ai não tem erro , sempre vai cair no mesmo lugar

vou te passar o codigo da maneira mais simples de se fazer isto

No form onde estao os componentes da tabela

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBClient, Provider, DBTables, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Cadastro_IB: TQuery;
    DSP_Cadastro: TDataSetProvider;
    CDS_Cadastro: TClientDataSet;
    DS_Cadastro: TDataSource;
    CDS_CadastroEMPRESA: TStringField;
    CDS_CadastroENDER: TStringField;
    CDS_CadastroBAIRRO: TStringField;
    CDS_CadastroCIDADE: TStringField;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
   QuickReport2.Preview;  // chamar o QR
end;

end.
Agora o Quick Report
unit Unit2;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;

type
  TQuickReport2 = class(TQuickRep)
    QRBand1: TQRBand;
    QRDBText1: TQRDBText;  // Empresa
    QRDBText2: TQRDBText;  // Ender
    QRDBText3: TQRDBText;  // Bairro
    QRDBText5: TQRDBText;  // Cidade
    QRDBText6: TQRDBText;  // Empresa
    QRDBText7: TQRDBText;  // Ender
    QRDBText4: TQRDBText;  // Bairro
    QRDBText8: TQRDBText;  // Cidade
    procedure QRDBText5Print(sender: TObject; var Value: String);
  private

  public

  end;

var
  QuickReport2: TQuickReport2;

implementation

{$R *.DFM}

uses Unit1;

procedure TQuickReport2.QRDBText5Print(sender: TObject; var Value: String);
begin
   Form1.CDS_Cadastro.Next;  // controle da leitura
   Value := Form1.CDS_CadastroEMPRESA.Value;
end;

end.

OBS: quando o ( QRDBText5: TQRDBText; // Cidade ) for repetir o registro, forçamos ele ler o proximo e atribuimos o novo valor de registro a partir dele ( Value := Form1.CDS_CadastroEMPRESA.Value; )

desta maneira os : QRDBText7: TQRDBText; // Ender

QRDBText4: TQRDBText; // Bairro

QRDBText8: TQRDBText; // Cidade

assumirão os novos valores do proximo registro, mas serão impressos em linha e não mais em coluna ( mesmo que aparentemente seja coluna )

Importante: deixe o QR com apenas uma coluna

Agora como fica na banda de detalhe os campos

______________________________________________________________________________________

[QRDBText1] ..................espaço........................................ [QRDBText5]

[QRDBText2] ..................espaço........................................ [QRDBText6]

[QRDBText3] ..................espaço........................................ [QRDBText7]

[QRDBText4] ..................espaço........................................ [QRDBText8]

_______________________________________________________________________________________

abraço

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, Show de bola cara, muito obrigado, deu 100% certo. Sem querer ser muito chato, tem como mudar a ordem de impressão do QuickReport ? Porque ele imprime da última para a primeira página, se tivesse como imprimir da primeira para a última seria interessante.

valeu!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Esta é a procedure do form do qreport

unit U_etiquetamala;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QuickRpt, QRCtrls, ExtCtrls;

type

Tfrm_etiquetamaladireta = class(TForm)

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBText5: TQRDBText;

QRDBText6: TQRDBText;

QRDBText7: TQRDBText;

QRDBText8: TQRDBText;

QRDBText9: TQRDBText;

QRDBText10: TQRDBText;

QRBand2: TQRBand;

procedure QRDBText6Print(sender: TObject; var Value: String);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frm_etiquetamaladireta: Tfrm_etiquetamaladireta;

implementation

uses U_Etiquetas;

{$R *.dfm}

procedure Tfrm_etiquetamaladireta.QRDBText6Print(sender: TObject;

var Value: String);

begin

Frm_Etiquetas.CDS_Selecao.Next;

Value := Frm_Etiquetas.CDS_SelecaoNOME.Value;

end;

end.

esta é do botão que chama o qreport

procedure TFrm_Etiquetas.btn_etiquetas(Sender: TObject);

begin

frm_etiquetamaladireta.QuickRep1.Preview;

end;

ë somente a ordem de impressão das páginas que está ao contrário tipo, começa da décima para a primeira página,

Obrigado pela atenção!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...