Newsgroup: it.comp.lang.delphi
Titolo: Etichette composizione, stampa cover

Ciao a tutti,
             espongo il seguente problema:
Problema:
         Ho la necessità di stampare delle etichette di composizione con 
         una stampante Avey Dennison TTK per il maglifico per cui lavoro.
         Tutto funziona bene, in quanto per la stampa non ho nessuno 
         problema, eredito la composizione dal database e la scrivo nelle 
         lingue consentite per legge per intero, mentre la composizione è 
         scritta con i codici esempio: 80%vi 19%co 1%pa
         qui esiste un calcolo che verifica i dati inseriti, simboli e 
         calcolo della composizione, i numeri che vedete restituiscono 
         sempre 100 e se una sbaglia il programma dà un errore.
         Ora per stampare le etichette scelgo:
              Linea, Prodotto, Variante, Tipo di etichetta, Quantità.
              Fleggo poi su un check box cover se voglio stampare la 
              cover e la stampo; sulla cover stampo dei dati che mi 
              servono per imbustare le etichette e precisamente:
              - Data e ora
              - Stagione
              - Linea
              - Tessuto
              - Prodotto
              - Quantità             
         Funziona tutto correttamente.
         Io però per comodità devo stampare 100 etichette + la cover alla 
         volta perchè le metto poi in un sacchettino.
         100 è la quantità ottimale per poter distribuire poi le 
         etichette stampate ai terzisti che fanno la confezione, e per 
         calcolare quante etichette dare, il 100 è ottimale.
         Io però vorrei inserie nel campo quantità da stampare, ad 
         esempio 10000 e vorrei che ogni 100 etichette stampate, se ho 
         fleggato il check box cover.
         E' possibile farlo?
Ora scrivo il codice presente nella form per la stampa delle etichette.
unit uEtichette;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
  Dialogs, uOneLevel, IBCustomDataSet, DB, QExport, QExportXLS,
  QExportDialog, Menus, kbmMemTable, kbmMemBinaryStreamFormat, ExtCtrls,
  IBDatabase, ComCtrls, DBCtrls, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  ToolWin, dxDBTLCl, dxGrClms, dxExEdtr, dxEdLib, dxDBELib, dxEditor,
  dxExGrEd, dxExELib, StdCtrls, IBQuery, Buttons, FR_Class, IBSQL;
