⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boxincome.pas

📁 Barcode And LabelPrint
💻 PAS
字号:
unit BoxIncome;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NEOFORM, ExtCtrls, ToolWin, ComCtrls, StdCtrls, Buttons, Mask,
  DBCtrls, RpBase, RpSystem, RpDefine, RpRave, RpCon, RpConDS, rvclass, rvcsstd, RvCsBars,
  DB, ADODB, Grids, DBGrids;

type
  TFrmBoxIncome = class(TGBKPForm)
    GroupBox1: TGroupBox;
    MemoBarcodeS: TMemo;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    DBEditBarCode: TDBEdit;
    Label2: TLabel;
    DBEditOrderID: TDBEdit;
    Label3: TLabel;
    DBEditDevName: TDBEdit;
    Label4: TLabel;
    DBEditCustomerName: TDBEdit;
    Label5: TLabel;
    DBEditpostdate: TDBEdit;
    EdtBarCodeEnter: TEdit;
    LabelMessage: TLabel;
    RvProjectShipLabel: TRvProject;
    RvSystemShipLabel: TRvSystem;
    RvDataSetConnectionPack: TRvDataSetConnection;
    Label6: TLabel;
    DBMemoMemo: TDBMemo;
    Label7: TLabel;
    Label8: TLabel;
    LabelThisCount: TLabel;
    LabelTodayCount: TLabel;
    QToday: TADOQuery;
    ChkPreview: TCheckBox;
    CheckBoxSetPrint: TCheckBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    GroupBox2: TGroupBox;
    MemoPrintBarCode: TMemo;
    procedure EdtBarCodeEnterKeyPress(Sender: TObject; var Key: Char);
    procedure MemoBarcodeSDblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    OrderIDstr: string;
    DevNamestr: string;
    CustomerNamestr: string;
    postdatestr: string;
    Memostr: string;
    { Private declarations }
  public
    function MessageAndSaveBarcodeInfo(infoType: string; OldInfo, newInfo: string): boolean;
    function ContrastBarcodeInfo: boolean;
    procedure SaveBarcodeInfo;
    { Public declarations }
  end;

var
  FrmBoxIncome: TFrmBoxIncome;

implementation

uses StockDataModel, PublicParameter;

{$R *.dfm}

procedure TFrmBoxIncome.EdtBarCodeEnterKeyPress(Sender: TObject;
  var Key: Char);
var BarCodeTemp: string;
  nums: string;
  MyPage: TRavePage;
  MyText: TRaveText;
  I2of5BarCodeBoxPackBarcode: TRaveI2of5BarCode;
  I2of5BarCodeBoxPackBarcode2: TRaveI2of5BarCode;
  TextDevHardOptionS: TRavetext;
  TextDevHardOptionS2: TRavetext;
