Array
(
)

Probleminha Com Etiquetas!

Daniel Martins
   - 08 mar 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
   - 08 mar 2006

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.


Helio Nascimento
   - 09 mar 2006

Caro amigo DAniel S Martins

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


Daniel Martins
   - 13 mar 2006

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


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



Daniel Martins
   - 13 mar 2006

Espero q seja de ajuda


Helio Nascimento
   - 13 mar 2006

Amigo DAniel S Martins

Resolveu. Obrigado pela sua atenção..

Saudações/Hélio