type
  TfEtichette = class(TfOneLevel)
    tTabellaOID: TIntegerField;
    tTabellaOID_STAGIONE: TIntegerField;
    tTabellaOID_LINEA: TIntegerField;
    tTabellaOID_PRODOTTO: TIntegerField;
    tTabellaDATA: TDateField;
    tTabellaQUANTITA: TIBBCDField;
    tTabellaNOTE: TIBStringField;
    tTabellaLINEA: TStringField;
    tTabellaPRODOTTO: TStringField;
    tTabellaTESSUTO: TStringField;
    dxDBGrid1OID: TdxDBGridMaskColumn;
    dxDBGrid1OID_STAGIONE: TdxDBGridMaskColumn;
    dxDBGrid1OID_LINEA: TdxDBGridMaskColumn;
    dxDBGrid1OID_PRODOTTO: TdxDBGridMaskColumn;
    dxDBGrid1DATA: TdxDBGridDateColumn;
    dxDBGrid1LINEA: TdxDBGridColumn;
    dxDBGrid1TESSUTO: TdxDBGridColumn;
    dxDBGrid1PRODOTTO: TdxDBGridColumn;
    dxDBGrid1QUANTITA: TdxDBGridMaskColumn;
    dxDBGrid1NOTE: TdxDBGridMaskColumn;
    Label5: TLabel;
    dxDBExtLookupEdit2: TdxDBExtLookupEdit;
    Label1: TLabel;
    dbLookProd: TdxDBExtLookupEdit;
    Label2: TLabel;
    dxDBDateEdit1: TdxDBDateEdit;
    Label4: TLabel;
    dxDBMemo1: TdxDBMemo;
    Label21: TLabel;
    dxDBCalcEdit1: TdxDBCalcEdit;
    dxDBCheckEdit1: TdxDBCheckEdit;
    tTabellaSTAMPA: TStringField;
    qTessuti: TIBQuery;
    qTessutiOID: TIntegerField;
    qTessutiCODICE: TIBStringField;
    qTessutiDISEGNO: TIBStringField;
    qTessutiOID_STAGIONE: TIntegerField;
    qTessutiOID_LINEA: TIntegerField;
    qTessutiNOTE: TIBStringField;
    qTessutiATTIVO: TSmallintField;
    qTessutiLAVAGGIO: TIBStringField;
    qTessutiCANDEGGIO: TIBStringField;
    qTessutiSTIRATURA: TIBStringField;
    qTessutiLAV_SECCO: TIBStringField;
    qTessutiASCIUGATURA: TIBStringField;
    qTessutiCOMPOSIZIONE: TIBStringField;
    qTessutiCOMPOSIZIONE_MANUALE: TIBStringField;
    qTessutiTEMPO_MACCHINA: TIBBCDField;
    qTessutiOID_CLASSE_MACCHINA: TIntegerField;
    qTessutiOID_DEPOSITO: TIntegerField;
    qTessutiFINEZZA: TIBStringField;
    qTessutiCODICE_CLIENTE: TIBStringField;
    qTessutiETICHETTA: TIBStringField;
    bEti: TSpeedButton;
    mtEti: TkbmMemTable;
    mtEtiPERC: TStringField;
    mtEtiDESC: TStringField;
    mtEtiDESC_GB: TStringField;
    mtEtiDESC_FR: TStringField;
    mtEtiDESC_DE: TStringField;
    mtEtiDESC_ES: TStringField;
    mtEtiDESC_PT: TStringField;
    Report: TfrReport;
    Label30: TLabel;
    bEtichetta: TSpeedButton;
    od: TOpenDialog;
    mtEti1: TkbmMemTable;
    mtEti1LAVAGGIO: TStringField;
    Button1: TButton;
    qP: TIBSQL;
    qT: TIBSQL;
    tTabellaSTAGIONE: TStringField;
    Report1: TfrReport;
    PrintSetup: TPrinterSetupDialog;
    cbCover: TdxCheckEdit;
    tTabellaETICHETTA: TIBStringField;
    dxDBEdit1: TdxDBEdit;
    qProdotto: TIBQuery;
    qProdottoOID: TIntegerField;
    qProdottoCODICE: TIBStringField;
    qProdottoDESCRIZIONE: TIBStringField;
    qProdottoOID_UNITA_MISURA: TIntegerField;
    qProdottoOID_TESSUTI: TIntegerField;
    qProdottoOID_MODELLO: TIntegerField;
    qProdottoOID_STAGIONE: TIntegerField;
    qProdottoOID_LINEA: TIntegerField;
    qProdottoNOTE: TIBStringField;
    qProdottoPESO_CAPO: TIBBCDField;
    qProdottoPREZZO: TIBBCDField;
    qProdottoPESO_ACCESSORI: TIBBCDField;
    qProdottoOID_TAGLIE: TIntegerField;
    qProdottoTIPO: TSmallintField;
    qProdottoTEMPO_CAPO: TIBBCDField;
    qProdottoTEMPO_ACCESSORI: TIBBCDField;
    qProdottoELIMINATO: TSmallintField;
    qProdottoLISTINO: TSmallintField;
    qProdottoCTR_PREZZO: TSmallintField;
    qProdottoPREZZO_LISTINO: TIBBCDField;
    qProdottoCTR_PESO: TSmallintField;
    qProdottoCODICE_CLIENTE: TIBStringField;
    qProdottoCODICE_CMP: TIBStringField;
    qProdottoCAPI_PACCO: TSmallintField;
    qProdottoNOTE_ODP: TIBStringField;
    qVariante: TIBQuery;
    tTabellaOID_VARIANTE: TIntegerField;
    tTabellaVARIANTE: TStringField;
    Label3: TLabel;
    dxDBExtLookupEdit1: TdxDBExtLookupEdit;
    qVarianteOID: TIntegerField;
    qVarianteOID_A: TIntegerField;
    qVarianteVARIANTE: TIBStringField;
    qVarianteCAMPIONARIO: TSmallintField;
    qVarianteTIRELLA: TSmallintField;
    qVarianteOID_B: TIntegerField;
    qVarianteELIMINATA: TSmallintField;
    qLinea: TIBQuery;
    qLineaLINEA: TIBStringField;
    qLineaOID: TIntegerField;
    qLineaCODICE: TIBStringField;
    qLineaRAGIONE_SOCIALE: TIBStringField;
    qLineaINDIRIZZO: TIBStringField;
    qLineaCAP: TIBStringField;
    qLineaCITTA: TIBStringField;
    qLineaPROVINCIA: TIBStringField;
    qLineaOID_NAZIONE: TIntegerField;
    qLineaPARTITA_IVA: TIBStringField;
    qLineaCODICE_FISCALE: TIBStringField;
    qLineaCLIENTE: TSmallintField;
    qLineaCODICE_CLIENTE_CONTABILE: TIBStringField;
    qLineaFORNITORE: TSmallintField;
    qLineaCODICE_FORNITORE_CONTABILE: TIBStringField;
    qLineaOID_PAGAMENTO: TIntegerField;
    qLineaOID_VALUTA: TIntegerField;
    qLineaOID_SETTORE: TIntegerField;
    qLineaATTIVO: TSmallintField;
    qLineaDICHIARAZIONE_INTENTI: TIBStringField;
    qLineaOID_IVA: TIntegerField;
    qLineaNOTE: TIBStringField;
    qLineaTELEFONO: TIBStringField;
    qLineaFAX: TIBStringField;
    qLineaEMAIL: TIBStringField;
    qLineaCARICO_MANUALE: TSmallintField;
    qLineaNOTE_DDT: TIBStringField;
    qLineaTIPOSORT_DDT: TIBStringField;
    procedure tTabellaCalcFields(DataSet: TDataSet);
    procedure tTabellaNewRecord(DataSet: TDataSet);
    procedure tTabellaBeforeOpen(DataSet: TDataSet);
    procedure dxDBExtLookupEdit2Popup(Sender: TObject;
      const EditText: String);
    procedure dbLookProdPopup(Sender: TObject; const EditText: String);
    procedure dbLookProdCloseUp(Sender: TObject; var Text: String;
      var Accept: Boolean);
    procedure dxDBExtLookupEdit2CloseUp(Sender: TObject; var Text: String;
      var Accept: Boolean);
    procedure bEtiClick(Sender: TObject);
    procedure ReportDrawObject(View: TfrView);
    procedure bEtichettaClick(Sender: TObject);
    procedure tTabellaBeforePost(DataSet: TDataSet);
    procedure Button1Click(Sender: TObject);
    procedure dxDBExtLookupEdit1Popup(Sender: TObject;
      const EditText: String);
    procedure dxDBExtLookupEdit1CloseUp(Sender: TObject; var Text: String;
      var Accept: Boolean);
  private
    { Private declarations }
    calc_len: boolean;
  public
    { Public declarations }
  end;
