D10sxYilanbuyi/F02染色计划单/U_DyeTechnicsinput.pas
2025-08-12 13:42:42 +08:00

630 lines
16 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_DyeTechnicsinput;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit,
cxTextEdit, cxPC, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
dxBarBuiltInMenu, Menus, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters,
U_BaseInput, dxDateRanges, dxScrollbarAnnotations, System.ImageList,
Vcl.ImgList;
type
TfrmDyeTechnicsinput = class(TfrmBaseinput)
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
GPM_2: TcxGridPopupMenu;
DS_2: TDataSource;
CDS_2: TClientDataSet;
DS_1: TDataSource;
CDS_1: TClientDataSet;
ADOQuery1: TADOQuery;
GPM_1: TcxGridPopupMenu;
PM_1: TPopupMenu;
N2: TMenuItem;
cxSplitter1: TcxSplitter;
Panel2: TPanel;
cxGrid2: TcxGrid;
Tv2: TcxGridDBTableView;
Tv2PSType: TcxGridDBColumn;
Tv2PSNote: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
Panel1: TPanel;
Panel3: TPanel;
cxGrid1: TcxGrid;
TV1: TcxGridDBTableView;
VC_PSNO: TcxGridDBColumn;
cxGridDBColumn1: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
Label5: TLabel;
PSName: TEdit;
ToolButton2: TToolButton;
btnSave: TToolButton;
Panel4: TPanel;
Label2: TLabel;
Label3: TLabel;
DTMName: TEdit;
DTMNo: TEdit;
TV1PSName: TcxGridDBColumn;
Tv3: TcxGridDBTableView;
cxGrid3Level1: TcxGridLevel;
cxGrid3: TcxGrid;
TbDelete: TToolButton;
Tv3PSID: TcxGridDBColumn;
Tv3Column2: TcxGridDBColumn;
CDS_3: TClientDataSet;
DS_3: TDataSource;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure v2Column4PropertiesEditValueChanged(Sender: TObject);
procedure v2Column2PropertiesEditValueChanged(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
procedure ToolButton2Click(Sender: TObject);
procedure Tv2DblClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
procedure TbDeleteClick(Sender: TObject);
procedure Tv3DblClick(Sender: TObject);
procedure PSNameKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure InitGrid();
procedure InitGlide();
procedure SetXH();
function SaveData(): boolean;
procedure CheckData();
procedure InitGridSub();
public
FDTMID, PState: string;
{ Public declarations }
RKFlag, FCYID, fmanage: string;
end;
var
frmDyeTechnicsinput: TfrmDyeTechnicsinput;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_DyeProcessSel, U_DyeProcessDefin;
{$R *.dfm}
procedure TfrmDyeTechnicsinput.SetXH();
var
i: Integer;
begin
with CDS_1 do
begin
First;
i := 1;
while not Eof do
begin
with CDS_1 do
begin
Edit;
FieldByName('XHNoTemp').Value := i;
Post;
end;
i := i + 1;
Next;
end;
end;
with CDS_1 do
begin
CDS_1.IndexFieldNames := '';
First;
i := 1;
while not Eof do
begin
with CDS_1 do
begin
Edit;
FieldByName('PSNO').Value := FieldByName('XHNoTemp').AsInteger;
Post;
end;
i := i + 1;
Next;
end;
CDS_1.IndexFieldNames := 'PSNO';
end;
end;
procedure TfrmDyeTechnicsinput.InitGlide();
begin
with ADOQueryTemp do
begin
Close;
SQL.Clear;
sql.Add(' select * FROM Dye_Technics_Main where DTMID=' + quotedstr(FDTMID));
Open;
end;
SCSHData(ADOQueryTemp, Panel4, 2);
with ADOQueryTemp do
begin
Close;
SQL.Clear;
sql.Add(' select A.*,B.* FROM Dye_Technics_Sub A inner join Dye_Process B on A.PSId=B.PSId ');
sql.Add(' Where A.DTMID=''' + FDTMID + '''');
SQL.Add(' ORDER BY A.PSNO');
Open;
end;
SCreateCDS(ADOQueryTemp, CDS_1);
SInitCDSData(ADOQueryTemp, CDS_1);
CheckData();
end;
procedure TfrmDyeTechnicsinput.CheckData();
begin
if PState = '<27><><EFBFBD><EFBFBD>' then
begin
CDS_1.First;
while not CDS_1.Eof do
begin
CDS_1.Edit;
CDS_1.FieldByName('PSName').Value := '';
CDS_1.Post;
CDS_1.Next;
end;
FDTMID := '';
end;
end;
function TfrmDyeTechnicsinput.SaveData(): boolean;
var
DTMPSlist, maxno: string;
begin
result := false;
ADOQueryCmd.Connection.BeginTrans;
try
if Trim(FDTMID) = '' then
begin
if GetLSNo(ADOQueryCmd, maxno, 'GY', 'Dye_Technics_Main', 3, 1) = False then
raise Exception.Create(<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>');
end
else
begin
maxno := FDTMID;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete Dye_Technics_Sub where DTMID=' + quotedstr(trim(maxno)));
execsql;
end;
DTMPSlist := '';
with CDS_1 do
begin
First;
while not Eof do
begin
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('SELECT * FROM Dye_Technics_Sub WHERE 1=2');
Open;
end;
with ADOQueryCmd do
begin
Append;
FieldByName('PSNO').Value := Trim(CDS_1.fieldbyname('PSNO').AsString);
FieldByName('DTMID').Value := Trim(maxno);
FieldByName('PSId').Value := Trim(CDS_1.fieldbyname('PSId').AsString);
Post;
end;
if DTMPSlist = '' then
begin
DTMPSlist := Trim(CDS_1.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_1.fieldbyname('PSName').AsString);
end
else
begin
DTMPSlist := DTMPSlist + '<27><>' + Trim(CDS_1.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_1.fieldbyname('PSName').AsString);
end;
Next;
end;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Dye_Technics_Main where DTMID =' + quotedstr(Trim(maxno)));
Open;
end;
with ADOQueryCmd do
begin
if ADOQueryCmd.IsEmpty then
begin
Append;
FieldByName('Filler').Value := Trim(DName);
FieldByName('DTMID').Value := Trim(maxno);
end
else
begin
Edit;
FieldByName('Editer').Value := Trim(DName);
FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp);
end;
RTSetsavedata(ADOQueryCmd, 'Dye_Technics_Main', Panel4, 2);
FieldByName('DTMPSlist').Value := Trim(DTMPSlist);
Post;
end;
ADOQueryCmd.Connection.CommitTrans;
result := true;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
result := false;
end;
end;
procedure TfrmDyeTechnicsinput.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
// Filtered := False;
Close;
SQL.Clear;
sql.Add(' select *,PSXH=0 from Dye_Technics ');
Open;
end;
// SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_2);
SInitCDSData(ADOQueryMain, CDS_2);
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmDyeTechnicsinput.InitGridSub();
begin
if CDS_2.IsEmpty then
Exit;
try
ADOQueryTemp.DisableControls;
with ADOQueryTemp do
begin
Close;
SQL.Clear;
sql.Add(' select * from Dye_Process where PSType = ' + QuotedStr(Trim(CDS_2.FieldByName('PSType').ASSTRING)));
Open;
end;
SDofilter(ADOQueryTemp, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryTemp, CDS_3);
SInitCDSData(ADOQueryTemp, CDS_3);
finally
ADOQueryTemp.EnableControls;
end;
end;
procedure TfrmDyeTechnicsinput.FormDestroy(Sender: TObject);
begin
inherited;
frmDyeTechnicsinput := nil;
end;
procedure TfrmDyeTechnicsinput.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmDyeTechnicsinput.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmDyeTechnicsinput.FormShow(Sender: TObject);
begin
inherited;
ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '<27><><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>');
ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '<27><><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>');
InitGrid();
InitGlide();
InitGridSub();
end;
procedure TfrmDyeTechnicsinput.TBRafreshClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmDyeTechnicsinput.TbDeleteClick(Sender: TObject);
begin
if CDS_1.IsEmpty then
Exit;
if Trim(CDS_1.fieldbyname('PSId').AsString) <> '' then
begin
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('delete Dye_Process where PSId=''' + Trim(CDS_1.fieldbyname('PSId').AsString) + '''');
ExecSQL;
end;
end;
CDS_1.Delete;
SetXH();
end;
procedure TfrmDyeTechnicsinput.ToolButton2Click(Sender: TObject);
begin
ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '<27><><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>');
ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '<27><><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>');
end;
procedure TfrmDyeTechnicsinput.cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
try
frmDyeProcessDefin := TfrmDyeProcessDefin.Create(Application);
with frmDyeProcessDefin do
begin
FPSType := self.CDS_1.FieldByName('PSType').Value;
if (PState = '<27><><EFBFBD><EFBFBD>') and (Self.CDS_1.FieldByName('PSID').Value = '') then
begin
FPSID := '';
BtnInt := 0;////<2F><><EFBFBD><EFBFBD>
end
else if PState = '<27>޸<EFBFBD>' then
begin
FPSID := Self.CDS_1.FieldByName('PSID').Value;
BtnInt := 1;///<2F>޸<EFBFBD>
end
else if (PState = '<27><><EFBFBD><EFBFBD>') then
begin
FPSID := Self.CDS_1.FieldByName('PSID').Value;
BtnInt := 2;///<2F><><EFBFBD><EFBFBD>
end
else
begin
FPSID := Self.CDS_1.FieldByName('PSID').Value;
BtnInt := 0;//<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
end;
if ShowModal = 1 then
begin
TBRafresh.Click;
with self.CDS_1 do
begin
Edit;
FieldByName('PSID').Value := frmDyeProcessDefin.FPSID;
FieldByName('PSName').Value := frmDyeProcessDefin.PSName.Text;
Post;
end;
end;
end;
finally
frmDyeProcessDefin.Free;
end;
end;
procedure TfrmDyeTechnicsinput.cxTabControl1Change(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmDyeTechnicsinput.v2Column4PropertiesEditValueChanged(Sender: TObject);
var
mvalue: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
mvalue := '';
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Dye_Technics_Main where DTMNo =' + quotedstr(Trim(mvalue)));
Open;
end;
if ADOQueryCmd.IsEmpty = false then
begin
application.MessageBox('<27>Ѵ<EFBFBD><D1B4>ڹ<EFBFBD><DAB9>ձ<EFBFBD><D5B1><EFBFBD>', '<27><>ʾ');
CDS_2.Edit;
CDS_2.FieldByName('DTMNo').AsString := '';
exit;
end;
with CDS_2 do
begin
Edit;
FieldByName('DTMNo').Value := Trim(mvalue);
//Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('update Dye_Technics_Main set DTMNo=''' + trim(mvalue) + ''' ');
sql.Add(',Editer=''' + trim(DName) + '''');
sql.Add(',Edittime=getdate()');
sql.add(' where DTMID=''' + trim(CDS_2.fieldbyname('DTMID').AsString) + '''');
ExecSQL;
end;
end;
procedure TfrmDyeTechnicsinput.btnSaveClick(Sender: TObject);
begin
if trim(DTMNo.Text) = '' then
begin
application.MessageBox('<27><><EFBFBD>ձ<EFBFBD><D5B1>Ų<EFBFBD><C5B2><EFBFBD>Ϊ<EFBFBD><CEAA>', '<27><>ʾ');
Exit;
end;
if trim(DTMName.Text) = '' then
begin
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD><CEAA>', '<27><>ʾ');
Exit;
end;
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;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Dye_Technics_Main where DTMNo=''' + Trim(DTMNo.Text) + '''');
sql.Add(' and DTMID <> ''' + Trim(FDTMID) + '''');
Open;
end;
if ADOQueryCmd.RecordCount > 0 then
raise Exception.Create('<27><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD>ظ<EFBFBD>!');
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Dye_Technics_Main where DTMName=''' + Trim(DTMName.Text) + '''');
sql.Add(' and DTMID <> ''' + Trim(FDTMID) + '''');
Open;
end;
if ADOQueryCmd.RecordCount > 0 then
raise Exception.Create('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>!');
if SaveData() then
begin
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ', 0);
end;
end;
procedure TfrmDyeTechnicsinput.v2Column2PropertiesEditValueChanged(Sender: TObject);
var
mvalue: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
if Trim(mvalue) = '' then
mvalue := '';
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Dye_Technics_Main where DTMName =' + quotedstr(Trim(mvalue)));
Open;
end;
if ADOQueryCmd.IsEmpty = false then
begin
application.MessageBox('<27>Ѵ<EFBFBD><D1B4>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ');
CDS_2.Edit;
CDS_2.FieldByName('DTMName').AsString := '';
exit;
end;
with CDS_2 do
begin
Edit;
FieldByName('DTMName').Value := Trim(mvalue);
//Post;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('update Dye_Technics_Main set DTMName=''' + trim(mvalue) + ''' ');
sql.Add(',Editer=''' + trim(DName) + '''');
sql.Add(',Edittime=getdate()');
sql.add(' where DTMID=''' + trim(CDS_2.fieldbyname('DTMID').AsString) + '''');
ExecSQL;
end;
end;
procedure TfrmDyeTechnicsinput.Tv2DblClick(Sender: TObject);
begin
with CDS_1 do
begin
Append;
FieldByName('PSNO').Value := CDS_1.RecordCount + 1;
FieldByName('PSType').Value := CDS_2.fieldbyname('PSType').AsString;
FieldByName('PSId').Value := '';
post;
end;
end;
procedure TfrmDyeTechnicsinput.Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
InitGridSub();
end;
procedure TfrmDyeTechnicsinput.Tv3DblClick(Sender: TObject);
begin
with CDS_1 do
begin
Append;
FieldByName('PSNO').Value := CDS_1.RecordCount + 1;
FieldByName('PSType').Value := CDS_2.fieldbyname('PSType').AsString;
FieldByName('PSId').Value := CDS_3.fieldbyname('PSID').AsString;
post;
end;
end;
procedure TfrmDyeTechnicsinput.FormCreate(Sender: TObject);
begin
inherited;
fmanage := Trim(DParameters1);
end;
procedure TfrmDyeTechnicsinput.N2Click(Sender: TObject);
var
i: Integer;
DTMPSlist: string;
begin
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
CDS_1.Delete;
SetXH();
end;
procedure TfrmDyeTechnicsinput.PSNameKeyPress(Sender: TObject; var Key: Char);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryTemp, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryTemp, CDS_3);
SInitCDSData(ADOQueryTemp, CDS_3);
end;
end;
end.