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 + -
显示快捷键?