unit U_PDOrderProgress; 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, cxDBLookupComboBox, cxGridBandedTableView, cxGridDBBandedTableView, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, Menus, Clipbrd, OleServer, AccessXP, cxContainer, cxImage, cxDBEdit, StrUtils, RM_e_Graphic, RM_e_Jpeg, U_SLT1, IdHTTP, jpeg; type TfrmPDOrderProgress = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ToolButton2: TToolButton; ToolButton1: TToolButton; RM1: TRMGridReport; RMDBHZ: TRMDBDataSet; cxGridPopupMenu2: TcxGridPopupMenu; cxGrid1: TcxGrid; TV1: TcxGridDBBandedTableView; cxGridDBBandedColumn35: TcxGridDBBandedColumn; cxGridDBBandedColumn42: TcxGridDBBandedColumn; cxGridDBBandedColumn51: TcxGridDBBandedColumn; cxGridDBBandedColumn52: TcxGridDBBandedColumn; cxGridDBBandedColumn56: TcxGridDBBandedColumn; cxGridDBBandedColumn57: TcxGridDBBandedColumn; cxGridDBBandedColumn59: TcxGridDBBandedColumn; cxGridDBBandedColumn60: TcxGridDBBandedColumn; cxGridDBBandedColumn61: TcxGridDBBandedColumn; cxGridDBBandedColumn62: TcxGridDBBandedColumn; cxGridDBBandedColumn63: TcxGridDBBandedColumn; cxGridDBBandedColumn64: TcxGridDBBandedColumn; cxGridDBBandedColumn77: TcxGridDBBandedColumn; cxGridDBBandedColumn79: TcxGridDBBandedColumn; cxGridDBBandedColumn81: TcxGridDBBandedColumn; cxGridDBBandedColumn87: TcxGridDBBandedColumn; cxGridDBBandedColumn91: TcxGridDBBandedColumn; V1Column1: TcxGridDBBandedColumn; V1Column2: TcxGridDBBandedColumn; V1Column6: TcxGridDBBandedColumn; cxGridLevel2: TcxGridLevel; V1Column25: TcxGridDBBandedColumn; V1Column28: TcxGridDBBandedColumn; V1Column4: TcxGridDBBandedColumn; V1Column5: TcxGridDBBandedColumn; V1Column7: TcxGridDBBandedColumn; CDSPRTHZ: TClientDataSet; CDSPRTMX: TClientDataSet; RMDBMX: TRMDBDataSet; ADOQueryMain: TADOQuery; DataSource1: TDataSource; CDS_HZ: TClientDataSet; TV1Column1: TcxGridDBBandedColumn; TV1Column3: TcxGridDBBandedColumn; TV1Column8: TcxGridDBBandedColumn; PopupMenu1: TPopupMenu; N1: TMenuItem; TV1Column9: TcxGridDBBandedColumn; TV1Column2: TcxGridDBBandedColumn; TV1Column4: TcxGridDBBandedColumn; TV1Column5: TcxGridDBBandedColumn; ToolButton3: TToolButton; AccessApplication1: TAccessApplication; cxSplitter1: TcxSplitter; DataSource2: TDataSource; Panel1: TPanel; cxGrid2: TcxGrid; TV2: TcxGridDBBandedTableView; TV1Column6: TcxGridDBBandedColumn; TV1Column7: TcxGridDBBandedColumn; TV1Column10: TcxGridDBBandedColumn; TV1Column11: TcxGridDBBandedColumn; TV1Column12: TcxGridDBBandedColumn; TV1Column16: TcxGridDBBandedColumn; cxGridLevel1: TcxGridLevel; ADOQueryImage: TADOQuery; DataSource3: TDataSource; IdFTP1: TIdFTP; RMJPEGExport1: TRMJPEGExport; ScrollBox1: TScrollBox; TV2Column1: TcxGridDBBandedColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure MPRTCodeNameChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure cxGridDBBandedColumn35CompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); procedure TV1Column6PropertiesEditValueChanged(Sender: TObject); procedure MPRTCodeKeyPress(Sender: TObject; var Key: Char); procedure DDTYPEChange(Sender: TObject); procedure TV1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure N1Click(Sender: TObject); procedure TV1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure TV2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure Picture4DblClick(Sender: TObject); procedure TV1Column16PropertiesEditValueChanged(Sender: TObject); private { Private declarations } procedure InitImage(); procedure InitGrid(); procedure LookImage(FileName: string); public fkhType: string; Fmanage, fmainid: string; canshu1: string; fFlileFlag: string; end; var frmPDOrderProgress: TfrmPDOrderProgress; Mach: array of TfrmSlt1; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_JDOrderProgress; {$R *.dfm} procedure TfrmPDOrderProgress.LookImage(FileName: string); var sFieldName: string; // ff: TADOBlobStream; // FJStream : TMemoryStream; 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 // Panel2.Caption:='正在下载数据,请稍等...'; // Panel2.Visible:=true; // application.ProcessMessages; try IdFTP1.Get(fFlileFlag + '\' + Trim(FileName), sFieldName, true, false); except // Panel2.Visible:=false; Application.MessageBox('客户图样文件不存在', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; end else begin // Panel2.Visible:=false; Application.MessageBox('无法连接文件服务器', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; // Panel2.Visible:=false; if IdFTP1.Connected then IdFTP1.Quit; ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL); end; procedure TfrmPDOrderProgress.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 CDSPRTMX.IsEmpty then exit; try with ADOQueryImage do begin close; sql.Clear; sql.Add(' select A.TFID,A.WBID,A.FilesOther,FileName,url from TP_File A '); sql.add('where A. WBID= ' + quotedstr(trim(CDSPRTMX.fieldbyname('Jdid').AsString))); open; end; j := ADOQueryImage.RecordCount; if j < 1 then exit; ADOQueryImage.DisableControls; ADOQueryImage.First; SetLength(Mach, j); jpg := TJpegImage.Create(); for i := 0 to j - 1 do begin if triM(ADOQueryImage.fieldbyname('FilesOther').AsString) <> '' then begin myStream := tadoblobstream.Create(tblobfield(ADOQueryImage.fieldbyname('FilesOther')), bmread); jpg.LoadFromStream(myStream); Mach[i] := TfrmSlt1.Create(Self); Mach[i].Name := trim(ADOQueryImage.fieldbyname('TFID').AsString); Mach[i].Parent := ScrollBox1; Mach[i].Left := 0 + i * 165; Mach[i].Init(ADOQueryImage.fieldbyname('TFID').AsString, ADOQueryImage.fieldbyname('FileName').AsString, jpg, ADOQueryImage.fieldbyname('url').AsString); end; ADOQueryImage.Next; end; ADOQueryImage.EnableControls; finally jpg.free; application.ProcessMessages; end; end; procedure TfrmPDOrderProgress.InitGrid(); var fwhere, Pwhere: string; begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; SQL.Add(' select A.*,pdid,pddate,QTY2=B.QTY,B.FILLER AS FILLER2,B.COLORS,B.RollNum,B.QTYUNIT,B.pddate,B.NOTE AS NOTE2 from JYOrder_Main a inner join JYOrder_Main_Pd b on a.mainid=B.mainid'); sql.Add('where a.mainid=' + QuotedStr(Trim(fmainid))); Open; end; SCreateCDS20(ADOQueryMain, CDS_HZ); SInitCDSData20(ADOQueryMain, CDS_HZ); // CDS_HZ.Last; finally ADOQueryMain.EnableControls; end end; procedure TfrmPDOrderProgress.FormDestroy(Sender: TObject); begin frmpdOrderProgress := nil; end; procedure TfrmPDOrderProgress.FormClose(Sender: TObject; var Action: TCloseAction); var i, j: integer; 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); Action := caFree; end; procedure TfrmPDOrderProgress.TBCloseClick(Sender: TObject); begin WriteCxBandedGrid(trim(self.caption) + '1', Tv1, '进度管理'); WriteCxBandedGrid(trim(self.caption) + '3', Tv2, '进度管理'); Close; end; procedure TfrmPDOrderProgress.FormShow(Sender: TObject); begin ReadCxBandedGrid(trim(self.caption) + '1', Tv1, '进度管理'); ReadCxBandedGrid(trim(self.caption) + '3', Tv2, '进度管理'); InitGrid(); end; procedure TfrmPDOrderProgress.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmPDOrderProgress.MPRTCodeNameChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmPDOrderProgress.ToolButton1Click(Sender: TObject); begin if ADOQueryMain.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmPDOrderProgress.FormCreate(Sender: TObject); begin canshu1 := Trim(DParameters1); end; procedure TfrmPDOrderProgress.ToolButton3Click(Sender: TObject); begin if CDS_HZ.IsEmpty then exit; try frmJDOrderProgress := TfrmJDOrderProgress.Create(Application); with frmJDOrderProgress do begin FMainId := Trim(Self.CDS_HZ.fieldbyname('MainId').AsString); if ShowModal = 1 then begin end; end; finally frmJDOrderProgress.Free; end; end; procedure TfrmPDOrderProgress.cxGridDBBandedColumn35CompareRowValuesForCellMerging(Sender: TcxGridColumn; ARow1: TcxGridDataRow; AProperties1: TcxCustomEditProperties; const AValue1: Variant; ARow2: TcxGridDataRow; AProperties2: TcxCustomEditProperties; const AValue2: Variant; var AAreEqual: Boolean); begin if (ARow1.Values[TV1Column3.Index] = ARow2.Values[TV1Column3.Index]) then AAreEqual := True else AAreEqual := False; end; procedure TfrmPDOrderProgress.TV1Column6PropertiesEditValueChanged(Sender: TObject); var mvalues, FFieldName: string; begin mvalues := TCXTextEdit(Sender).Text; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_HZ do begin edit; fieldbyname(FFieldName).Value := mvalues; post; end; tv1.Controller.EditingController.ShowEdit(); // if trim(mvalues) <> '' then // begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update JYORDER_SUB '); SQL.Add(' Set ' + FFieldName + '=' + QuotedStr(mvalues)); sql.Add(' where SUBID=''' + Trim(CDS_HZ.fieldbyname('SUBID').AsString) + ''''); sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('修改进度备注'))); sql.Add(',' + quotedstr(trim('单号:' + trim(CDS_HZ.FieldByName('subid').AsString) + ';现备注:' + trim(CDS_HZ.FieldByName('JDNOTE').AsString)))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmPDOrderProgress.MPRTCodeKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmPDOrderProgress.DDTYPEChange(Sender: TObject); begin InitGrid(); end; procedure TfrmPDOrderProgress.TV1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if (AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('chk').Index]) = 0 then begin ACanvas.FONT.Color := CLRED; end; end; procedure TfrmPDOrderProgress.N1Click(Sender: TObject); var myclipbrd: TClipboard; begin myclipbrd := TClipboard.Create(); myclipbrd.AsText := CDS_HZ.FieldByName('MPRTCode').ASSTRING; end; procedure TfrmPDOrderProgress.TV1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin try ADOQueryCmd.DisableControls; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('SELECT C.* FROM JyOrder_Main_Jd C '); sql.Add('where C.PDID=' + QuotedStr(Trim(CDS_HZ.FieldByName('PDID').AsString))); sql.Add('order by idx'); // ShowMessage(SQL.Text); Open; end; SCreateCDS20(ADOQueryCmd, CDSPRTMX); SInitCDSData20(ADOQueryCmd, CDSPRTMX); // CDS_HZ.Last; finally ADOQueryCmd.EnableControls; end end; procedure TfrmPDOrderProgress.TV2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin if CDSPRTMX.IsEmpty then Exit; InitImage(); end; procedure TfrmPDOrderProgress.Picture4DblClick(Sender: TObject); begin if TcxDBImage(Sender).Picture.Height = 0 then exit; LookImage(ADOQueryImage.fieldbyname(TcxDBImage(Sender).Hint).asstring); end; procedure TfrmPDOrderProgress.TV1Column16PropertiesEditValueChanged(Sender: TObject); var mvalues, FFieldName: string; begin mvalues := TCXTextEdit(Sender).Text; FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDSPRTMX do begin edit; fieldbyname(FFieldName).Value := mvalues; post; end; Tv2.Controller.EditingController.ShowEdit(); // if trim(mvalues) <> '' then // begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('Update JyOrder_Main_Jd '); SQL.Add(' Set ' + FFieldName + '=' + QuotedStr(mvalues)); sql.Add(' where JDID=''' + Trim(CDSPRTMX.fieldbyname('JDID').AsString) + ''''); sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('修改处理意见'))); sql.Add(',' + quotedstr(trim('单号:' + trim(CDSPRTMX.FieldByName('JDID').AsString) + ';现备注:' + trim(CDSPRTMX.FieldByName('CLNOTE').AsString)))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; Tv2.Controller.EditingController.ShowEdit(); end; end.