begin
  inherited;

  LabelMessage.Caption := '';
  LabelMessage.Refresh;
  if key = #13 then //条码完毕
  begin
    BarCodeTemp := copy(trim(EdtBarCodeEnter.Text), length(trim(EdtBarCodeEnter.Text)) - 13 + 1, 13); //扫描时前面多一个0????
    if BarCodeTemp = '' then
    begin
      LabelMessage.Caption := '扫描失败,请重新扫描!';
      exit;
    end;

    if MemoBarcodeS.Lines.IndexOf(BarCodeTemp) >= 0 then
    begin
      LabelMessage.Caption := '此条码刚扫描过,机器已经包装,请重新扫描!';
      EdtBarCodeEnter.Text := '';
      exit;
    end;

    //定位并显示信息
    if not StockDM.QBarCodefind.Locate('BarCode', BarCodeTemp, []) then
    begin
      LabelMessage.Caption := '此机器还未生产,条码还未生成,请重新扫描!';
      EdtBarCodeEnter.Text := '';
      exit;
    end;


    if StockDM.QBarCodefind.FieldValues['IsPack'] then
    begin
      LabelMessage.Caption := '此机器已经包装,请重新扫描!';
      EdtBarCodeEnter.Text := '';
      exit;
    end;

    //StockDM.QOrders.Locate('OrderID', StockDM.QBarCodefind.FieldValues['OrderID'], []);
    //进行其他检查
    if (MemoBarcodeS.Lines.Count = 0) and (MemoPrintBarCode.Lines.Count = 0) then
    begin //是第一个时记下
      if Application.MessageBox(pchar('请确定包装机器是否正确?'), pchar('提示'), MB_YESNO) = IDYES then
      begin
     //记下原来所有值
        SaveBarcodeInfo;
      end;
    end else
    begin
      if ContrastBarcodeInfo then
        SaveBarcodeInfo //有改变并认为是正确的就记下
      else exit; //是错的就退出
    end;

    nums := StockDM.QBarCodefind.Fieldbyname('devHardOptions').AsString;
    //先保存每次保存一个
    StockDM.QBarCodefind.Edit; //已经定位
    StockDM.QBarCodefind.FieldValues['IsPack'] := true;
    StockDM.QBarCodefind.FieldValues['PackDate'] :=  FormatDateTime('yyyy-mm-dd',Date);
    StockDM.QBarCodefind.FieldValues['PackTime'] := time;
    StockDM.QBarCodefind.Post;

    MemoPrintBarCode.Lines.Add(BarCodeTemp);
    if MemoPrintBarCode.Lines.Count >= 2 then
    begin
      MemoBarcodeS.Lines.AddStrings(MemoPrintBarCode.Lines);
     //自动 打印
      RvProjectShipLabel.ProjectFile := CurPath + '\条码\BoxPackBarCode.rav';
      RvProjectShipLabel.Open;

      with RvProjectShipLabel.ProjMan do
      begin

        MyPage := FindRaveComponent('ReportMain.Page1', nil) as TRavePage;
        I2of5BarCodeBoxPackBarcode := FindRaveComponent('I2of5BarCodeBoxPackBarcode', MyPage) as TRaveI2of5BarCode;
        I2of5BarCodeBoxPackBarcode2 := FindRaveComponent('I2of5BarCodeBoxPackBarcode2', MyPage) as TRaveI2of5BarCode;
        I2of5BarCodeBoxPackBarcode.Text := MemoPrintBarCode.Lines[0]; //条码
        I2of5BarCodeBoxPackBarcode2.Text := MemoPrintBarCode.Lines[1]; //条码
         //I2of5BarCodeBoxPackBarcode.Text := MemoPrintBarCode.Lines[2]; //条码
        //I2of5BarCodeBoxPackBarcode2.Text := MemoPrintBarCode.Lines[3]; //条码

      //I2of5BarCode3.Reflect;
        TextDevHardOptionS := FindRaveComponent('TextDevHardOptionS', MyPage) as TRaveText;
        TextDevHardOptionS2 := FindRaveComponent('TextDevHardOptionS2', MyPage) as TRaveText;
        TextDevHardOptions.Text := nums; //条码
        TextDevHardOptions2.Text := nums; //条码
      end;

      if CheckBoxSetPrint.Checked then
        RvSystemShipLabel.SystemSetups := [ssAllowSetup, ssAllowCopies, ssAllowDestPreview, ssAllowDestPrinter, ssAllowPrinterSetup, ssAllowPreviewSetup]
      else
        RvSystemShipLabel.SystemSetups := [];
      if ChkPreview.Checked then RvSystemShipLabel.DefaultDest := rdPreview
      else RvSystemShipLabel.DefaultDest := rdPrinter;

     //RvSystemShipLabel.SystemSetups:=rdPrinter;
      try //Canvas does not allow drawing //因为系统没有打印机
        RvProjectShipLabel.Execute; //是因为TCanvas的FHandle还没有分配的时候就要求执行必须有FHandle才能进行的操作引起的,
      except
        ShowMessage('打印失败请重新打印!');
        Abort;
      end;
      MemoPrintBarCode.Clear;
    end;



    with QToday do
    begin
      close;
      parameters.ParamByName('PackDate').Value := FormatDateTime('yyyy-mm-dd',Date);
      open;
      labeltodaycount.Caption := inttostr(RecordCount);
    end;


    labelThiscount.Caption := inttostr(MemoBarcodeS.Lines.Count);

    EdtBarCodeEnter.text := '';
  end;
  EdtBarCodeEnter.SetFocus;
