D10sxYilanbuyi/F04染色刷卡/U_MachTaskList.pas

1012 lines
33 KiB
ObjectPascal
Raw Normal View History

2025-09-11 16:06:40 +08:00
unit U_MachTaskList;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics,
cxControls, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinWXI,
cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator,
dxDateRanges, dxScrollbarAnnotations, Data.DB, cxDBData, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxGridCustomView, cxGrid, Vcl.ComCtrls, Vcl.ToolWin, Data.Win.ADODB,
Vcl.ExtCtrls, cxContainer, cxTextEdit, Vcl.StdCtrls, cxMaskEdit, cxButtonEdit,
2025-09-30 17:22:54 +08:00
Vcl.Menus, cxButtons, dxSkinsDefaultPainters, Datasnap.DBClient, cxTimeEdit,
cxCalendar, dxBarBuiltInMenu, cxGridCustomPopupMenu, cxGridPopupMenu;
2025-09-11 16:06:40 +08:00
type
TfrmMachTaskList = class(TForm)
cxGrid1: TcxGrid;
2025-09-30 17:22:54 +08:00
Tv1: TcxGridDBTableView;
Tv1pcid: TcxGridDBColumn;
Tv1MCNO: TcxGridDBColumn;
Tv1OrderNo: TcxGridDBColumn;
Tv1C_name: TcxGridDBColumn;
Tv1c_color: TcxGridDBColumn;
Tv1taskDate: TcxGridDBColumn;
Tv1taskRollNum: TcxGridDBColumn;
Tv1taskQty: TcxGridDBColumn;
2025-09-11 16:06:40 +08:00
cxGrid1Level1: TcxGridLevel;
ToolBar3: TToolBar;
Trefresh: TToolButton;
Tconfirm: TToolButton;
Tclose: TToolButton;
2025-09-30 17:22:54 +08:00
DS_1: TDataSource;
2025-09-11 16:06:40 +08:00
ADOQueryList: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
pcid: TcxTextEdit;
Label2: TLabel;
2025-09-30 17:22:54 +08:00
C_Name: TcxTextEdit;
2025-09-11 16:06:40 +08:00
ADOQueryTmp: TADOQuery;
ADOQueryCmd: TADOQuery;
ADOQueryCard: TADOQuery;
ADOQueryMach: TADOQuery;
TBDel: TToolButton;
2025-09-30 17:22:54 +08:00
Tv1BegTime: TcxGridDBColumn;
2025-09-11 16:06:40 +08:00
ToolButton1: TToolButton;
ToolButton2: TToolButton;
2025-09-30 17:22:54 +08:00
CDS_1: TClientDataSet;
TbSave: TToolButton;
Tv1MCName: TcxGridDBColumn;
Tv2: TcxGridDBTableView;
cxGrid2Level1: TcxGridLevel;
cxGrid2: TcxGrid;
Tv2OrderNo: TcxGridDBColumn;
Tv2PCID: TcxGridDBColumn;
Tv2GlideName: TcxGridDBColumn;
Tv2C_Name: TcxGridDBColumn;
CDS_2: TClientDataSet;
DS_2: TDataSource;
TbEditSave: TToolButton;
Tv1GlideID: TcxGridDBColumn;
Splitter1: TSplitter;
Tv1GlideNo: TcxGridDBColumn;
Tv2GlideNo: TcxGridDBColumn;
Tv2PSType: TcxGridDBColumn;
Tv1PSType: TcxGridDBColumn;
Tv1PSID: TcxGridDBColumn;
Tv2All_zhuji: TcxGridDBColumn;
Tv2ALL_temperature6: TcxGridDBColumn;
cxGridPopupMenu1: TcxGridPopupMenu;
cxGridPopupMenu2: TcxGridPopupMenu;
Tv2GlideID: TcxGridDBColumn;
2025-09-11 16:06:40 +08:00
procedure TcloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TconfirmClick(Sender: TObject);
procedure TrefreshClick(Sender: TObject);
procedure pcidKeyPress(Sender: TObject; var Key: Char);
procedure TBDelClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
2025-09-30 17:22:54 +08:00
procedure tv1CarNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure TbSaveClick(Sender: TObject);
procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure TbEditSaveClick(Sender: TObject);
procedure tv1BegTimePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure Tv2GlideNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure Tv1c_colorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
2025-09-11 16:06:40 +08:00
private
procedure initGrid();
2025-09-30 17:22:54 +08:00
procedure initSubGrid();
function SaveData(): boolean;
function GetLastLine(const AText: string): string;
function CheckDate: Boolean;
2025-09-11 16:06:40 +08:00
public
fcurMachId: string;
2025-09-30 17:22:54 +08:00
fBegTime, fMCNO, fMCName, fText: string;
2025-09-11 16:06:40 +08:00
end;
var
frmMachTaskList: TfrmMachTaskList;
implementation
uses
2025-09-30 17:22:54 +08:00
U_dataLink, U_rtFun, U_globalVar, U_BS_MachineSel, U_DyeProcessDefin;
2025-09-11 16:06:40 +08:00
{$R *.dfm}
procedure TfrmMachTaskList.FormCreate(Sender: TObject);
begin
cxgrid1.Align := alClient;
end;
procedure TfrmMachTaskList.TBDelClick(Sender: TObject);
begin
2025-09-30 17:22:54 +08:00
if MessageDlg(<><C8B7>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', mtWarning, [mbOK, mbCancel], 0) = mrOK then
begin
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
ADOQueryCmd.Connection.BeginTrans;
try
// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE PCAboutTime SET ');
SQL.Add(fMCName + ' = null WHERE ');
SQL.Add(fMCName + ' = ' + QuotedStr(Trim(fText)));
// showMessage(sql.Text);
ExecSQL;
end;
// <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add(' update Dye_Plan_Glide set PC_FLAG = 0,endTime = null,begTime = null where GlideID = ' + QuotedStr(Trim(CDS_1.FieldByName('GlideID').asString)));
ExecSQL;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><E1BDBB><EFBFBD><EFBFBD>
ADOQueryCmd.Connection.CommitTrans;
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
Close;
except
on E: Exception do
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD>
ADOQueryCmd.Connection.RollbackTrans;
ShowMessage('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>' + E.Message);
end;
2025-09-11 16:06:40 +08:00
end;
end;
end;
2025-09-30 17:22:54 +08:00
//begin
// try
// with ADOQueryCmd do
// begin
// close;
// sql.Clear;
// sql.Add('exec p_delete_machTask');
// sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString)));
// sql.Add(',@user=' + quotedstr(gUserId));
// ExecSql;
// end;
// except
// application.MessageBox('ɾ<><C9BE><EFBFBD><EFBFBD>¼ʧ<C2BC><CAA7>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
// end;
// initSubGrid();
//end;
2025-09-11 16:06:40 +08:00
procedure TfrmMachTaskList.TcloseClick(Sender: TObject);
begin
close;
end;
procedure TfrmMachTaskList.TconfirmClick(Sender: TObject);
begin
WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '<27><>̨ɨ<CCA8><C9A8><EFBFBD>Ÿ<EFBFBD>');
2025-09-30 17:22:54 +08:00
WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, '<27><>̨ɨ<CCA8><C9A8><EFBFBD>Ÿ<EFBFBD>');
2025-09-11 16:06:40 +08:00
end;
procedure TfrmMachTaskList.ToolButton1Click(Sender: TObject);
var
FTaskID: string;
begin
if ADOQueryList.IsEmpty then
Exit;
FTaskID := ADOQueryList.FieldByName('taskid').AsString;
try
with ADOQueryCmd do
begin
close;
SQL.Clear;
sql.Add('exec P_UpDown_MD_Machine_Task ');
sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString)));
sql.Add(',@flag=0 ');
ExecSQL;
end;
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
2025-09-30 17:22:54 +08:00
initSubGrid();
2025-09-11 16:06:40 +08:00
ADOQueryList.Locate('taskid', FTaskID, []);
end;
procedure TfrmMachTaskList.ToolButton2Click(Sender: TObject);
var
FTaskID: string;
begin
if ADOQueryList.IsEmpty then
Exit;
FTaskID := ADOQueryList.FieldByName('taskid').AsString;
try
with ADOQueryCmd do
begin
close;
SQL.Clear;
sql.Add('exec P_UpDown_MD_Machine_Task ');
sql.Add('@ids=' + quotedstr(Trim(ADOQueryList.FieldByName('taskid').AsString)));
sql.Add(',@flag=1 ');
ExecSQL;
end;
except
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
2025-09-30 17:22:54 +08:00
initSubGrid();
2025-09-11 16:06:40 +08:00
ADOQueryList.Locate('taskid', FTaskID, []);
end;
2025-09-30 17:22:54 +08:00
procedure TfrmMachTaskList.TbEditSaveClick(Sender: TObject);
begin
if not CheckDate then
Exit;
if MessageDlg(<><C8B7><EFBFBD>޸ģ<DEB8><C4A3>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', mtWarning, [mbOK, mbCancel], 0) = mrOK then
begin
ADOQueryCmd.Connection.BeginTrans;
try
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE PCAboutTime SET ');
SQL.Add(fMCName + ' = null WHERE ');
SQL.Add(fMCName + ' = ' + QuotedStr(Trim(fText)));
ExecSQL;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
// <20><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1BDBB><EFBFBD><EFBFBD>
ADOQueryCmd.Connection.CommitTrans;
except
on E: Exception do
begin
ADOQueryCmd.Connection.RollbackTrans;
ShowMessage('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>' + E.Message);
Exit; // <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB3A3><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
end;
end;
if SaveData() then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
end;
close;
end;
end;
function TfrmMachTaskList.CheckDate: Boolean;
var
Hour, Min, Sec, MSec: Word;
begin
Result := False;
////////////////<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD><CEBB><EFBFBD>Ƿ<EFBFBD><C7B7>и<EFBFBD><D0B8><EFBFBD>
if (CDS_1.FieldByName('BegTime').AsString <> fBegTime) or (CDS_1.FieldByName('MCName').AsString <> fMCName) then
begin
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add(' select ' + CDS_1.FieldByName('MCName').AsString + ' from PCAboutTime where Time = ' + QuotedStr(Trim(CDS_1.FieldByName('BegTime').AsString)));
// ShowMessage(sql.Text);
open;
if (ADOQueryCmd.FieldByName(CDS_1.FieldByName('MCName').AsString).asString <> fText) and (ADOQueryCmd.FieldByName(CDS_1.FieldByName('MCName').AsString).asString <> null) and (ADOQueryCmd.FieldByName(CDS_1.FieldByName('MCName').AsString).asString <> '') then
begin
Application.MessageBox('Ŀ<><C4BF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end;
end;
end;
var i: Integer;
if (fText = '') or (fText = null) then
begin
end;
if CDS_1.FieldByName('time').Value = 0 then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B2BB>Ϊ0', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end;
// ShowMessage(CDS_1.FieldByName('Begtime').AsString);
DecodeTime(VarToDateTime(CDS_1.FieldByName('Begtime').Value), Hour, Min, Sec, MSec);
if Sec <> 0 then
begin
Application.MessageBox('<27><>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end
else if (Min mod 10) <> 0 then // <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>֤
begin
Application.MessageBox('<27><>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>Ϊ 10 <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end;
//////////////<2F>Ų<EFBFBD>˳<EFBFBD><CBB3>ʱ<EFBFBD><CAB1>////////
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add(' select * from Dye_Plan_Glide where PCID = ' + QuotedStr(Trim(CDS_1.FieldByName('PCID').AsString)));
SQL.Add(' and PC_FLAG = 1 and endTime > ' + quotedStr(Trim(CDS_1.FieldByName('Begtime').AsString)));
SQL.Add(' and GlideNo < ' + QuotedStr(Trim(CDS_1.FieldByName('GlideNo').AsString)));
// ShowMessage(sql.Text);
open;
if not IsEmpty then
begin
Application.MessageBox(<><CAB1><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
SQL.Add(' select * from Dye_Plan_Glide where PCID = ' + QuotedStr(Trim(CDS_1.FieldByName('PCID').AsString)));
SQL.Add(' and PC_FLAG = 1 and BegTime < DATEADD(MINUTE, ' + CDS_1.FieldByName('time').AsString + ', ' + QuotedStr(trim(CDS_1.FieldByName('BegTime').AsString)) + ')');
SQL.Add(' and GlideNo > ' + QuotedStr(Trim(CDS_1.FieldByName('GlideNo').AsString)));
// ShowMessage(sql.Text);
open;
if not IsEmpty then
begin
Application.MessageBox(<><CAB1><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
Exit;
end;
end;
Result := True;
end;
procedure TfrmMachTaskList.TbSaveClick(Sender: TObject);
begin
// if CDS_1.Locate('PSName', '', []) or CDS_1.Locate('PSName', null, []) then
// begin
// Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', MB_OK);
// Exit;
// end;
if not CheckDate then
Exit;
if SaveData() then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
end;
close;
end;
function TfrmMachTaskList.SaveData(): boolean;
var
mLoopNum: Integer;
mMCName, mNewValue, mStartTime: string;
begin
result := false;
ADOQueryCmd.Connection.BeginTrans;
try
mLoopNum := StrToInt(CDS_1.FieldByName('Time').AsString) div 10;
with CDS_1 do
begin
First;
while not Eof do
begin
if (CDS_1.FieldByName('MCNO').AsString <> '') and (CDS_1.FieldByName('BegTime').AsString <> '') then
begin
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add(' update Dye_Plan_Glide set PC_FLAG = 1 , EndTime = DATEADD(MINUTE, ' + CDS_1.FieldByName('time').AsString + ', ' + QuotedStr(trim(CDS_1.FieldByName('BegTime').AsString)) + ')');
SQL.Add(' , begTime = ' + QuotedStr(Trim(CDS_1.FieldByName('BegTime').AsString)));
SQL.Add(' where GlideID = ' + QuotedStr(Trim(CDS_1.FieldByName('GlideID').asString)));
// ShowMessage(sql.Text);
ExecSQL;
end;
mMCName := CDS_1.FieldByName('MCName').AsString;
mStartTime := CDS_1.FieldByName('BegTime').AsString;
// mNewValue := '<27>ƻ<EFBFBD><C6BB><EFBFBD>:' + CDS_1.FieldByName('OrderNo').AsString + #13;
2025-10-16 19:49:06 +08:00
mNewValue := mNewValue + CDS_1.FieldByName('C_Name').AsString + #13;
2025-09-30 17:22:54 +08:00
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD> <20>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('GlideName').AsString;
if CDS_1.FieldByName('PSType').AsString = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ' then
begin
mNewValue := mNewValue + '' + #13;
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('ccqx_speed').AsString + #13;
mNewValue := mNewValue + '<27><EFBFBD>6#:' + CDS_1.FieldByName('ccqx_temperature6').AsString + #13;
end
else if CDS_1.FieldByName('PSType').AsString = '<27>ɶ<EFBFBD><C9B6><EFBFBD>' then
begin
mNewValue := mNewValue + '' + #13;
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('dx_speed').AsString + #13;
mNewValue := mNewValue + '<27><EFBFBD>6#:' + CDS_1.FieldByName('dx_temperature6').AsString + #13;
end
else if CDS_1.FieldByName('PSType').AsString = '<27><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>' then
begin
mNewValue := mNewValue + '' + #13;
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('fs_speed').AsString + #13;
mNewValue := mNewValue + '<27><EFBFBD>6#:' + CDS_1.FieldByName('fs_temperature6').AsString + #13;
end
else if CDS_1.FieldByName('PSType').AsString = '<27>ν<EFBFBD>' then
begin
mNewValue := mNewValue + '' + CDS_1.FieldByName('gj_number').AsString + #13;
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('gj_speed').AsString + #13;
mNewValue := mNewValue + '<27><EFBFBD>6#:' + CDS_1.FieldByName('gj_temperature6').AsString + #13;
end
else if CDS_1.FieldByName('PSType').AsString = '<27><><EFBFBD><EFBFBD>' then
begin
mNewValue := mNewValue + ' ' + CDS_1.FieldByName('fp_gjNumber').AsString + #13;
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('fp_speed').AsString + #13;
mNewValue := mNewValue + '<27><EFBFBD>6#:' + CDS_1.FieldByName('fp_temperature6').AsString + #13;
end
else
begin
mNewValue := mNewValue + '' + #13;
end;
//////////////////////<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD>:' + CDS_1.FieldByName('All_zhuji').AsString + #13;
// with ADOQueryTmp do
// begin
// Close;
// sql.Clear;
// SQL.Add(' select * from BS_Cloth_GY_Sub where PSID = ' + QuotedStr(Trim(CDS_1.FieldByName('PSID').AsString)));
// Open;
//// ShowMessage(sql.Text);
// end;
//
// if not ADOQueryTmp.IsEmpty then
// begin
// ADOQueryTmp.First;
// mNewValue := mNewValue + '<27><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:';
// if CDS_1.FieldByName('PSType').AsString = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('ccqx_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('ccqx_Name').AsString + ' ' + ADOQueryTmp.FieldByName('ccqx_rate').AsString + ',';
// end;
//
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end
// else if CDS_1.FieldByName('PSType').AsString = '<27><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>ϴ' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('rgqx_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('rgqx_Name').AsString + ' ' + ADOQueryTmp.FieldByName('rgqx_rate').AsString + ',';
// end;
//
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end
// else if CDS_1.FieldByName('PSType').AsString = '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('jgqx_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('jgqx_Name').AsString + ' ' + ADOQueryTmp.FieldByName('jgqx_rate').AsString + ',';
// end;
//
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end
// else if CDS_1.FieldByName('PSType').AsString = '<27><>ˮ<EFBFBD><CBAE><EFBFBD><EFBFBD>' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('fs_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('fs_Name').AsString + ' ' + ADOQueryTmp.FieldByName('fs_rate').AsString + ',';
// end;
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end
// else if CDS_1.FieldByName('PSType').AsString = '<27>ν<EFBFBD>' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('gj_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('gj_Name').AsString + ' ' + ADOQueryTmp.FieldByName('gj_rate').AsString + ',';
// end;
//
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end
// else if CDS_1.FieldByName('PSType').AsString = '<27><><EFBFBD><EFBFBD>' then
// begin
// while not ADOQueryTmp.Eof do
// begin
// if ADOQueryTmp.FieldByName('fp_Name').AsString <> 'ˮ' then
// begin
// mNewValue := mNewValue + ADOQueryTmp.FieldByName('fp_Name').AsString + ' ' + ADOQueryTmp.FieldByName('fp_rate').AsString + ',';
// end;
//
// ADOQueryTmp.Next;
// end;
// mNewValue := mNewValue + #13;
// end;
// end;
mNewValue := mNewValue + CDS_1.FieldByName('PCID').AsString + #13;
mNewValue := mNewValue + CDS_1.FieldByName('GlideID').AsString;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
SQL.Add('EXEC P_PC_UpdatePCAboutTime ' + '@MCName = :MCName, ' + '@NewValue = :NewValue, ' + '@StartTime = :StartTime, ' + '@LoopNum = :LoopNum');
Parameters.ParamByName('MCName').Value := mMCName;
Parameters.ParamByName('NewValue').Value := mNewValue;
Parameters.ParamByName('StartTime').Value := mStartTime;
Parameters.ParamByName('LoopNum').Value := mLoopNum;
ExecSQL;
end;
// with ADOQueryCmd do
// begin
// Close;
// sql.Clear;
// sql.Add('select * from PCAboutTime where time >= ''' + Trim(CDS_1.FieldByName('BegTime').AsString) + '''');
// sql.Add(' Order By time');
// Open;
// end;
//
// var i: Integer;
//
// for i := 1 to mLoopNum do
// begin
// ADOQueryCmd.Edit;
// ADOQueryCmd.FieldByName(CDS_1.FieldByName('MCName').AsString).Value := CDS_1.FieldByName('OrderNo').AsString + #13#10 + CDS_1.FieldByName('C_Name').AsString + #13#10 + CDS_1.FieldByName('GlideName').AsString + #13#10 + CDS_1.FieldByName('GlideID').AsString;
//
// ADOQueryCmd.Post;
// ADOQueryCmd.Next;
// end;
end;
Next;
end;
end;
ADOQueryCmd.Connection.CommitTrans;
result := true;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
result := false;
end;
end;
2025-09-11 16:06:40 +08:00
procedure TfrmMachTaskList.TrefreshClick(Sender: TObject);
begin
2025-09-30 17:22:54 +08:00
initSubGrid();
end;
procedure TfrmMachTaskList.tv1BegTimePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
Begtime: TDateTime;
Hour, Min, Sec, MSec: Word;
begin
try
// ʹ<><CAB9> DisplayValue <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Sender.AsString
if VarIsNull(DisplayValue) or (DisplayValue = '') then
Exit;
Begtime := VarToDateTime(DisplayValue);
DecodeTime(Begtime, Hour, Min, Sec, MSec);
if Sec <> 0 then
begin
ErrorText := '<27><>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0<><30>';
Error := True; // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>־
end
else if (Min mod 10) <> 0 then // <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD>֤
begin
ErrorText := '<27><>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD>Ϊ 10 <20>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>' + IntToStr(Min);
Error := True;
end
else
begin
Error := False; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
end;
except
on E: Exception do
begin
ErrorText := <><CAB1><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' + E.Message;
Error := True;
end;
end;
end;
procedure TfrmMachTaskList.tv1CarNoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmBS_MachineSel := TfrmBS_MachineSel.Create(Application);
with frmBS_MachineSel do
begin
if ShowModal = 1 then
begin
Self.CDS_1.Edit;
Self.CDS_1.FieldByName('MCNO').Value := frmBS_MachineSel.Order_Main.FieldByName('MCNO').Value;
Self.CDS_1.FieldByName('MCName').Value := frmBS_MachineSel.Order_Main.FieldByName('MCName').Value;
Self.CDS_1.Post;
// ShowMessage(CDS_1.FieldByName('BegTime').AsString);
Self.initSubGrid();
end;
end;
finally
frmBS_MachineSel.Free;
end;
end;
procedure TfrmMachTaskList.Tv1c_colorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmDyeProcessDefin := TfrmDyeProcessDefin.Create(Application);
with frmDyeProcessDefin do
begin
FPSID := self.CDS_1.FieldByName('PSID').AsString;
FPSType := self.CDS_1.FieldByName('PSType').AsString;
BtnInt := 3;
if ShowModal = 1 then
begin
end;
end;
finally
frmDyeProcessDefin.Free;
end;
end;
procedure TfrmMachTaskList.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
var
glideIds: string;
begin
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCard do
begin
close;
sql.clear;
sql.Add(' select * from V_Dye_Cloth_PaiGang where GlideID = ' + quotedStr(Trim(CDS_2.FieldByName('GlideID').AsString)));
open;
end;
with CDS_1 do
begin
if CDS_1.RecordCount = 0 then
begin
append;
end
else
begin
Edit;
end;
FieldByName('GlideID').value := ADOQueryCard.FieldByName('GlideID').AsString;
FieldByName('GlideNo').value := ADOQueryCard.FieldByName('GlideNo').AsString;
FieldByName('OrderNo').value := ADOQueryCard.FieldByName('OrderNo').AsString;
FieldByName('pcid').value := ADOQueryCard.FieldByName('pcid').AsString;
FieldByName('C_name').value := ADOQueryCard.FieldByName('C_name').AsString;
FieldByName('GlideName').value := ADOQueryCard.FieldByName('GlideName').AsString;
FieldByName('PCPiece').value := ADOQueryCard.FieldByName('PCPiece').AsString;
FieldByName('PCQty').value := ADOQueryCard.FieldByName('PCQty').AsString;
FieldByName('time').value := ADOQueryCard.FieldByName('time').AsString;
FieldByName('PSType').value := ADOQueryCard.FieldByName('PSType').AsString;
FieldByName('PSID').value := ADOQueryCard.FieldByName('PSID').AsString;
FieldByName('ccqx_speed').value := ADOQueryCard.FieldByName('ccqx_speed').AsString;
FieldByName('ccqx_temperature6').value := ADOQueryCard.FieldByName('ccqx_temperature6').AsString;
FieldByName('dx_speed').value := ADOQueryCard.FieldByName('dx_speed').AsString;
FieldByName('dx_temperature6').value := ADOQueryCard.FieldByName('dx_temperature6').AsString;
FieldByName('fs_speed').value := ADOQueryCard.FieldByName('fs_speed').AsString;
FieldByName('fs_temperature6').value := ADOQueryCard.FieldByName('fs_temperature6').AsString;
FieldByName('gj_speed').value := ADOQueryCard.FieldByName('gj_speed').AsString;
FieldByName('gj_temperature6').value := ADOQueryCard.FieldByName('gj_temperature6').AsString;
FieldByName('fp_speed').value := ADOQueryCard.FieldByName('fp_speed').AsString;
FieldByName('fp_temperature6').value := ADOQueryCard.FieldByName('fp_temperature6').AsString;
FieldByName('All_zhuji').value := ADOQueryCard.FieldByName('All_zhuji').AsString;
FieldByName('MCNO').value := fMCNO;
FieldByName('BegTime').value := fBegTime;
FieldByName('MCName').value := fMCName;
Post;
end;
if ADOQueryCard.RecordCount = 0 then
begin
raise Exception.Create(<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>̿<EFBFBD><CCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD>δ<EFBFBD><CEB4><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>');
end;
ADOQueryCmd.Connection.CommitTrans;
except
if ADOQueryCmd.Connection.InTransaction then
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
// showMessage('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!');
end;
initSubGrid();
end;
procedure TfrmMachTaskList.Tv2GlideNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmDyeProcessDefin := TfrmDyeProcessDefin.Create(Application);
with frmDyeProcessDefin do
begin
FPSID := self.CDS_2.FieldByName('PSID').AsString;
FPSType := self.CDS_2.FieldByName('PSType').AsString;
BtnInt := 3;
if ShowModal = 1 then
begin
end;
end;
finally
frmDyeProcessDefin.Free;
end;
2025-09-11 16:06:40 +08:00
end;
////////////////////////////////////////////
///
2025-09-30 17:22:54 +08:00
function TfrmMachTaskList.GetLastLine(const AText: string): string;
var
StringList: TStringList;
begin
Result := '';
StringList := TStringList.Create;
try
StringList.Text := AText; // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>س<EFBFBD><D8B3>ָ<EFBFBD>
if StringList.Count > 0 then
Result := StringList[StringList.Count - 1]; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
finally
StringList.Free;
end;
end;
2025-09-11 16:06:40 +08:00
procedure TfrmMachTaskList.FormShow(Sender: TObject);
begin
ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '<27><>̨ɨ<CCA8><C9A8><EFBFBD>Ÿ<EFBFBD>');
2025-09-30 17:22:54 +08:00
ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '<27><>̨ɨ<CCA8><C9A8><EFBFBD>Ÿ<EFBFBD>');
initSubGrid();
2025-09-11 16:06:40 +08:00
initGrid();
2025-09-30 17:22:54 +08:00
// ShowMessage(GetLastLine(fText));
if CDS_1.RecordCount > 0 then
begin
TbSave.Visible := False;
cxGrid2.Visible := False;
end
else
begin
TbEditSave.Visible := false;
TbDel.Visible := False;
end;
2025-09-11 16:06:40 +08:00
end;
procedure TfrmMachTaskList.initGrid();
2025-09-30 17:22:54 +08:00
begin
try
ADOQueryList.DisableControls;
with ADOQueryTmp do
begin
Close;
SQL.Clear;
SQL.Add(' select * from BS_Machine where MCName = ' + QuotedStr(fMCName));
open;
end;
fMCNO := ADOQueryTmp.FieldByName('MCNO').AsString;
with ADOQueryList do
begin
close;
sql.Clear;
sql.Add('select * from V_Dye_Cloth_PaiGang where 1 = 2');
// sql.Add('where not exists (');
// sql.Add(' select 1 from PCAboutTime ');
// sql.Add(' where PCAboutTime.GlideID = V_Dye_Cloth_PaiGang.GlideID');
// sql.Add(')');
// ShowMessage(SQL.Text);
// a.taskDate,
open;
end;
SCreateCDS(ADOQueryList, CDS_1);
SInitCDSData(ADOQueryList, CDS_1);
if (fText = '') or (fText = null) then
begin
end
else
begin
TbEditSave.Visible := True;
with ADOQueryList do
begin
close;
sql.Clear;
sql.Add('select * from V_Dye_Cloth_PaiGang where GlideID = ' + QuotedStr(Trim(GetLastLine(fText))));
open;
end;
with CDS_1 do
begin
Append;
FieldByName('GlideID').value := trim(ADOQueryList.FieldByName('GlideID').AsString);
FieldByName('GlideNo').value := trim(ADOQueryList.FieldByName('GlideNo').AsString);
FieldByName('OrderNo').value := trim(ADOQueryList.FieldByName('OrderNo').AsString);
FieldByName('pcid').value := ADOQueryList.FieldByName('pcid').AsString;
FieldByName('C_name').value := ADOQueryList.FieldByName('C_name').AsString;
FieldByName('GlideName').value := ADOQueryList.FieldByName('GlideName').AsString;
FieldByName('PCPiece').value := ADOQueryList.FieldByName('PCPiece').Asfloat;
FieldByName('PCQty').value := ADOQueryList.FieldByName('PCQty').Asfloat;
FieldByName('time').value := ADOQueryList.FieldByName('time').AsString;
FieldByName('PSType').value := ADOQueryList.FieldByName('PSType').AsString;
FieldByName('PSID').value := ADOQueryList.FieldByName('PSID').AsString;
FieldByName('MCNO').value := fMCNO;
FieldByName('BegTime').value := fBegTime;
FieldByName('MCName').value := fMCName;
Post;
end;
end;
finally
ADOQueryList.EnableControls;
// tv1.ApplyBestFit();
end;
end;
procedure TfrmMachTaskList.initSubGrid();
2025-09-11 16:06:40 +08:00
begin
try
ADOQueryList.DisableControls;
with ADOQueryList do
begin
close;
sql.Clear;
2025-09-30 17:22:54 +08:00
sql.Add('select * from V_Dye_Cloth_PaiGang ');
sql.Add('where PC_Flag = 0 order by PCID ASC, GlideNo ASC');
2025-09-11 16:06:40 +08:00
// ShowMessage(SQL.Text);
// a.taskDate,
open;
end;
2025-09-30 17:22:54 +08:00
SCreateCDS(ADOQueryList, CDS_2);
SInitCDSData(ADOQueryList, CDS_2);
// ShowMessage(CDS_2.FieldByName('PSID').AsString);
2025-09-11 16:06:40 +08:00
finally
ADOQueryList.EnableControls;
2025-09-30 17:22:54 +08:00
// tv1.ApplyBestFit();
2025-09-11 16:06:40 +08:00
end;
end;
procedure TfrmMachTaskList.pcidKeyPress(Sender: TObject; var Key: Char);
var
glideIds: string;
begin
if Key = #13 then
begin
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCard do
begin
close;
sql.clear;
2025-09-30 17:22:54 +08:00
// sql.add(' select top 1 A.OrderNo,A.workShop,A.PSC_StkPiece,A.PSC_StkQty,B.GlideId,B.GlideNo,B.GlideName ');
// sql.add(' from Dye_Plan_Card A ');
// sql.add(' left join Dye_Plan_Glide B on A.pcid=B.pcid ');
// sql.add(' where A.pcid= ' + QuotedStr(Trim(pcid.Text)));
//// sql.add(' and B.Completeness < 100 ');
// sql.add(' and not exists(select * from Dye_Plan_Glide_output e where e.glideno=b.glideno and e.pcid=a.pcid)');
// sql.add(' order by B.GlideNo ');
sql.Add(' select * from V_Dye_Cloth_PaiGang where PCID = ' + quotedStr(Trim(PCID.Text)));
2025-09-11 16:06:40 +08:00
open;
end;
2025-09-30 17:22:54 +08:00
SCreateCDS(ADOQueryCard, CDS_1);
SInitCDSData(ADOQueryCard, CDS_1);
2025-09-11 16:06:40 +08:00
if ADOQueryCard.RecordCount = 0 then
begin
raise Exception.Create(<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>̿<EFBFBD><CCBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD>δ<EFBFBD><CEB4><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>');
end;
2025-09-30 17:22:54 +08:00
// with ADOQueryMach do
// begin
// close;
// sql.clear;
// sql.add(' select A.* from Bs_Machine A ');
// sql.add(' where A.mcid= ' + QuotedStr(Trim(fcurMachId)));
// open;
// end;
//
// if ADOQueryMach.RecordCount = 0 then
// begin
// raise Exception.Create('δ<>ҵ<EFBFBD><D2B5><EFBFBD>̨<EFBFBD><CCA8>');
// end;
//
// with ADOQueryCmd do
// begin
// close;
// sql.clear;
// sql.add('select * from MD_Machine_Task ');
// sql.add('where 1=2');
// open;
// append;
//
// fieldByName('mcId').value := Trim(fcurMachId);
// fieldByName('mcNo').value := Trim(ADOQueryMach.FieldByName('mcno').AsString);
// fieldByName('taskDate').value := SGetServerDate(ADOQueryTmp);
// fieldByName('orderNo').value := trim(ADOQueryCard.FieldByName('orderNo').AsString);
// fieldByName('pcId').value := Trim(pcid.Text);
// fieldByName('status').value := '0';
// fieldByName('glideGroup').value := '';
// fieldByName('machGroupNo').value := '';
// fieldByName('workShop').value := trim(ADOQueryCard.FieldByName('workShop').AsString);
// fieldByName('taskRollNum').value := ADOQueryCard.FieldByName('PSC_StkPiece').AsFloat;
// fieldByName('taskQty').value := ADOQueryCard.FieldByName('PSC_StkQty').AsFloat;
//
// fieldByName('taskType').value := '<27>ֶ<EFBFBD>';
// fieldByName('curGlideName').value := trim(ADOQueryCard.FieldByName('glideName').AsString);
// fieldByName('curGlide').value := trim(ADOQueryCard.FieldByName('glideName').AsString);
// fieldByName('GlideId').value := trim(ADOQueryCard.FieldByName('GlideId').AsString);
// fieldByName('deleted').value := 0;
// fieldByName('filler').value := gUserName;
// post;
// end;
// with ADOQueryCmd do
// begin
// close;
// sql.Clear;
// sql.Add('update MD_Machine_Task set order_idx=isnull((select floor(max(order_idx)) from MD_Machine_Task X where X.mcNo=MD_Machine_Task.mcNo),0)+1');
// sql.Add('where order_idx is null');
// ExecSql;
// end;
//
// with ADOQueryCmd do
// begin
// close;
// sql.Clear;
// sql.Add('update dye_plan_glide set pc_flag=1');
// sql.Add('where glideId =' + quotedstr(trim(ADOQueryCard.FieldByName('GlideId').AsString)));
// ExecSql;
// end;
2025-09-11 16:06:40 +08:00
ADOQueryCmd.Connection.CommitTrans;
except
if ADOQueryCmd.Connection.InTransaction then
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
// showMessage('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!');
end;
2025-09-30 17:22:54 +08:00
initSubGrid();
2025-09-11 16:06:40 +08:00
end;
end;
end.