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

📄 shipment.~pas

📁 Barcode And LabelPrint
💻 ~PAS
字号:
unit Shipment;

interface

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

type
  TFrmShipment = class(TGBKPForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DateTimePickerPostDateSart: TDateTimePicker;
    DateTimePickerPostDateEnd: TDateTimePicker;
    EdtOrderIDEnd: TEdit;
    BitBtn1: TBitBtn;
    CheckBoxOrderID: TCheckBox;
    CheckBoxPostDate: TCheckBox;
    CheckBoxCustomer: TCheckBox;
    CheckBoxDevtype: TCheckBox;
    EdtCustomer: TEdit;
    DBNavigator1: TDBNavigator;
    Panel1: TPanel;
    DBGridEh1: TDBGridEh;
    Panel2: TPanel;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    BtnPrint: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    EdtBarCodeEnter: TEdit;
    LabelMessage: TLabel;
    RvProjectShipLabel: TRvProject;
    RvSystemShipLabel: TRvSystem;
    RvDataSetConnectionShipLabel: TRvDataSetConnection;
    EdtOrderIDSart: TComboBox;
    EdtDevtype: TComboBox;
    CheckBoxIsOut: TCheckBox;
    Label3: TLabel;
    EdtAutoPrintNum: TEdit;
    procedure CheckBoxOrderIDClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure EdtBarCodeEnterKeyPress(Sender: TObject; var Key: Char);
    procedure BtnPrintClick(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure RvSystemShipLabelAfterPrint(Sender: TObject);
    procedure EdtAutoPrintNumKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmShipment: TFrmShipment;

implementation

uses StockDataModel, ADODB, PublicFunction, PublicParameter;

{$R *.dfm}

procedure TFrmShipment.CheckBoxOrderIDClick(Sender: TObject);
begin
  inherited;
  EdtOrderIDSart.Enabled := CheckBoxOrderID.Checked;
  EdtOrderIDEnd.Enabled := CheckBoxOrderID.Checked;
  DateTimePickerPostDateSart.Enabled := CheckBoxPostDate.Checked;
  DateTimePickerPostDateEnd.Enabled := CheckBoxPostDate.Checked;
  EdtDevtype.Enabled := CheckBoxDevtype.Checked;
  EdtCustomer.Enabled := CheckBoxCustomer.Checked;

  if EdtOrderIDSart.Enabled = false then EdtOrderIDSart.Color := clSilver else EdtOrderIDSart.Color := clWindow;
  EdtOrderIDEnd.Color := EdtOrderIDSart.Color;
  if DateTimePickerPostDateSart.Enabled = false then DateTimePickerPostDateSart.Color := clSilver else DateTimePickerPostDateSart.Color := clWindow;
  DateTimePickerPostDateEnd.Color := DateTimePickerPostDateSart.Color;
  if EdtDevtype.Enabled = false then EdtDevtype.Color := clSilver else EdtDevtype.Color := clWindow;
  if EdtCustomer.Enabled = false then EdtCustomer.Color := clSilver else EdtCustomer.Color := clWindow;

end;

procedure TFrmShipment.BitBtn1Click(Sender: TObject);
var sqlstr: string;
begin
  inherited;
  sqlstr := '';
  sqlstr := 'select a.*,b.*,c.DevName,d.CustomerName,d.postdate  from BarCode a,GBarCode b,DeviceType c,Orders d  '+
            'where  a.GBarCodeID=b.GBarCodeID and b.Devnum=c.Devnum and b.OrderID=d.OrderID'; //
  if CheckBoxOrderID.Checked then
  begin
    sqlstr := sqlstr + format(' and a.OrderId=%s', [trim(EdtOrderIDSart.Text)]);
  end;
  if CheckBoxPostDate.Checked then
  begin
    sqlstr := sqlstr + format(' and PostDate >=''%s'' and PostDate <= ''%s''', [datetostr(DateTimePickerPostDateSart.Date), datetostr(DateTimePickerPostDateEnd.Date)]);
  end; //保证日期是datetime型
  if CheckBoxDevtype.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and DevName like ''%%%s%%'' ', [EdtDevtype.Text]);
  end;

  if CheckBoxCustomer.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and Customer like ''%%%s%%''', [EdtCustomer.Text]);
  end;

   if CheckBoxIsOut.State=cbChecked then
   sqlstr := sqlstr + format(' and a.IsOut=%d', [1])
   else if CheckBoxIsOut.State=cbunchecked then sqlstr := sqlstr + format(' and a.IsOut=%d', [0]);


  with StockDM.QBarCodefind do
  begin
    Close;
    SQL.Clear;
    SQL.Text := sqlstr + ' order by a.OrderID';
    Prepared := true;
    Open;
    //Parameters.Items[0].Value := strtodate(datetostr(DateTimePickerPostDateSart.Date)); //如果不转换oracle将提示数据类型不一致
    //Parameters.Items[1].Value := strtodate(datetostr(DateTimePickerPostDateEnd.Date));
    //sqlstr:=SQL.Text;
    //EdtSum.Text := inttostr(RecordCount);
    //EdtSum.Text :=sqlstr;
  end;

end;

procedure TFrmShipment.FormShow(Sender: TObject);
begin
  inherited;
  StockDM.QBarCode.Active := false; StockDM.QBarCode.Active := true;
  if StockDM.QBarCode.RecordCount >= 5 then deleteRec(StockDM.ADOConnBarCodeTemp, 'BarCode', '');
  DateTimePickerPostDateSart.Date := date;
  DateTimePickerPostDateEnd.Date := date;
  RvProjectShipLabel.ProjectFile := CurPath + '\条码\ShipLabel.rav';
  EdtOrderIDSart.Items.AddStrings(GetValueToCMB('Orders', 'OrderID', 'All'));
  EdtDevtype.Items.AddStrings(GetValueToCMB('DeviceType', 'DevName', 'All'));
  BitBtn1Click(Sender);  EdtBarCodeEnter.SetFocus;
end;

procedure TFrmShipment.EdtBarCodeEnterKeyPress(Sender: TObject;
  var Key: Char);
var BarCodeTemp: string;
AutoPrintNum:integer;
begin
  inherited;
  AutoPrintNum:=strtoint(EdtAutoPrintNum.Text);
  if key = #13 then //条码完毕
  begin
    BarCodeTemp := trim(EdtBarCodeEnter.Text);   BarCodeTemp :=copy(trim(EdtBarCodeEnter.Text),2,15) ;//扫描时前面多一个0
    if BarCodeTemp = '' then
    begin
      LabelMessage.Caption := '扫描失败,请重新扫描!';
      exit;
    end;
     EdtBarCodeEnter.text:='';
    if StockDM.QBarCode.Locate('BarCode', BarCodeTemp, []) then
    begin
      LabelMessage.Caption := '此条码刚扫描过,请重新扫描!';
      exit;
    end;

    if not StockDM.QBarCodefind.Locate('BarCode', BarCodeTemp, []) then
    begin
      LabelMessage.Caption := '此条码机器还未入库,请重新扫描!';
      exit;
    end
    else
    begin
      if StockDM.QBarCodefind.FieldValues['Isout'] = true then
      begin
        LabelMessage.Caption := '此条码机器已经装箱出货,请检查!';
        exit;
      end;
    end;
    if StockDM.QBarCode.RecordCount >= 5 then
    begin
      LabelMessage.Caption := '已经连续扫描5台机器,请装箱并打印标签!';
      exit;
    end;

  //已经定位
    StockDM.QBarCode.Append;
    StockDM.QBarCode.FieldValues['BarCode'] := BarCodeTemp;
    StockDM.QBarCode.post;

    StockDM.QBarCodefind.Edit;
    StockDM.QBarCodefind.FieldValues['IsOut'] := true;
    StockDM.QBarCodefind.FieldValues['OutComeDate'] := date;
    StockDM.QBarCodefind.FieldValues['OutComeTime'] := TimeToStr(Time);
    StockDM.QBarCodefind.Post;
   EdtBarCodeEnter.text:='';
  end;
  BtnPrint.Enabled := true;//随时可以打印无论机器数量
  if StockDM.QBarCode.RecordCount >= AutoPrintNum then
  begin
    //开始自动打印
    BtnPrint.Enabled :=false;
    BtnPrintClick(self);
  end;

  EdtBarCodeEnter.SetFocus;

end;

procedure TFrmShipment.BtnPrintClick(Sender: TObject);
 //var
 //MyPage:   TRavePage;
 //MyText:   TRaveText;
 //I2of5BarCode3:TRaveI2of5BarCode;
begin
  inherited;
    {  With   RvProjectShipLabel.ProjMan   do   begin
              MyPage   :=   FindRaveComponent('Report.MainPage',nil)   as  TRavePage;

              I2of5BarCode3   :=   FindRaveComponent('I2of5BarCode3',MyPage)   as   TRaveI2of5BarCode;
              I2of5BarCode3.Text:='1234567890';
      end; }
  //打印成功后删除

   //RaveProject
   //RvSystemShipLabel.
  try
    RvProjectShipLabel.Execute;
  except
    ShowMessage('打印失败请重新打印!');
    Abort;
  end;
end;

procedure TFrmShipment.BitBtn7Click(Sender: TObject);
begin
  inherited;
  if StockDM.QBarCode.RecordCount > 0 then
    if messagedlg('您确定要删除当前记录吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
    begin
      if StockDM.QBarCodefind.Locate('BarCode', StockDM.QBarCode.FieldValues['BarCode'], []) then
      begin
        StockDM.QBarCodefind.Edit;
        StockDM.QBarCodefind.FieldValues['Isout'] := false;
        StockDM.QBarCodefind.FieldValues['OutComedate'] := null;
        StockDM.QBarCodefind.FieldValues['OutComeTime'] := '';
        StockDM.QBarCodefind.Post;
      end;
      StockDM.QBarCode.Delete;
    end;
end;

procedure TFrmShipment.RvSystemShipLabelAfterPrint(Sender: TObject);
begin
  inherited;
  deleteRec(StockDM.ADOConnBarCodeTemp, 'BarCode', '');
  StockDM.QBarCode.close;
  StockDM.QBarCode.open;
  BtnPrint.Enabled := false;
end;

procedure TFrmShipment.EdtAutoPrintNumKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
 if (not (Key in ['0'..'9', #8])) then Key := #0;
end;

end.

⌨️ 快捷键说明

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