Probleminha Com Etiquetas!

08/03/2006

Olá Pessoal!

Estou fazendo um sistema comum de controle de estoque, onde eu tenho q gerar um certo número de etiquetas por produto. Até ai tudo bem.

o que eu Queria saber é se existe alguma tecnica para evitar ´Disperdicios´ de etiquetas. por Ex:

Eu tenho um cartela com 10 etiquetas, e só preciso imprimir 3 etiquetas
ficaram 7 etiquetas na cartela, como faço para na próxima impressão o programa imprimir apartir do 4 espaço da cartela?

Vou fazer as etiquetas no QuickReport do Delphi 6 utilizando Interbase.

Vou colocar no Quick uma banda dtail com 2 colunas, será q tem como eu deixar em branco as 3 primeiras linhas e imprimir a imformação apartir da 4 linha?
Gostaria de saber a opinião de v6, agradeço desde já....flw


Daniel Martins

Respostas

08/03/2006

Daniel Martins

Problema Resolvido!

Fiz um Formulário onde o usuário informa qtas etiquetas ele quer imprimir, e tbm qtos espaços em branco tem na cartela.
por ex:

Imprimir 5 etiquetas
a cartela tem 3 espaços em branco

entao eu monto em um ClientDataSet Virtual os 3 registros em branco e os 5 registros com o codigo de barras e imprimo no quick com uma banda detail direcionada para o ClientDataSet Normal.


Responder Citar

09/03/2006

Helio Nascimento

Caro amigo DAniel S Martins

Voce poderia postar aqui a seu codigo da solução?


Responder Citar

13/03/2006

Daniel Martins

naum sei como eu coloco img mas o código da unit é esse:
unit ufrmConfEtiqueta;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, DB, DBClient, Grids, DBGrids, Mask,
  DBCtrls;

