Probleminha Com Etiquetas!
08/03/2006
0
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
Posts
08/03/2006
Daniel Martins
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.
09/03/2006
Helio Nascimento
Voce poderia postar aqui a seu codigo da solução?
13/03/2006
Daniel Martins
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.
13/03/2006
Helio Nascimento
Resolveu. Obrigado pela sua atenção..
Saudações/Hélio
Clique aqui para fazer login e interagir na Comunidade :)