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

📄 boxincome.~pa

📁 Barcode And LabelPrint
💻 ~PA
字号:
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;

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;
    procedure EdtBarCodeEnterKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure MemoBarcodeSDblClick(Sender: TObject);
    procedure FormShow(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;
  TextDevHardOptionS: TRavetext;
begin
  inherited;
  LabelMessage.Caption := '';
  LabelMessage.Refresh;
  if key = #13 then //条码完毕
  begin
    BarCodeTemp := copy(trim(EdtBarCodeEnter.Text), length(trim(EdtBarCodeEnter.Text)) - 15 + 1, 15); //扫描时前面多一个0????
    if BarCodeTemp = '' then
    begin
      LabelMessage.Caption := '扫描失败,请重新扫描!';
      exit;
    end;

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

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

    if StockDM.QBarCodefind.FieldValues['IsPack'] then
    begin
      LabelMessage.Caption := '此机器已经包装,请重新扫描!';
      exit;
    end;
    //进行其他检查
    if MemoBarcodeS.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;

    MemoBarcodeS.Lines.Add(BarCodeTemp);
     //自动 打印
    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;
      I2of5BarCodeBoxPackBarcode.Text := BarCodeTemp; //条码

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

    end;
    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;
    StockDM.QBarCodefind.Edit; //已经定位
    StockDM.QBarCodefind.FieldValues['IsPack'] := true;
    StockDM.QBarCodefind.FieldValues['PackDate'] := date;
    StockDM.QBarCodefind.FieldValues['PackTime'] := time;
    StockDM.QBarCodefind.Post;
    with QToday do
    begin
      close;
      parameters.ParamByName('PackDate').Value := 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.FormCreate(Sender: TObject);
begin
  inherited;
 //RvProjectShipLabel.ProjectFile := CurPath + '\条码\BoxIncomeBarCode.rav';
  if StockDM.QBarCodefind.Active = false then StockDM.QBarCodefind.Active := true;

end;

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

end;

procedure TFrmBoxIncome.FormShow(Sender: TObject);
begin
  inherited;
  EdtBarCodeEnter.SetFocus;
  ActiveControl := EdtBarCodeEnter;
end;

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

end.

⌨️ 快捷键说明

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