var
  fEtichette: TfEtichette;
implementation
uses udmLookup, udmMatia;
{$R *.dfm}
procedure TfEtichette.tTabellaCalcFields(DataSet: TDataSet);
var
  oid_tessuto: string;
begin
  inherited;
  tTabellaLINEA.AsString:=dmLookup.CalcField2( 'LINEA', 
tTabellaOID_LINEA.AsString, ['CODICE'] );
  tTabellaPRODOTTO.AsString:=dmLookup.CalcField2( 'PRODOTTO_A', 
tTabellaOID_PRODOTTO.AsString, ['CODICE','DESCRIZIONE'] );
  oid_tessuto:=dmLookup.CalcField2( 'PRODOTTO_A', 
tTabellaOID_PRODOTTO.AsString, ['OID_TESSUTI'] );
  tTabellaTESSUTO.AsString:=dmLookup.CalcField2( 'TESSUTO_A', 
oid_tessuto, ['CODICE'] );
  tTabellaSTAGIONE.AsString:=dmLookup.CalcField2( 'STAGIONI', 
tTabellaOID_STAGIONE.AsString, ['CODICE'] );
  tTabellaVARIANTE.AsString:=dmLookup.CalcField( 'TESSUTO_B', 
tTabellaOID_VARIANTE.AsString, 'VARIANTE' );
end;
procedure TfEtichette.tTabellaNewRecord(DataSet: TDataSet);
begin
  inherited;
  tTabellaSTAMPA.AsString:='N';
  tTabellaQUANTITA.AsInteger:=0;
  tTabellaOID_STAGIONE.AsInteger:=dmMatia.Oid_Stagione;
  tTabellaDATA.AsDateTime:=Date;