end;
//判断值是否改变

function TFrmBoxIncome.ContrastBarcodeInfo: boolean;
begin
  Result := true;
  if OrderIDstr <> DBEditOrderID.Text then //订单号不同
  begin
    if MessageAndSaveBarcodeInfo('订单号', OrderIDstr, DBEditOrderID.Text) then

      Result := true else Result := false;
    exit;

  end
  else if CustomerNamestr <> DBEditCustomerName.Text then //客户名称
  begin
    if MessageAndSaveBarcodeInfo('客户名称', CustomerNamestr, DBEditCustomerName.Text) then

      Result := true else Result := false;
    exit;

  end
  else if DevNamestr <> DBEditDevName.Text then //机型
  begin
    if MessageAndSaveBarcodeInfo('机型', DevNamestr, DBEditDevName.Text) then

      Result := true else Result := false;
    exit;

  end else if postdatestr <> DBEditpostdate.Text then //生产日期
  begin
    if MessageAndSaveBarcodeInfo('生产日期', postdatestr, DBEditpostdate.Text) then

      Result := true else Result := false;
    exit;

  end
  else if Memostr <> DBMemoMemo.Text then //配置说明
  begin
    if MessageAndSaveBarcodeInfo('配置说明', Memostr, DBMemoMemo.Text) then

      Result := true else Result := false;
    exit;

  end
end;

function TFrmBoxIncome.MessageAndSaveBarcodeInfo(infoType: string; OldInfo, newInfo: string): boolean;
begin
  Result := false;
  if Application.MessageBox(pchar(infoType + '将由' + #13 + OldInfo + #13 + '改变为' + #13 + newInfo + #13 + '请确定包装机器正确?'), pchar('提示'), MB_YESNO) = IDYES then
  begin
    Result := true;
//记下原来所有值
    SaveBarcodeInfo;
  end;
end;
//记下原来所有值

procedure TFrmBoxIncome.SaveBarcodeInfo;
begin
  OrderIDstr := DBEditOrderID.Text;
  DevNamestr := DBEditDevName.Text;
  CustomerNamestr := DBEditCustomerName.Text;
  postdatestr := DBEditpostdate.Text;
  Memostr := DBMemoMemo.Text;
end;


procedure TFrmBoxIncome.MemoBarcodeSDblClick(Sender: TObject);
begin
  inherited;
  StockDM.QBarCodefind.Locate('BarCode', MemoBarcodeS.SelText, []);

end;

procedure TFrmBoxIncome.FormShow(Sender: TObject);
var iBegin: Cardinal;
begin
  inherited;
  EdtBarCodeEnter.SetFocus;
  ActiveControl := EdtBarCodeEnter;
  iBegin := GetTickCount; // GetTickCount() 取得当前系统时间的毫秒值
  with StockDM.QBarCodefind do
  begin
    Close;
    sql.Clear;
    //sql.Add('select a.*,b.*,c.DevName,d.CustomerName,d.OrderDetail,d.OrderMemo  from BarCode a,GBarCode b,DeviceType c,Orders d where a.GBarCodeID=b.GBarCodeID and a.Devnum=c.Devnum and a.OrderId=d.OrderID ');
    sql.Add('select  a.barCode,a.OrderID,a.CustomerName,a.Postdate,a.isPack,a.PackDate,a.PackTime,a.devHardOptions,c.DevName from BarCode a,DeviceType c where  a.Devnum=c.Devnum');
    Open;      // distinct
  end;
  //if not StockDM.QOrders.Active then StockDM.QOrders.Active:=true;
  iBegin := GetTickCount - iBegin; //
  LabelMessage.Caption:='用时' + inttostr(iBegin) + '毫秒)'
end;

procedure TFrmBoxIncome.BitBtn1Click(Sender: TObject);
begin
  inherited;
  close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -