ordertobarcode.~pa

来自「Barcode And LabelPrint」· ~PA 代码 · 共 701 行 · 第 1/2 页

~PA
701
字号
unit OrderToBarCode;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NEOFORM, ExtCtrls, ToolWin, ComCtrls, StdCtrls, Grids, Buttons, DateUtils,
  RpBase, RpSystem, RpRave, RpDefine, RpCon, RpConDS, fcdbtreeview,
  fcTreeView, DBGrids, DB, ADODB;

type
  TFrmOrderToBarCode = class(TGBKPForm)
    Panel1: TPanel;
    Panel2: TPanel;
    PScrollBoxCenter: TPanel;
    Splitter2: TSplitter;
    PanelPan: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    GroupBox2: TGroupBox;
    MemoOrderMemo: TMemo;
    EdtPanPrincipal: TEdit;
    EdtPanAuditing: TEdit;
    Panel8: TPanel;
    GroupBox1: TGroupBox;
    MemoOrderDetail: TMemo;
    Panel9: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Bevel1: TBevel;
    Label3: TLabel;
    EdtSellPrincipal: TEdit;
    EdtPanTab: TEdit;
    EdtCustomer: TEdit;
    ComboBoxDevName: TComboBox;
    StringGridOrder: TStringGrid;
    EdtDevName: TEdit;
    Panel4: TPanel;
    PanelEnge: TPanel;
    Panel10: TPanel;
    Panel11: TPanel;
    Panel12: TPanel;
    MemoEngMemo: TMemo;
    Label10: TLabel;
    Edit9: TEdit;
    Label11: TLabel;
    EdtOrderID: TEdit;
    Panel13: TPanel;
    Panel14: TPanel;
    Panel15: TPanel;
    Panel16: TPanel;
    Panel17: TPanel;
    Panel18: TPanel;
    Label12: TLabel;
    EdtEngAudting: TEdit;
    Panel19: TPanel;
    Panel20: TPanel;
    Panel21: TPanel;
    Panel22: TPanel;
    Panel23: TPanel;
    StringGrid1: TStringGrid;
    Panel24: TPanel;
    StringGrid2: TStringGrid;
    Panel25: TPanel;
    Panel26: TPanel;
    StringGrid3: TStringGrid;
    Panel27: TPanel;
    Panel28: TPanel;
    StringGrid4: TStringGrid;
    Panel29: TPanel;
    Label13: TLabel;
    BitBtnpost: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtnPrintBarcode: TBitBtn;
    ProgressBar1: TProgressBar;
    Panel30: TPanel;
    MemoRDMemo: TMemo;
    Panel31: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    EdtSpecificPro: TEdit;
    EdtApplyDept: TEdit;
    EdtProPrincipal: TEdit;
    Panel32: TPanel;
    Label9: TLabel;
    RvDataSetConnectionBarCode: TRvDataSetConnection;
    RvProjectBarCode: TRvProject;
    RvSystemBarCode: TRvSystem;
    Label14: TLabel;
    DateTimePickerPostDate: TDateTimePicker;
    Panel33: TPanel;
    MemoMemo: TMemo;
    fcTreeViewBarCode: TTreeView;
    BitBtn1: TBitBtn;
    GroupBox3: TGroupBox;
    Label15: TLabel;
    LabelThisCount: TLabel;
    Label16: TLabel;
    LabelTodayCount: TLabel;
    Label17: TLabel;
    LabelTodayOrderCount: TLabel;
    QToday: TADOQuery;
    BitBtn3: TBitBtn;
    RvDataSetConnectionGBarCode: TRvDataSetConnection;
    procedure FormCreate(Sender: TObject);
    procedure StringGridOrderDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    procedure StringGridOrderSelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    procedure FormResize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtnpostClick(Sender: TObject);
    procedure ComboBoxDevNameKeyPress(Sender: TObject; var Key: Char);
    procedure BitBtnPrintBarcodeClick(Sender: TObject);
    procedure EdtOrderIDKeyPress(Sender: TObject; var Key: Char);
    procedure ComboBoxDevNameCloseUp(Sender: TObject);
    procedure ComboBoxDevNameSelect(Sender: TObject);
    procedure ComboBoxDevNameExit(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);

  private
    Canselect: boolean; //  :=true
    procedure EdtDevNameKeyPressInt(Sender: TObject; var Key: Char);
    procedure EdtDevNameKeyPressStr(Sender: TObject; var Key: Char);
    function CreateMachineNumberStar(Devnum: dword; postDate: Tdate; orderIDStr: string): string;
    function CreateSerialNumberStart(DevNumINT: dword; postDate: tdate; orderIDStr: string): string;
    procedure loadBarcodeToTreeView;
    procedure GetDevHardOptionsNumAndEName(DevName: string; var NumS, Enames: string);
    procedure getStatInfo;
    { Private declarations }

  public
    { Public declarations }
  end;

var
  FrmOrderToBarCode: TFrmOrderToBarCode;

implementation

uses PublicFunction, StockDataModel, PublicParameter;

{$R *.dfm}

procedure TFrmOrderToBarCode.FormCreate(Sender: TObject);
var i: integer;
begin
  inherited;
  Label13.Caption := '通' + #10#13 + '用';
  DateTimePickerPostDate.Date := date;
  EdtDevName.Text := '';
  MemoMemo.Lines.Clear;
  with StringGridOrder do
  begin
    ColCount := 4;
    RowCount := 31;
    ColWidths[0] := 25;
    Cells[0, 0] := '序号$$M'; //
    cells[1, 0] := '名称与规格$$M'; //
    Cells[2, 0] := '数量$$M'; //
    Cells[3, 0] := '配置说明$$M'; //
    for i := 1 to StringGridOrder.RowCount - 1 do
    begin
      Cells[0, i] := inttostr(i);
    end;
  end;
end;

procedure TFrmOrderToBarCode.StringGridOrderDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  inherited;
  gridDrawCell(Sender, ACol, ARow, Rect, State);
end;


procedure TFrmOrderToBarCode.StringGridOrderSelectCell(Sender: TObject;
  ACol, ARow: Integer; var CanSelect: Boolean);
var
  i: integer;
  NumS, Enames: string;
begin
  inherited;
  EdtDevName.Visible := false;
  comboboxDevName.Visible := false;
  MemoMemo.Visible := false;
  with StringGridOrder do
  begin
    if col = 1 then Cells[col, row] := ComboBoxDevName.Text;
    if col = 2 then cells[col, row] := EdtDevName.text;
    if col = 3 then cells[col, row] := MemoMemo.Text;
  end;

  if acol = 1 then
  begin
    ComboBoxDevName.Visible := true;
    ComboBoxDevName.Text := StringGridOrder.Cells[acol, arow];
    with StringGridOrder.CellRect(acol, arow) do
    begin
      ComboBoxDevName.Parent := StringGridOrder;
      ComboBoxDevName.Top := top;
      ComboBoxDevName.Left := left;
      ComboBoxDevName.Width := right - left;
      ComboBoxDevName.Height := (bottom - top) * (ComboBoxDevName.Items.Count + 1);
      ComboBoxDevName.Visible := true;
      ComboBoxDevName.SetFocus;
    end;
  end; //end if acol=0 then

  if acol = 2 then
  begin
    EdtDevName.Visible := true;
    if ACol = 2 then EdtDevName.OnKeyPress := EdtDevNameKeyPressInt;
    if ACol = 3 then EdtDevName.OnKeyPress := nil; // EdtDevNameKeyPressStr
    EdtDevName.Text := StringGridOrder.Cells[acol, arow];
    with StringGridOrder.CellRect(acol, arow) do
    begin
      EdtDevName.Parent := StringGridOrder;
      EdtDevName.Top := top + 1;
      EdtDevName.Left := left + 1;
      EdtDevName.Width := right - left - 2;
      EdtDevName.Height := bottom - top - 2;
      EdtDevName.SetFocus;
    end;
  end;
  if acol = 3 then
  begin
    MemoMemo.Visible := true;

    MemoMemo.Text := StringGridOrder.Cells[acol, arow];
    with StringGridOrder.CellRect(acol, arow) do
    begin
      MemoMemo.Parent := StringGridOrder;
      MemoMemo.Top := top + 1;
      MemoMemo.Left := left + 1;
      MemoMemo.Width := right - left - 2;
      MemoMemo.Height := bottom - top - 2;
      MemoMemo.SetFocus;
    end;
  end;
end;

procedure TFrmOrderToBarCode.FormResize(Sender: TObject);
begin
  inherited;
  with StringGridOrder do
  begin
    ColWidths[3] := Width - (ColWidths[0] + ColWidths[1] + ColWidths[2] + BorderWidth + 20);
  end;
end;

procedure TFrmOrderToBarCode.FormShow(Sender: TObject);
begin
  inherited;
  ComboBoxDevName.Items.AddStrings(GetValueToCMB('DeviceType', 'DevName', 'All'));
  with StringGridOrder do
  begin
    ColWidths[3] := Width - (ColWidths[0] + ColWidths[1] + ColWidths[2] + BorderWidth + 20);
  end;
end;

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

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

procedure TFrmOrderToBarCode.BitBtnpostClick(Sender: TObject);
var i, j: integer;
  num: dword;
  DevNum: string;
  SerialNumberStart, SerialNumberTemp, LastSerialNumberStr: string;
  LastSerialNumberInt: integer;

  NumS, Enames: string;
begin
  inherited;
  if messagedlg('一旦提交将不可修改,请保证输入正确,而且此订单信息完整', mtinformation, [mbok, mbno], 0) = mrNO then exit;

  StringGridOrderSelectCell(self, StringGridOrder.Col, StringGridOrder.Row, Canselect);
  if (EdtOrderID.Text = '') // or (DBEditNum.Text = '') or (DBEditbusiness.Text = '')  or (DBLookupComboBoxDevNum.Text = '')
    or (EdtCustomer.Text = '')
    then
  begin
    ShowMessage('信息输入不全,请输入订单号和客户名称!');
    exit;
  end;
  if (length(EdtOrderID.Text) < 13) // or (DBEditNum.Text = '') or (DBEditbusiness.Text = '')  or (DBLookupComboBoxDevNum.Text = '')
    then
  begin
    ShowMessage('订单号输入不全,请输入订单号的除"-"所有数字!');
    exit;
  end;
  with StockDM.QOrders do
  begin
    if not Active then Active := true;
    if Locate('OrderID;PostDate', VarArrayOf([edtOrderID.Text, datetostr(DateTimePickerPostDate.Date)]), []) then //checkValue('OrderS', 'OrderID', edtOrderID.Text)
    begin //限制编号不可重复否则打印不好控制一次性只打印本次所输的
      messagedlg(FormatDateTime('yyyy年mm月dd日', DateTimePickerPostDate.Date) + '内此订单号已经存在,请重输!', mtinformation, [mbok], 0);
      exit;
    end;
  end;
  ProgressBar1.Position := 0;
  ProgressBar1.Max := 0;
  for i := 1 to StringGridOrder.RowCount - 1 do
  begin
    if (trim(StringGridOrder.Cells[1, i]) = '') or (trim(StringGridOrder.Cells[2, i]) = '') then Continue;
    ProgressBar1.Max := ProgressBar1.Max + strtoint(trim(StringGridOrder.Cells[2, i])); //数量

  end;
  if ProgressBar1.Max <= 0 then
  begin
    ShowMessage('此订单还无生产项目,请输入!');
    exit;
  end;
  StockDM.ADOConn.BeginTrans; //进入事务管理
  //try
  try
//保存订单基本信息
    with StockDM.QOrders do
    begin
      if not Active then Active := true;
        //不检查重复,订单重复,就进行修改
      //if Locate('OrderID', edtOrderID.Text, []) then
      //  edit
      //else
      Append;
      FieldValues['OrderID'] := edtOrderID.Text; //要防止重复
      FieldValues['CustomerName'] := EdtCustomer.Text;
      FieldValues['PostDate'] := datetostr(DateTimePickerPostDate.Date);
      FieldValues['SellPrincipal'] := edtSellPrincipal.Text;
      FieldValues['PanTab'] := edtPanTab.Text;
      FieldValues['OrderDetail'] := MemoOrderDetail.Text;
      FieldValues['OrderMemo'] := MemoOrderMemo.Text;
      FieldValues['PanPrincipal'] := edtPanPrincipal.Text;
      FieldValues['PanAuditing'] := edtPanAuditing.Text;
      FieldValues['SpecificPro'] := edtSpecificPro.Text;
      FieldValues['ApplyDept'] := edtApplyDept.Text;

⌨️ 快捷键说明

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