end;
procedure TfEtichette.tTabellaBeforeOpen(DataSet: TDataSet);
begin
  inherited;
  tTabella.ParamByName('oid_stagione').AsInteger:=dmMatia.Oid_Stagione;
end;
procedure TfEtichette.dxDBExtLookupEdit2Popup(Sender: TObject;
  const EditText: String);
begin
  inherited;
  dmLookup.PopUp('LINEA', tTabellaOID_LINEA.AsString);
end;
procedure TfEtichette.dbLookProdPopup(Sender: TObject;
  const EditText: String);
begin
  inherited;
  if tTabellaOID_LINEA.AsString<'0' then
     dmMatia.MsgOK('Selezionare la linea!')
  else
     dmLookup.PopUp('PRODOTTI_LINEA', 
tTabellaOID_PRODOTTO.AsString, 'oid_stagione='+IntToStr
(dmMatia.Oid_STagione)+',oid_linea='+tTabellaOID_LINEA.AsString );
end;
procedure TfEtichette.dbLookProdCloseUp(Sender: TObject; var Text: String;
  var Accept: Boolean);
begin
  inherited;
  tTabellaOID_PRODOTTO.AsString:=dmLookup.CloseUp('PRODOTTI_LINEA');
  qP.ParamByName('oid').AsInteger:=tTabellaOID_PRODOTTO.AsInteger;
  qP.ExecQuery;
  if qP.FieldByName('codice_cmp').AsString='' then
  begin
     qT.ParamByName('oid').AsString:=dmLookup.CalcField2( 'PRODOTTO_A', 
tTabellaOID_PRODOTTO.AsString, ['OID_TESSUTI'] );
     qT.ExecQuery;
     if qT.FieldByName('etichetta').AsString>'' then
        tTabellaETICHETTA.AsString:=qT.FieldByName
('etichetta').AsString+'.frf';
     qT.CLose;
  end else
     tTabellaETICHETTA.AsString:=qP.FieldByName
('codice_cmp').AsString+'.frf';
  qP.Close;
  if not FileExists
