Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Imprimir Etiquetas


João Paulo Taraciuk

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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

Edited by Jhonas
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...