D10myBiaoqi/A02基础产品管理/U_PatternSel.pas
2024-07-04 16:01:24 +08:00

666 lines
18 KiB
ObjectPascal

unit U_PatternSel;
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, jpeg, U_SLT, ComObj, Menus,
cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator,
dxBarBuiltInMenu, cxPC, Math, RM_BarCode, dxSkinsCore, dxSkinsDefaultPainters,
dxDateRanges, IdExplicitTLSClientServerBase, U_BaseHelp, cxContainer,
dxDBBarCode, dxBarCode, Vcl.Clipbrd, cxTextEdit, BtnEdit, StrUtils, U_BaseList,
System.ImageList, Vcl.ImgList;
type
FdDy = record
inc: integer; //客户端套接字句柄
FDdys: string[32]; //客户端套接字
FdDysName: string[32]; //客户端套接字
end;
TfrmPatternSel = class(TfrmBasehelp)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBClose: TToolButton;
ADOQueryTemp: TADOQuery;
ADOQueryCmd: TADOQuery;
GPM_1: TcxGridPopupMenu;
Tv1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
Panel1: TPanel;
TBFilter: TToolButton;
v1CYNo: TcxGridDBColumn;
DS_1: TDataSource;
ADOQueryMain: TADOQuery;
CDS_1: TClientDataSet;
RM1: TRMGridReport;
RMDB_Main: TRMDBDataSet;
ODPat: TOpenDialog;
IdFTP1: TIdFTP;
SaveDialog1: TSaveDialog;
Label3: TLabel;
C_Code: TEdit;
Panel2: TPanel;
DSCYNO: TDataSource;
CDS_CYNO: TClientDataSet;
Label11: TLabel;
Label12: TLabel;
Panel3: TPanel;
adoqueryPicture: TADOQuery;
v1Column9: TcxGridDBColumn;
Label4: TLabel;
C_Name: TEdit;
OpenDialog1: TOpenDialog;
PM_1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
v1Column11: TcxGridDBColumn;
Panel7: TPanel;
Panel4: TPanel;
Label14: TLabel;
LBCPAP1: TLabel;
Button1: TButton;
Button2: TButton;
TCBNOR1: TComboBox;
RMBarCodeObject1: TRMBarCodeObject;
Tv1Column5: TcxGridDBColumn;
Tv1Column6: TcxGridDBColumn;
Tv1Column7: TcxGridDBColumn;
DataSource3: TDataSource;
CDS_Sub: TClientDataSet;
Tv1Column9: TcxGridDBColumn;
cxGridPopupMenu2: TcxGridPopupMenu;
N3: TMenuItem;
Panel9: TPanel;
Panel10: TPanel;
GroupBox1: TGroupBox;
ScrollBox1: TScrollBox;
ADOQueryPrint: TADOQuery;
CDS_Label: TClientDataSet;
Tv1Column1: TcxGridDBColumn;
cxGrid2: TcxGrid;
TV2: TcxGridDBTableView;
cxGridDBColumn2: TcxGridDBColumn;
cxGridLevel1: TcxGridLevel;
DS_2: TDataSource;
CDS_2: TClientDataSet;
ADOQueryHZ: TADOQuery;
Tv1Column2: TcxGridDBColumn;
cxGrid3: TcxGrid;
TV3: TcxGridDBTableView;
cxGridDBColumn1: TcxGridDBColumn;
cxGridLevel2: TcxGridLevel;
CDS_3: TClientDataSet;
DS_3: TDataSource;
ADOQuery1: TADOQuery;
Tv1Column3: TcxGridDBColumn;
Tv1Column4: TcxGridDBColumn;
Tv1Column8: TcxGridDBColumn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TBCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure cxDBTreeList1DblClick(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure TBFilterClick(Sender: TObject);
procedure CYNoChange(Sender: TObject);
procedure C_CodeKeyPress(Sender: TObject; var Key: Char);
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure TCBNOR1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
procedure N3Click(Sender: TObject);
procedure TextEdit(Sender: TObject);
procedure HXNameBtnUpClick(Sender: TObject);
procedure HXNameBtnDnClick(Sender: TObject);
procedure cbbHXChange(Sender: TObject);
procedure v1CYNoPropertiesEditValueChanged(Sender: TObject);
procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
private
{ Private declarations }
CurrentPage, RecordsNumber: Integer;
CTID: string;
PState: Integer;
FCTID, FTopID, FJurisdiction, FCTType: string;
procedure SetStatus();
procedure InitGrid();
procedure InitHZ();
procedure InitGY();
procedure ReadINIFile();
procedure InitImage();
function SaveData(): Boolean;
procedure LookImage(FileName: string);
public
Ftype, ftype2: string;
dFdDy: array[0..20] of FdDy; //客户端连接数组
{ Public declarations }
end;
var
frmPatternSel: TfrmPatternSel;
Mach: array of TfrmSlt;
implementation
uses
U_DataLink, U_RTFun, U_ClothInfoInput, U_CloInfoFileUp, U_ClothTypeSel,
U_ZDYHelp, U_LabelPrint;
{$R *.dfm}
procedure TfrmPatternSel.LookImage(FileName: string);
var
sFieldName: string;
begin
sFieldName := leftbstr(ExtractFilePath(Application.ExeName), 1) + ':\图片查看';
if not DirectoryExists(pchar(sFieldName)) then
CreateDirectory(pchar(sFieldName), nil);
sFieldName := sFieldName + '\' + trim(FileName);
try
IdFTP1.Host := ReadINIFileStr('SYSTEMSET.INI', 'SERVER', '服务器地址', '127.0.0.1');
IdFTP1.Username := 'three';
IdFTP1.Password := '641010';
IdFTP1.Connect();
except
end;
if IdFTP1.Connected then
begin
application.ProcessMessages;
try
// ShowMessage(PChar(Trim('D:\' + Trim(FileName))));
IdFTP1.Get(Trim(UserDataFlag + 'YP\' + FileName), sFieldName, true, false);
except
Application.MessageBox('客户图样文件不存在', '提示', MB_ICONWARNING);
IdFTP1.Quit;
Exit;
end;
end
else
begin
Application.MessageBox('无法连接文件服务器', '提示', MB_ICONWARNING);
IdFTP1.Quit;
Exit;
end;
if IdFTP1.Connected then
IdFTP1.Quit;
ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL);
end;
procedure TfrmPatternSel.SetStatus();
begin
end;
procedure TfrmPatternSel.InitGrid();
var
fwhere, MBCIID, Pwhere: string;
begin
Panel2.Visible := True;
Panel2.Refresh;
if not CDS_1.IsEmpty then
MBCIID := Trim(CDS_1.FieldByName('BCIID').AsString)
else
MBCIID := '';
Pwhere := SGetFilters(Panel1, 1, 2);
if trim(Pwhere) <> '' then
begin
if fwhere <> '' then
fwhere := fwhere + ' and ' + trim(Pwhere)
else
fwhere := ' where ' + trim(Pwhere);
end;
// if CDS_3.IsEmpty = False then
// begin
if fwhere <> '' then
fwhere := fwhere + ' and C_Technology=' + QuotedStr(trim(cds_2.FieldByName('C_Technology').AsString)) + ' and C_Technologytype=' + QuotedStr(trim(cds_3.FieldByName('C_Technology').AsString))
else
fwhere := ' where C_Technology=' + QuotedStr(trim(cds_2.FieldByName('C_Technology').AsString)) + ' and C_Technologytype=' + QuotedStr(trim(cds_3.FieldByName('C_Technology').AsString));
// end;
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Close;
Filtered := False;
sql.Clear;
sql.Add(' exec P_BS_PatInfo_Get ');
sql.Add(' @CTID='''' ');
sql.Add(',@pageIndex=' + inttostr(CurrentPage));
sql.Add(',@pageSize=' + inttostr(RecordsNumber));
sql.Add(',@criteria= ' + quotedstr(fwhere));
// ShowMessage(sql.Text);
Open;
end;
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_1);
SInitCDSData(ADOQueryMain, CDS_1);
TV1.DataController.Filter.Clear;
LBCPAP1.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber));
finally
ADOQueryMain.EnableControls;
TV1.DataController.Filter.Clear;
end;
Panel2.Visible := False;
if MBCIID <> '' then
CDS_1.Locate('BCIID', MBCIID, []);
end;
procedure TfrmPatternSel.FormClose(Sender: TObject; var Action: TCloseAction);
var
i, j: integer;
begin
inherited;
j := length(Mach);
if j > 0 then
begin
for i := 0 to j - 1 do
begin
Mach[i].free;
end;
end;
SetLength(Mach, 0);
Action := cahide;
end;
procedure TfrmPatternSel.TBCloseClick(Sender: TObject);
begin
if DirectoryExists(ExtractFileDir('D:\Right1209')) then
winexec('cmd /c rd /s /q D:\Right1209', sw_hide);
Close;
end;
procedure TfrmPatternSel.FormShow(Sender: TObject);
begin
inherited;
// ReadCxGrid(self.Caption + 'TV1', Tv1, '样品管理');
// pnlreport.Top := FTop + 110;
application.ProcessMessages;
RecordsNumber := 500;
CurrentPage := 1;
SetStatus();
InitHZ();
InitGY();
InitGrid();
end;
procedure TfrmPatternSel.cbbHXChange(Sender: TObject);
begin
InitImage();
end;
procedure TfrmPatternSel.cxDBTreeList1DblClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmPatternSel.TBRafreshClick(Sender: TObject);
begin
initHZ();
InitGY();
InitGrid();
end;
procedure TfrmPatternSel.InitGY();
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add(' select A.*,itemtext as C_Technology from SY_Dict_Item A where A.DictId=''' + cds_2.FieldByName('DictId').AsString + '''');
sql.Add('and itemtext=''' + trim(ftype2) + ''' ');
Open;
end;
SCreateCDS(ADOQuery1, CDS_3);
SInitCDSData(ADOQuery1, CDS_3);
end;
procedure TfrmPatternSel.InitHZ();
begin
with ADOQueryHZ do
begin
Close;
sql.Clear;
sql.Add(' select A.*,DictName as C_Technology from Sy_Dict A where A.Type=''GYName''');
sql.Add('and DictName=''' + trim(fTYPE) + ''' ');
// sql.Add(' select distinct C_Technology from Bs_Pattern_Info ');
// sql.Add('where C_Technology=''' + trim(fTYPE) + ''' ');
// ShowMessage(sql.Text);
Open;
end;
SCreateCDS(ADOQueryHZ, CDS_2);
SInitCDSData(ADOQueryHZ, CDS_2);
end;
procedure TfrmPatternSel.TBFilterClick(Sender: TObject);
begin
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_1);
SInitCDSData(ADOQueryMain, CDS_1);
end;
end;
procedure TfrmPatternSel.CYNoChange(Sender: TObject);
begin
//if Length(Trim(TEdit(Sender).Text))<4 then Exit;
if ADOQueryMain.Active then
begin
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, CDS_1);
SInitCDSData(ADOQueryMain, CDS_1);
end;
end;
procedure TfrmPatternSel.ReadINIFile();
var
programIni: Tinifile; //配置文件名
FileName: string;
begin
FileName := ExtractFilePath(Paramstr(0)) + 'SYSTEMSET.INI';
programIni := Tinifile.create(FileName);
server := programIni.ReadString('SERVER', '服务器地址', '127.0.0.1');
programIni.Free;
end;
procedure TfrmPatternSel.InitImage();
var
i, j: integer;
jpg: TJpegImage;
myStream: TADOBlobStream;
begin
j := length(Mach);
if j > 0 then
begin
for i := 0 to j - 1 do
begin
Mach[i].free;
end;
end;
SetLength(Mach, 0);
if CDS_1.IsEmpty then
exit;
try
with adoqueryPicture do
begin
close;
sql.Clear;
sql.Add(' select A.TFID,A.WBID,A.FilesOther,A.FileName from TP_File A ');
sql.add('where A.WBID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString)));
open;
end;
j := adoqueryPicture.RecordCount;
if j < 1 then
exit;
adoqueryPicture.DisableControls;
adoqueryPicture.First;
SetLength(Mach, j);
jpg := TJpegImage.Create();
for i := 0 to j - 1 do
begin
if triM(adoqueryPicture.fieldbyname('FilesOther').AsString) <> '' then
begin
myStream := tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')), bmread);
jpg.LoadFromStream(myStream);
Mach[i] := TfrmSlt.Create(Self);
Mach[i].Name := trim(adoqueryPicture.fieldbyname('TFID').AsString);
Mach[i].Parent := ScrollBox1;
Mach[i].Left := 0 + i * 165;
Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString, adoqueryPicture.fieldbyname('FileName').AsString, jpg);
end;
adoqueryPicture.Next;
end;
adoqueryPicture.EnableControls;
finally
jpg.free;
application.ProcessMessages;
end;
end;
procedure TfrmPatternSel.C_CodeKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
CurrentPage := 1;
InitGrid();
end;
end;
function TfrmPatternSel.SaveData(): Boolean;
var
maxId, CRID: string;
begin
try
ADOQueryCmd.Connection.BeginTrans;
if CDS_1.FieldByName('BCIID').AsString = '' then
begin
if GetLSNo(ADOQueryCmd, maxId, 'BPI', 'Bs_Pattern_Info', 4, 1) = False then
begin
Result := False;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('取最大号失败!', '提示', 0);
Exit;
end;
end
else
begin
maxId := CDS_1.FieldByName('BCIID').AsString;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('select * from Bs_Pattern_Info where BCIID=''' + trim(maxId) + ''' ');
Open;
end;
with ADOQueryCmd do
begin
if ADOQueryCmd.IsEmpty then
begin
Append;
FieldByName('BCIID').Value := Trim(maxId);
FieldByName('Filler').Value := cds_1.FieldByName('Filler').AsString;
FieldByName('FillTime').Value := cds_1.FieldByName('FillTime').Value;
end
else
begin
FieldByName('editer').Value := trim(DName);
FieldByName('edittime').Value := SGetServerDate(ADOQueryTemp);
end;
RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Bs_Pattern_Info', 1);
Post;
end;
with CDS_1 do
begin
Edit;
FieldByName('BCIID').Value := Trim(maxId);
end;
ADOQueryCmd.Connection.CommitTrans;
Result := True;
except
Result := True;
ADOQueryCmd.Connection.RollbackTrans;
Application.MessageBox('增行失败!', '提示', 0);
end;
end;
procedure TfrmPatternSel.TextEdit(Sender: TObject);
var
mvalue, FFieldName: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_1 do
begin
Edit;
FieldByName(FFieldName).Value := mvalue;
Post;
end;
if mvalue = '' then
mvalue := '0';
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('update BS_Cloth_Info set ' + FFieldName + '=' + (Trim(mvalue)));
sql.Add('where BCIID=' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString)));
ExecSQL;
end;
Tv1.Controller.EditingController.ShowEdit();
end;
procedure TfrmPatternSel.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
inherited;
if cds_1.IsEmpty then
exit;
ModalResult := 1;
end;
procedure TfrmPatternSel.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
InitImage();
end;
procedure TfrmPatternSel.TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
inherited;
InitGY();
InitGrid();
end;
procedure TfrmPatternSel.v1CYNoPropertiesEditValueChanged(Sender: TObject);
var
mvalue, FFieldName: string;
begin
mvalue := TcxTextEdit(Sender).EditingText;
FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
with CDS_1 do
begin
Edit;
FieldByName(FFieldName).Value := mvalue;
Post;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('update Bs_Pattern_Info set ' + FFieldName + '=' + QuotedStr(Trim(mvalue)));
sql.Add('where BCIID=' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString)));
ExecSQL;
end;
Tv1.Controller.EditingController.ShowEdit();
end;
procedure TfrmPatternSel.N1Click(Sender: TObject);
begin
SelOKNoFiler(Tv1, True);
end;
procedure TfrmPatternSel.N2Click(Sender: TObject);
begin
SelOKNoFiler(Tv1, False);
end;
procedure TfrmPatternSel.N3Click(Sender: TObject);
begin
Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;
procedure TfrmPatternSel.TCBNOR1Change(Sender: TObject);
begin
RecordsNumber := StrToInt(TCBNOR1.Text);
CurrentPage := 1;
C_Code.SetFocus;
InitGrid();
end;
procedure TfrmPatternSel.HXNameBtnDnClick(Sender: TObject);
begin
TBtnEditC(Sender).Text := '';
TBtnEditC(Sender).TxtCode := '';
end;
procedure TfrmPatternSel.HXNameBtnUpClick(Sender: TObject);
begin
try
frmZDYHelp := TfrmZDYHelp.Create(Application);
with frmZDYHelp do
begin
flag := 'HX' + Trim(Self.CDS_1.fieldbyname('CYNO').AsString);
flagname := '花型';
if ShowModal = 1 then
begin
TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
end;
end;
finally
frmZDYHelp.Free;
end;
end;
procedure TfrmPatternSel.Button1Click(Sender: TObject);
begin
if CurrentPage > 1 then
CurrentPage := CurrentPage - 1;
InitGrid();
end;
procedure TfrmPatternSel.Button2Click(Sender: TObject);
begin
if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then
CurrentPage := CurrentPage + 1;
InitGrid();
end;
end.