unit U_KCRLLTZ_other; interface uses Windows, Messages, strutils,SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, StdCtrls, cxContainer, cxTextEdit, cxCurrencyEdit, BtnEdit, ExtCtrls, ComCtrls, ToolWin, DBClient, ADODB, MovePanel, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport; function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;stdcall;external 'JCYData.DLL'; function CommClose(sCommName:PAnsiChar):integer;stdcall;external 'JCYData.DLL'; type TfrmKCRLLTZ_other = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1MJID: TcxGridDBColumn; v1P_Code: TcxGridDBColumn; v1P_Color: TcxGridDBColumn; v1RollNum: TcxGridDBColumn; v1Qty: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; Panel2: TPanel; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ADOQueryMain: TADOQuery; ADOQueryCmd: TADOQuery; CDSOrder: TClientDataSet; CDSMJID: TClientDataSet; DataSource1: TDataSource; DataSource2: TDataSource; SmNO: TEdit; ADOQueryTmp: TADOQuery; MovePanel1: TMovePanel; Label2: TLabel; Edit2: TEdit; Button4: TButton; V2Column1: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; cxStyle_gridRow: TcxStyle; cxStyle_gridFoot: TcxStyle; cxStyle_gridHead: TcxStyle; cxStyle_gridGroupBox: TcxStyle; cxStyle_yellow: TcxStyle; cxStyle_Red: TcxStyle; cxStyle_fontBlack: TcxStyle; cxStyle_fontclFuchsia: TcxStyle; cxStyle_fontclPurple: TcxStyle; cxStyle_fontclGreen: TcxStyle; cxStyle_fontclBlue: TcxStyle; cxStyle_fontclTeal: TcxStyle; cxStyle_fontclOlive: TcxStyle; CheckBox3: TCheckBox; Panel3: TPanel; MJLen: TEdit; Label5: TLabel; Label9: TLabel; Edit7: TEdit; Label32: TLabel; Label33: TLabel; Edit8: TEdit; Edit6: TEdit; Label26: TLabel; BTPrint: TButton; Button5: TButton; ADOQueryPrint: TADOQuery; RM2: TRMGridReport; RMDB_Main: TRMDBDataSet; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure SmNOKeyPress(Sender: TObject; var Key: Char); procedure FormShow(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Edit7Click(Sender: TObject); procedure Edit8Click(Sender: TObject); procedure Edit6Click(Sender: TObject); procedure BTPrintClick(Sender: TObject); procedure Tv1DblClick(Sender: TObject); procedure Button5Click(Sender: TObject); private procedure InitGrid(); procedure InitMJID(); function Savedata1():boolean; function Savedata2():boolean; procedure Printdata(fCRID:string); procedure On1201(Var Message:Tmessage); { Private declarations } public iscom:boolean; { Public declarations } end; var frmKCRLLTZ_other: TfrmKCRLLTZ_other; implementation uses U_DataLink,U_Fun, U_UserHelp, U_ZDYHelp; {$R *.dfm} procedure TfrmKCRLLTZ_other.On1201(Var Message:Tmessage); var i1,i2:integer; unitname:string; fdata:double; begin i1:=message.WParam; i2:=message.LParam; IF not CheckBox3.Checked then exit; IF trim(DParameters10)='��С��'then MJLen.Text:= format('%.2f',[i1/100000]) else MJLen.Text:= format('%.0f',[i1/100000]); IF i2=0 then Label9.Caption:='M' else Label9.Caption:='Y'; end; procedure TfrmKCRLLTZ_other.Printdata(fCRID:string); var fPrintFile:String; mvalue:Double; Txt,fImagePath:string; Moudle: THandle; Makebar:TMakebar; Mixtext:TMixtext; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add('select A.*,kcQty as mjlen,kcQtyUnit as MJTypeother '); sql.Add(' from CK_BanCP_KC1 A') ; //SQL.Add(' where A.MJID='''+Trim(CDS_Main.fieldbyname('MJID').AsString)+''''); SQL.Add(' where A.CRID='+quotedstr(trim(fCRID))); Open; end; try Moudle:=LoadLibrary('MakeQRBarcode.dll'); @Makebar:=GetProcAddress(Moudle,'Make'); @Mixtext:=GetProcAddress(Moudle,'MixText'); Txt:=Trim(ADOQueryPrint.fieldbyname('MJID').AsString); fImagePath:=ExtractFilePath(Application.ExeName)+'image\temp.bmp' ; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName)+'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName)+'image'),nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt),Length(Txt),3,3,0,PChar(fImagePath),3); except application.MessageBox('����������ʧ�ܣ�','��ʾ��Ϣ',MB_ICONERROR); exit; end; fPrintFile:=ExtractFilePath(Application.ExeName)+'Report\ͨ�ñ�ǩ.rmf' ; if FileExists(fPrintFile) then begin RMVariables['QRBARCODE']:=fImagePath; RM2.LoadFromFile(fPrintFile); // RM2.ShowReport; RM2.PrintReport; // MJLen.SetFocus; end else begin Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\����ǩ.rmf'),'��ʾ',0); end; end; function TfrmKCRLLTZ_other.Savedata2():boolean; var i,FCRID:integer; fconNo,FC_CodeName,FC_Color:string; fRollNum,FQty:double; begin result:=false; IF CDSOrder.RecordCount<=1 then begin application.MessageBox('���ϲ���ƥ������С�ڻ��ߵ���һƥ������ɨ�赽��ƥ����','��ʾ��Ϣ',MB_ICONERROR); exit; end; i:=0; with CDSOrder do begin DisableControls; First; while not eof do begin if i=0 then begin // fconNo:= trim(Fieldbyname('ConNo').AsString); FC_CodeName:= trim(Fieldbyname('C_CodeName').AsString); FC_Color:= trim(Fieldbyname('C_Color').AsString); end else begin { if trim(fconNo)<>trim(Fieldbyname('ConNo').AsString) then begin EnableControls; application.MessageBox('���Ų�ͬ�����ܺϲ���','��ʾ��Ϣ',0); exit; end; } if trim(FC_CodeName)<>trim(Fieldbyname('C_CodeName').AsString) then begin EnableControls; application.MessageBox('��Ʒ���Ʋ�ͬ�����ܺϲ���','��ʾ��Ϣ',0); exit; end; if trim(FC_Color)<>trim(Fieldbyname('C_Color').AsString) then begin EnableControls; application.MessageBox('��ɫ��ͬ�����ܺϲ���','��ʾ��Ϣ',0); exit; end; end; i:=i+1; next; end; EnableControls; First; end; if i<2 then exit; ADOQueryCmd.Connection.BeginTrans; try fRollNum:=0; FQty:=0; i:=0; with CDSOrder do begin DisableControls; First; while not eof do begin // if Fieldbyname('Ssel').AsBoolean then // begin IF i=0 then fCRID:=Fieldbyname('CRID').AsInteger; fRollNum:=1; FQty:=strtofloatdef(trim(MJLen.Text),0); with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 '); sql.Add('where CRID='+quotedstr(trim(CDSOrder.Fieldbyname('CRID').AsString))); open; edit; fieldbyname('ZDYstr1').Value:='������ϲ�'; fieldbyname('ZDYFlote1').Value:=fieldbyname('kcQty').AsFloat; FieldByName('oldCRID').Value:=fCRID; fieldbyname('KCROllNum').Value:=0; fieldbyname('kcQty').Value:=0; post; end; i:=i+1; //end; next; end; EnableControls; First; end; with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 '); sql.Add('where CRID='+quotedstr(inttostr(fCRID))); open; edit; fieldbyname('KCROllNum').Value:=1; fieldbyname('kcQty').Value:=FQty; post; end; with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 '); sql.Add('where CRID='+quotedstr(inttostr(fCRID))); open; SInitCDSData20(adoqueryCmd,CDSMJID); end; ADOQueryCmd.Connection.CommitTrans; CDSOrder.EmptyDataSet; if Trim(Edit6.Text)='��' then begin printdata(inttostr(fCRID)); end; ModalResult:=1; // application.MessageBox('���ݺϲ��ɹ���','��ʾ��Ϣ'); // TBRafresh.Click; except ADOQueryCmd.Connection.RollbackTrans; // application.MessageBox('���ݺϲ�ʧ�ܣ�','��ʾ��Ϣ',0); end; end; function TfrmKCRLLTZ_other.Savedata1():boolean; var fbcID,FCRID,fAPTM:string; CRID:integer; i:integer; begin result:=false; IF CDSOrder.RecordCount>1 then begin application.MessageBox('����ֵ�ƥ�����ܴ���һƥ������ɨ�赽��ƥ����','��ʾ��Ϣ',MB_ICONERROR); exit; end; IF strtofloatdef(trim(mjlen.Text),0)>CDSOrder.FieldByName('KCqty').AsFloat then begin application.MessageBox('����������ܴ���ԭ������','��ʾ��Ϣ',MB_ICONERROR); exit; end; if GetLSNo(ADOQueryCmd,fAPTM,'C','APTM',4,1)=False then begin Application.MessageBox('ȡ����ˮ��ʧ�ܣ�','��ʾ',0); Exit; end; fbcID:=CDSOrder.fieldbyname('BCID').AsString; fcrID:=CDSOrder.fieldbyname('CRID').AsString; ADOQueryCmd.Connection.BeginTrans; try with ADOQueryTmp do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 A'); sql.Add('where BCID='+quotedstr(trim(fBCID))); sql.Add('and CRID='+quotedstr(trim(fCRID))); open; end; with ADOQueryCmd do begin Close; sql.Clear; SQL.add('Update CK_BanCP_CRID1 Set CRID=CRID+1'); sql.Add('select * from CK_BanCP_CRID1'); Open; end; CRID:=ADOQueryCmd.fieldbyname('CRID').AsInteger; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 A'); sql.Add('where 1=2 '); open; end; ADOQueryCmd.Append; for i:=0 to ADOQueryCmd.FieldCount-1 do begin ADOQueryCmd.fields[i].value:=ADOQueryTmp.Fields[i].Value ; end; ADOQueryCmd.FieldByName('CRID').Value:=CRID; ADOQueryCmd.FieldByName('KCROllNum').Value:=1; ADOQueryCmd.FieldByName('KCQty').Value:=strtofloatdef(MJLen.Text,0); ADOQueryCmd.FieldByName('oldCRID').Value:=fcrID; ADOQueryCmd.FieldByName('KCStatus').Value:=NULL; ADOQueryCmd.FieldByName('MJID').Value:=trim(fAPTM); ADOQueryCmd.fieldbyname('ZDYstr1').Value:='��������'; ADOQueryCmd.fieldbyname('ZDYFlote1').Value:= 0; ADOQueryCmd.Post; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 A'); sql.Add('where CRID='''+trim(fCRID)+''''); open; end; ADOQueryCmd.Edit; ADOQueryCmd.FieldByName('KCROllNum').Value:=ADOQueryCmd.FieldByName('KCROllNum').AsFloat - 1; ADOQueryCmd.FieldByName('KCQty').Value:=ADOQueryCmd.FieldByName('KCQty').AsFloat - strtofloatdef(MJLen.Text,0); ADOQueryCmd.fieldbyname('ZDYstr1').Value:='��������'; ADOQueryCmd.fieldbyname('ZDYFlote1').Value:= ADOQueryCmd.FieldByName('KCQty').AsFloat; ADOQueryCmd.Post; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_BanCp_KC1 SET KCRollNum =1 '); sql.Add('WHERE (KCQty<>0 or KCKgQty<>0)and KcRollNum=0 '); ExecSQL; end; with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 '); sql.Add('where CRID='+quotedstr(inttostr(CRID))); open; SInitCDSData20(adoqueryCmd,CDSMJID); end; with adoqueryCmd do begin close; sql.Clear; sql.Add('select * from CK_BanCP_KC1 '); sql.Add('where CRID='+quotedstr(fCRID)); open; SInitCDSData20(adoqueryCmd,CDSMJID); end; ADOQueryCmd.Connection.CommitTrans; // application.MessageBox('���ݱ���ɹ���','��ʾ��Ϣ'); CDSOrder.EmptyDataSet; if Trim(Edit6.Text)='��' then begin printdata(inttostr(CRID)); printdata(fCRID); end; ModalResult:=1; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('���ݱ���ʧ�ܣ�','��ʾ��Ϣ',0); end; end; procedure TfrmKCRLLTZ_other.InitGrid(); begin with ADOQueryMain do begin Close; sql.Clear; SQL.Add('select * from CK_BanCP_KC1 A'); SQL.Add('where 1=2 '); Open; end; SCreateCDS20(ADOQueryMain,CDSOrder); SInitCDSData20(ADOQueryMain,CDSOrder); SCreateCDS20(ADOQueryMain,CDSMJID); SInitCDSData20(ADOQueryMain,CDSMJID); end; procedure TfrmKCRLLTZ_other.InitMJID(); var fP_No:string; begin MovePanel1.Visible:=false; with ADOQueryMain do begin Close; sql.Clear; SQL.Add('select A.* from CK_BanCP_KC1 A'); // sql.add('left join CK_BanCP_CR B on B.BCID=A.BCID and B.CRFlag=''���'' '); SQL.Add('where A.MJID='+quotedstr(trim(SmNO.text))); sql.Add('and isnull(A.KCStatus,''0'')=''0'' '); sql.Add('and KCQty>0 '); Open; if not IsEmpty then begin IF Fieldbyname('KCQty').AsFloat<=0 then begin MovePanel1.Visible:=true; Edit2.Text:=SmNO.Text; Label2.Caption:='�������ѳ���'; end else begin SInitCDSData20(ADOQueryMain,CDSOrder); end; end else begin MovePanel1.Visible:=true; Edit2.Text:=SmNO.Text; Label2.Caption:='�����벻����'; end; end; end; procedure TfrmKCRLLTZ_other.FormDestroy(Sender: TObject); begin wRITECxGrid(self.Caption+tV1.Name,Tv1,'��Ʒ�ֿ�'); wRITECxGrid(self.Caption+TV2.Name,Tv2,'��Ʒ�ֿ�'); frmKCRLLTZ_other:=nil; end; procedure TfrmKCRLLTZ_other.FormClose(Sender: TObject; var Action: TCloseAction); begin if iscom then CommClose(pchar('com2')); Action:=caFree; end; procedure TfrmKCRLLTZ_other.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmKCRLLTZ_other.FormCreate(Sender: TObject); begin Panel2.Align:=alClient; end; procedure TfrmKCRLLTZ_other.SmNOKeyPress(Sender: TObject; var Key: Char); begin IF key=#13 then begin MovePanel1.Visible:=false; if not CDSOrder.Locate('MJID',trim(smNo.Text),[]) then initMjid(); smno.Text:=''; smno.SetFocus; end; end; procedure TfrmKCRLLTZ_other.FormShow(Sender: TObject); begin ReadCxGrid(self.Caption+tV1.Name,Tv1,'��Ʒ�ֿ�'); ReadCxGrid(self.Caption+TV2.Name,Tv2,'��Ʒ�ֿ�'); MovePanel1.Left:=(Width-MovePanel1.Width) div 2; MovePanel1.top:=(Height-MovePanel1.Height-200) div 2; InitGrid(); if iscom then begin if CommOpen(frmKCRLLTZ_other.Handle,'',500,1)<1 then begin showmessage('���ڴ���'); end; end; SmNO.SetFocus; end; procedure TfrmKCRLLTZ_other.Button4Click(Sender: TObject); begin MovePanel1.Visible:=false; end; procedure TfrmKCRLLTZ_other.Edit7Click(Sender: TObject); begin if Trim(Edit7.Text)='' then begin Edit7.Text:='��'; Edit8.Text:=''; // Edit9.Text:=''; end else begin Edit7.Text:=''; Edit8.Text:=''; // Edit9.Text:=''; end; end; procedure TfrmKCRLLTZ_other.Edit8Click(Sender: TObject); begin if Trim(Edit8.Text)='' then begin Edit7.Text:=''; Edit8.Text:='��'; // Edit9.Text:=''; end else begin Edit7.Text:=''; Edit8.Text:=''; // Edit9.Text:=''; end; end; procedure TfrmKCRLLTZ_other.Edit6Click(Sender: TObject); begin if Trim(Edit6.Text)='' then begin Edit6.Text:='��'; end else begin Edit6.Text:=''; end; end; procedure TfrmKCRLLTZ_other.BTPrintClick(Sender: TObject); begin if Trim(Edit7.Text)='��' then begin savedata1(); end; if Trim(Edit8.Text)='��' then begin savedata2(); end; SmNO.SetFocus; end; procedure TfrmKCRLLTZ_other.Tv1DblClick(Sender: TObject); begin IF CDSOrder.IsEmpty then exit; CDSOrder.Delete; end; procedure TfrmKCRLLTZ_other.Button5Click(Sender: TObject); begin If CDSMJID.IsEmpty then exit; printdata(CDSMJID.fieldbyname('CRID').AsString); SmNO.SetFocus; end; end.