type
  TfrmConfEtiqueta = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    btnImprirmir: TBitBtn;
    Label8: TLabel;
    cdsEtiquetas: TClientDataSet;
    cdsEtiquetasBARRAS: TStringField;
    BitBtn1: TBitBtn;
    edtBarras: TEdit;
    cdsConfEtiqueta: TClientDataSet;
    cdsConfEtiquetaNUMETIQUETAS: TIntegerField;
    cdsConfEtiquetaESPACOS: TIntegerField;
    cdsConfEtiquetaALTURAFOLHA: TIntegerField;
    cdsConfEtiquetaLARGURAFOLHA: TIntegerField;
    cdsConfEtiquetaNUMCOLUNAS: TIntegerField;
    cdsConfEtiquetaMARGEMSUPERIOR: TIntegerField;
    cdsConfEtiquetaMARGEMINFERIOR: TIntegerField;
    dsConfEtiqueta: TDataSource;
    edtNumEtiquetas: TDBEdit;
    edtNumEspacos: TDBEdit;
    edtAlturaFolha: TDBEdit;
    edtLarguraFolha: TDBEdit;
    edtNumColunas: TDBEdit;
    edtMargemSuperior: TDBEdit;
    edtMargemInferiror: TDBEdit;
    Label9: TLabel;
    edtMargemEsquerda: TDBEdit;
    Label10: TLabel;
    edtMargemDireita: TDBEdit;
    cdsConfEtiquetaMARGEMESQUERDA: TIntegerField;
    cdsConfEtiquetaMARGEMDIREITA: TIntegerField;
    procedure btnImprirmirClick(Sender: TObject);
    procedure edtNumEtiquetasExit(Sender: TObject);
    procedure edtNumEspacosExit(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure ValoresDefault;
    Procedure GeraRegistrosEtiquetas;
  end;

var
  frmConfEtiqueta: TfrmConfEtiqueta;

implementation

uses uQrpEtiquetas;

{$R *.dfm}

{ TForm1 }

procedure TfrmConfEtiqueta.ValoresDefault;
begin
edtNumEtiquetas.Text    :=´0´  ;
edtNumEspacos.Text      :=´0´  ;
edtNumColunas.Text      :=´02´ ;
edtAlturaFolha.Text     :=´297´;
edtLarguraFolha.Text    :=´210´;
edtMargemSuperior.Text  :=´10´ ;
edtMargemInferiror.Text :=´10´ ;
edtMargemEsquerda.Text  :=´10´ ;
edtMargemDireita.Text   :=´10´ ;
end;

procedure TfrmConfEtiqueta.btnImprirmirClick(Sender: TObject);
begin
 //testes iniciais, excluir lixos
 if cdsConfEtiqueta.State in [dsEdit,dsInsert&93; then
 begin
  cdsConfEtiqueta.Post;
 end;

 GeraRegistrosEtiquetas;
//Cria a Impressão
 QrpEtiquetas:=TQrpEtiquetas.create(self);
 try
 (* carrega Configurações*)
 //Tipo de Papel
 //QrpEtiquetas.Page.PaperSize:=Custom;
 //Altura e Largura
 QrpEtiquetas.Page.Length :=StrToInt(edtAlturaFolha.Text);
 QrpEtiquetas.Page.Width  :=StrToInt(edtLarguraFolha.Text);
 //Número de Colunas
 QrpEtiquetas.Page.Columns:=StrToInt(edtNumColunas.Text);
 //Margens
 QrpEtiquetas.Page.TopMargin    :=StrToInt(edtMargemSuperior.Text );
 QrpEtiquetas.Page.BottomMargin :=StrToInt(edtMargemInferiror.Text);
 QrpEtiquetas.Page.LeftMargin   :=StrToInt(edtMargemEsquerda.Text );
 QrpEtiquetas.Page.RightMargin  :=StrToInt(edtMargemDireita.Text  );

 //Mostra a impressão
 QrpEtiquetas.Preview;

 Finally
 //Limpa
 QrpEtiquetas.Free;
 end;
end;

procedure TfrmConfEtiqueta.edtNumEtiquetasExit(Sender: TObject);
begin
 if edtNumEtiquetas.Text = ´´ then
 begin
  edtNumEtiquetas.Text := ´0´;
 end;
end;

procedure TfrmConfEtiqueta.edtNumEspacosExit(Sender: TObject);
begin
if edtNumEspacos.Text = ´´ then
 begin
  edtNumEspacos.Text := ´0´;
 end;
end;

procedure TfrmConfEtiqueta.GeraRegistrosEtiquetas;
var
 NumEtiquetas, EspacosVazios,x:Integer;
begin
 NumEtiquetas:=0; EspacosVazios:=0;

 NumEtiquetas :=StrToInt(edtNumEtiquetas.Text);
 EspacosVazios:=StrToInt(edtNumEspacos.Text);
 if not cdsEtiquetas.IsEmpty then
 begin
   cdsEtiquetas.First;
   while not cdsEtiquetas.Eof do
   begin
    cdsEtiquetas.Delete;
   end;
 end;

 for x:=0 to EspacosVazios-1 do
 begin
  cdsEtiquetas.Insert;
 // cdsEtiquetasBARRAS.AsString:=edtBarras.Text;
  cdsEtiquetas.Post;
 end;

 for x:=0 to NumEtiquetas-1 do
 begin
  cdsEtiquetas.Insert;
  cdsEtiquetasBARRAS.AsString:=edtBarras.Text;
  cdsEtiquetas.Post;
 end;

 cdsEtiquetas.Close;
 cdsEtiquetas.Open;
end;

procedure TfrmConfEtiqueta.BitBtn2Click(Sender: TObject);
begin
 GeraRegistrosEtiquetas;
end;

procedure TfrmConfEtiqueta.BitBtn1Click(Sender: TObject);
begin
if cdsConfEtiqueta.IsEmpty then
begin
cdsConfEtiqueta.Insert;
ValoresDefault;
cdsConfEtiqueta.Post;
end;
if not cdsConfEtiqueta.IsEmpty then
begin
cdsConfEtiqueta.Edit;
ValoresDefault;
cdsConfEtiqueta.Post;
end;

end;

end.



Responder Citar

13/03/2006

Daniel Martins

Espero q seja de ajuda


Responder Citar

13/03/2006

Helio Nascimento

Amigo DAniel S Martins

Resolveu. Obrigado pela sua atenção..

Saudações/Hélio


Responder Citar