📄 boxincome.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 + -