(dmMatia.ExePath+'Stampe\Etichette\'+tTabellaETICHETTA.AsString) then
  begin
     dmMatia.MsgOK('Il formato etichetta non esiste, selezionarlo 
manualmente!');
     tTabellaETICHETTA.AsString:='';
     bEtichettaClick(Sender);
  end;
end;
procedure TfEtichette.dxDBExtLookupEdit2CloseUp(Sender: TObject;
  var Text: String; var Accept: Boolean);
begin
  inherited;
  tTabellaOID_LINEA.AsString:=dmLookup.CloseUp('LINEA');
end;
procedure TfEtichette.bEtiClick(Sender: TObject);
var
  nC: integer;
begin
  inherited;
  PrintSetup.Execute;
  mtEti.Close;
  mtEti.Open;
  mtEti1.Close;
  mtEti1.Open;
  qLinea.CLose;
  qProdotto.Close;
  qVariante.Close;
  qTessuti.CLose;
  qLinea.ParamByName('oid').AsString:=tTabellaOID_LINEA.AsString;
  qLinea.Open;
  qProdotto.ParamByName('oid').AsString:=tTabellaOID_PRODOTTO.AsString;
  qProdotto.Open;
  qVariante.ParamByName('oid').AsString:=tTabellaOID_VARIANTE.AsString;
  qVariante.Open;
  qTessuti.ParamByName('oid').AsString:=qProdottoOID_TESSUTI.AsString;
  qTessuti.Open;
  try
     dmMatia.FullComp(qTessutiCOMPOSIZIONE_MANUALE.AsString, mtEti);
     mtEti1.Append;
 
mtEti1LAVAGGIO.AsString:=qTessutiLAVAGGIO.AsString+qTessutiCANDEGGIO.AsStr
ing+qTessutiSTIRATURA.AsString+qTessutiLAV_SECCO.AsString+qTessutiASCIUGAT
URA.AsString;
     mtEti1.Post;
  except
  end;
  Report.LoadFromFile
(dmMatia.ExePath+'Stampe\Etichette\'+tTabellaETICHETTA.AsString);
  calc_len:=true;
  Report.PrepareReport;
  try
     nC:=tTabellaQUANTITA.AsInteger;
     if nC<100 then
        nC:=Trunc(nC*1.1)
     else
        nC:=Trunc(nC*1.05);
  except
     nC:=1;
  end;
  Report.Tag:=nC;
  Report.ShowReport;
  if cbCover.Checked then
  begin
     Report1.LoadFromFile(dmMatia.ExePath+'Stampe\Etichette\COVER.FRF');
     Report1.PrepareReport;
     Report1.PrintPreparedReport( 1,1,1, false );
  end;
  Report.Tag:=0;
end;
procedure TfEtichette.ReportDrawObject(View: TfrView);
var
  let: currency;
begin
  inherited;
  if (calc_len) and (View.Name='Memo5') then
  begin
     if view.top>50 then
     begin
        let:=View.Top+View.Height;
        let:=let*(2.9)-8;
        Report.Pages[0].ChangePaper(Report.Pages[0].pgSize, Report.Pages
[0].pgWidth, trunc(let),Report.Pages[0].pgOr);
        calc_len:=false;
     end;
  end;
end;
procedure TfEtichette.bEtichettaClick(Sender: TObject);
begin
  inherited;
  od.InitialDir:=dmMatia.ExePath+'\Stampe\Etichette';
  if od.execute then
  begin
     if tTabella.State in [dsBrowse] then
        tTabella.Edit;
     tTabellaETICHETTA.AsString:=ExtractFileName(od.FileName);
  end;
end;
procedure TfEtichette.tTabellaBeforePost(DataSet: TDataSet);
begin
  inherited;
  if tTabella.State in [dsInsert] then
  begin
     tTabella['OID']:=dmMatia.GenOid('ETI');
  end;
end;
procedure TfEtichette.Button1Click(Sender: TObject);
begin
  inherited;
  Report.DesignReport;
end;
procedure TfEtichette.dxDBExtLookupEdit1Popup(Sender: TObject;
  const EditText: String);
var
  oid_tessuto: string;
begin
  inherited;
  oid_tessuto:=dmLookup.CalcField2( 'PRODOTTO_A', 
tTabellaOID_PRODOTTO.AsString, ['OID_TESSUTI'] );
  if oid_tessuto<'0' then
     dmMatia.MsgOK('Selezionare un prodotto!')
  else
     dmLookup.PopUp('TESSUTO_B', 
tTabellaOID_VARIANTE.AsString, 'oid_a='+oid_tessuto );
end;
procedure TfEtichette.dxDBExtLookupEdit1CloseUp(Sender: TObject;
  var Text: String; var Accept: Boolean);
begin
  inherited;
  tTabellaOID_VARIANTE.AsString:=dmLookup.CloseUp('TESSUTO_B');
end;
end.
Grazie dell'attenzione.
A presto.
 
Massimiliano Monti
Cellulare: 0039 - 335 - 8477278
Mail: 
massimili...@matia.it
--- posted by geoForum on 
http://www.delphiedintorni.it

Massimiliano Monti
	Ciao
	MassimoB
 
---------------------------------
http://www.massimobeschi.it/
---------------------------------
Se tu pagare come dici tu ...
Io lavorare come dico io ...
Se tu pagare come dico io ...
Io lavorare come dici tu ...
---------------------------------