unit U_ClothInfo; 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_BaseList, cxContainer, dxDBBarCode, dxBarCode, Vcl.Clipbrd, cxTextEdit, BtnEdit, StrUtils, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, dxScrollbarAnnotations,U_BaseHelp, System.ImageList, Vcl.ImgList; type FdDy = record inc: integer; //�ͻ������־�� FDdys: string[32]; //�ͻ������� FdDysName: string[32]; //�ͻ������� end; TfrmClothInfo = class(TfrmBaseHelp) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; DS_Tree: TDataSource; ADOQueryTree: TADOQuery; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; GPM_1: TcxGridPopupMenu; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxSplitter1: TcxSplitter; Panel1: TPanel; TBFilter: TToolButton; v1CYNo: TcxGridDBColumn; v1Column3: TcxGridDBColumn; DS_1: TDataSource; ADOQueryMain: TADOQuery; CDS_1: TClientDataSet; v1Column12: TcxGridDBColumn; TBExport: TToolButton; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; ODPat: TOpenDialog; IdFTP1: TIdFTP; SaveDialog1: TSaveDialog; TBUP: TToolButton; Label3: TLabel; C_Code: TEdit; TBCopy: TToolButton; Panel2: TPanel; v1SSel: TcxGridDBColumn; DSCYNO: TDataSource; CDS_CYNO: TClientDataSet; Panel5: TPanel; cxDBTreeList1: TcxDBTreeList; cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn; Label11: TLabel; Label12: TLabel; Panel3: TPanel; adoqueryPicture: TADOQuery; v1Column1: TcxGridDBColumn; v1Column9: TcxGridDBColumn; Label4: TLabel; C_Name: TEdit; TBAdd: TToolButton; TBEdit: TToolButton; TBMLEdit: TToolButton; OpenDialog1: TOpenDialog; Label9: TLabel; C_GramWeight: TEdit; Label8: TLabel; C_Width: TEdit; 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; ToolButton1: TToolButton; DataSource3: TDataSource; CDS_Sub: TClientDataSet; Tv1Column9: TcxGridDBColumn; Tv1Column11: TcxGridDBColumn; cxGridPopupMenu2: TcxGridPopupMenu; ToolButton2: TToolButton; N3: TMenuItem; Panel9: TPanel; Panel10: TPanel; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; Panel11: TPanel; cbbHX: TComboBox; Label7: TLabel; CDS_Tree: TClientDataSet; ADOQueryPrint: TADOQuery; CDS_Label: TClientDataSet; ToolButton3: TToolButton; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Label1: TLabel; Note: TEdit; Tv1Column8: TcxGridDBColumn; Label2: TLabel; C_KnitGramWeight: TEdit; Tv1Column10: TcxGridDBColumn; Tv1Column12: TcxGridDBColumn; Label5: TLabel; filler: TEdit; cxgrdbclmnTv1Column13: TcxGridDBColumn; cxgrdbclmnTv1Column14: TcxGridDBColumn; lbl1: TLabel; C_KHName: TEdit; lbl2: TLabel; C_KHCode: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxDBTreeList1DblClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBFilterClick(Sender: TObject); procedure CYNoChange(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TBUPClick(Sender: TObject); procedure TBCopyClick(Sender: TObject); procedure C_CodeKeyPress(Sender: TObject; var Key: Char); procedure TBAddClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBMLEditClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure TCBNOR1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ToolButton2Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure TextEdit(Sender: TObject); procedure HXNameBtnUpClick(Sender: TObject); procedure HXNameBtnDnClick(Sender: TObject); procedure cbbHXChange(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private { Private declarations } CurrentPage, RecordsNumber: Integer; CTID: string; PState: Integer; FCTID, FTopID: string; procedure SetStatus(); procedure InitTree(); procedure InitGrid(); procedure ReadINIFile(); procedure InitImage(); procedure LookImage(FileName: string); public dFdDy: array[0..20] of FdDy; //�ͻ����������� FJurisdiction: string; { Public declarations } end; var frmClothInfo: TfrmClothInfo; Mach: array of TfrmSlt; implementation uses U_DataLink, U_RTFun, U_ClothInfoInput, U_CloInfoFileUp, U_YPTypeHelpCP, U_ZDYHelp, U_LabelPrint; {$R *.dfm} procedure TfrmClothInfo.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 TfrmClothInfo.SetStatus(); begin end; procedure TfrmClothInfo.InitTree(); var i: Integer; begin with ADOQueryTree do begin Close; SQL.Clear; SQL.Add('select * from BS_Cloth_Type'); Open; end; SCreateCDS(ADOQueryTree, CDS_Tree); SInitCDSData(ADOQueryTree, CDS_Tree); cxDBTreeList1.Items[0].Expand(false); end; procedure TfrmClothInfo.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; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; Filtered := False; sql.Clear; sql.Add(' exec P_BS_CloInfo_Get '); sql.Add(' @CTID=' + quotedstr(Trim(CDS_Tree.fieldbyname('CTID').AsString))); 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 TfrmClothInfo.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 := cafree; end; procedure TfrmClothInfo.TBCloseClick(Sender: TObject); begin if DirectoryExists(ExtractFileDir('D:\Right1209')) then winexec('cmd /c rd /s /q D:\Right1209', sw_hide); Close; end; procedure TfrmClothInfo.TBDelClick(Sender: TObject); begin if CDS_1.IsEmpty then Exit; if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then Exit; while CDS_1.Locate('SSel', true, []) do begin if Trim(CDS_1.fieldbyname('BCIID').AsString) <> '' then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('delete BS_Cloth_Info where BCIID=''' + Trim(CDS_1.fieldbyname('BCIID').AsString) + ''''); ExecSQL; end; end; CDS_1.Delete; end; end; procedure TfrmClothInfo.FormShow(Sender: TObject); begin inherited; FJurisdiction := '����'; ReadCxGrid(self.Caption + 'TV1', Tv1, '��Ʒ����'); if trim(FJurisdiction) <> '����' then begin filler.text := trim(DName); filler.Enabled := false; end; // pnlreport.Top := FTop + 110; application.ProcessMessages; RecordsNumber := 500; CurrentPage := 1; InitTree(); SetStatus(); InitGrid(); end; procedure TfrmClothInfo.cbbHXChange(Sender: TObject); begin InitImage(); end; procedure TfrmClothInfo.cxDBTreeList1DblClick(Sender: TObject); begin InitGrid(); end; procedure TfrmClothInfo.TBRafreshClick(Sender: TObject); begin InitTree(); InitGrid(); end; procedure TfrmClothInfo.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 TfrmClothInfo.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 TfrmClothInfo.TBExportClick(Sender: TObject); begin if CDS_1.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxGrid1); end; procedure TfrmClothInfo.TBUPClick(Sender: TObject); begin try frmCloInfoFileUp := TfrmCloInfoFileUp.Create(Application); with frmCloInfoFileUp do begin Code.Text := Trim(Self.CDS_1.fieldbyname('C_Code').AsString); FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString); if ShowModal = 1 then begin Self.InitGrid(); // Self.CDS_1.Locate('BCIID', BCIID, []); end; end; finally frmCloInfoFileUp.Free; end; InitImage(); end; procedure TfrmClothInfo.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 TfrmClothInfo.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))); if Trim(cbbHX.Text) <> '' then sql.add(' and A.HXName=' + quotedstr(trim(cbbHX.Text))); 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 TfrmClothInfo.TBCopyClick(Sender: TObject); begin try frmClothInfoInput := TfrmClothInfoInput.Create(Application); with frmClothInfoInput do begin CopyInt := 1; FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString); FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString); if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmClothInfoInput.Free; end; end; procedure TfrmClothInfo.C_CodeKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmClothInfo.TBAddClick(Sender: TObject); var i: Integer; FieldName: string; begin try frmClothInfoInput := TfrmClothInfoInput.Create(Application); with frmClothInfoInput do begin CopyInt := 0; FBCIID := ''; FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString); if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmClothInfoInput.Free; end; end; procedure TfrmClothInfo.TBEditClick(Sender: TObject); begin if CDS_1.IsEmpty then Exit; try frmClothInfoInput := TfrmClothInfoInput.Create(Application); with frmClothInfoInput do begin CopyInt := 0; FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString); FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString); if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmClothInfoInput.Free; end; end; procedure TfrmClothInfo.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 TfrmClothInfo.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); var fsj: string; begin fsj := 'select DISTINCT HXNAME name from TP_File where ISNULL(HXNAME,'''')<>'''' AND WBID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString)); SInitComBoxBySql(ADOQueryTemp, cbbHX, True, fsj); InitImage(); end; procedure TfrmClothInfo.TBMLEditClick(Sender: TObject); var fYPType: string; begin if CDS_1.IsEmpty then exit; if CDS_1.Locate('ssel', true, []) = false then begin Application.MessageBox('û��ѡ������!', '��ʾ', 0); Exit; end; fYPType := ''; frmYPTypeHelpCP := TfrmYPTypeHelpCP.create(self); with frmYPTypeHelpCP do begin if showmodal = 1 then begin fYPType := trim(ADOQueryHelp.fieldbyname('CTID').asstring); end; free; end; if trim(fYPType) = '' then exit; try with CDS_1 do begin DisableControls; First; while not eof do begin if fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update BS_Cloth_Info SET CTID=''' + trim(fYPType) + ''' '); sql.Add('where BCIID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString))); execsql; end; end; next; end; First; EnableControls; end; application.MessageBox('�����ɹ���', '��ʾ��Ϣ'); initgrid(); except CDS_1.EnableControls; application.MessageBox('����ʧ�ܣ�', '��ʾ��Ϣ', 0); end; end; procedure TfrmClothInfo.N1Click(Sender: TObject); begin SelOKNoFiler(Tv1, True); end; procedure TfrmClothInfo.N2Click(Sender: TObject); begin SelOKNoFiler(Tv1, False); end; procedure TfrmClothInfo.N3Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmClothInfo.TCBNOR1Change(Sender: TObject); begin RecordsNumber := StrToInt(TCBNOR1.Text); CurrentPage := 1; C_Code.SetFocus; InitGrid(); end; procedure TfrmClothInfo.HXNameBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmClothInfo.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 TfrmClothInfo.Button1Click(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmClothInfo.Button2Click(Sender: TObject); begin if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; procedure TfrmClothInfo.ToolButton1Click(Sender: TObject); begin try frmClothInfoInput := TfrmClothInfoInput.Create(Application); with frmClothInfoInput do begin CopyInt := 0; ToolButton1.Visible := False; FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString); FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString); if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmClothInfoInput.Free; end; end; procedure TfrmClothInfo.ToolButton2Click(Sender: TObject); begin WriteCxGrid(self.Caption + 'TV1', Tv1, '��Ʒ����'); end; procedure TfrmClothInfo.ToolButton3Click(Sender: TObject); var WSql: string; begin if CDS_1.IsEmpty then Exit; Tv1.OnFocusedRecordChanged := nil; if CDS_1.Locate('SSel', True, []) = False then begin Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged; Application.MessageBox('û��ѡ������!', '��ʾ', 0); Exit; end; WSql := ''; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if CDS_1.fieldbyname('SSel').AsBoolean then begin if WSql <> '' then begin WSql := WSql + ',' + QuotedStr(Trim(CDS_1.fieldbyname('BCIID').AsString)); end else begin WSql := QuotedStr(Trim(CDS_1.fieldbyname('BCIID').AsString)); end; end; Next; end; end; CDS_1.Locate('SSel', True, []); Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged; CDS_1.EnableControls; try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'ClothInfoPrint'; FFiltration1 := WSql; if ShowModal = 1 then begin // Self.InitGrid(); end; end; finally frmLabelPrint.Free; end; end; end.