unit U_KouKuanInPut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxMemo, cxRichEdit, ComCtrls, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit, StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxDropDownEdit, CheckLst; type TfrmKouKuanInPut = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ADOTemp: TADOQuery; ADOCmd: TADOQuery; ADOMain: TADOQuery; ScrollBox1: TScrollBox; Label2: TLabel; Label3: TLabel; Label22: TLabel; Label27: TLabel; Label28: TLabel; CRTime: TDateTimePicker; CLBZQty: TEdit; MiShu: TEdit; ZhenShu: TEdit; JTNo: TcxButtonEdit; YGCode: TEdit; Label37: TLabel; Label39: TLabel; Label51: TLabel; Label24: TLabel; Price1: TEdit; ElseWage: TEdit; Price: TEdit; Money: TEdit; Note: TMemo; OutputWage: TEdit; Label8: TLabel; BanCi: TEdit; Label9: TLabel; YGName: TEdit; JXModel: TEdit; Label10: TLabel; HXName: TcxButtonEdit; TouJu: TEdit; Label13: TLabel; Label4: TLabel; KKMoney: TEdit; Qty1: TEdit; Label7: TLabel; Label15: TLabel; ElseWageName: TcxButtonEdit; ISMS: TCheckBox; ISZS: TCheckBox; IFCLBZ: TCheckBox; Label16: TLabel; CLBZMoney: TEdit; Label1: TLabel; TXBZQty: TEdit; IFTXBZ: TCheckBox; Label6: TLabel; TXBZMoney: TEdit; Label12: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label14: TLabel; KKNote: TcxButtonEdit; Label17: TLabel; Label18: TLabel; Label11: TLabel; IsPrice: TCheckBox; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cxButtonEdit3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure qjtsKeyPress(Sender: TObject; var Key: Char); procedure ScrollBox1Click(Sender: TObject); procedure HXNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure PDTiaoXian1Change(Sender: TObject); procedure MiShuExit(Sender: TObject); procedure ElseWageNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure KKNotePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ISMSClick(Sender: TObject); procedure ISZSClick(Sender: TObject); procedure ISMSExit(Sender: TObject); procedure IFTXBZClick(Sender: TObject); procedure IFCLBZClick(Sender: TObject); procedure JTNoKeyPress(Sender: TObject; var Key: Char); procedure KKNoteKeyPress(Sender: TObject; var Key: Char); procedure ElseWageNameKeyPress(Sender: TObject; var Key: Char); procedure MoneyKeyPress(Sender: TObject; var Key: Char); procedure NoteKeyPress(Sender: TObject; var Key: Char); procedure ISMSKeyPress(Sender: TObject; var Key: Char); procedure IsPriceClick(Sender: TObject); private FXS: Integer; procedure InitData(); function SaveData(): Boolean; function RoundFloat(f: double; i: integer): double; procedure DJHJ(); procedure CBHJ(); function Setstring(cString: string): string; { Private declarations } public PState, PCopyInt: Integer; FMainId, FSubId, FConNo: string; { Public declarations } end; var frmKouKuanInPut: TfrmKouKuanInPut; implementation uses U_DataLink, U_ZDYHelp, U_Fun, U_ZdyAttachCP_HX_Sel, U_ZDYHelpTouJu; {$R *.dfm} procedure TfrmKouKuanInPut.DJHJ(); var FHXName: string; AZhenShu, FZhenShu, FPrice: Double; begin if not IsPrice.Checked then Exit; FPrice := 0; FHXName := Trim(HXName.Text); FZhenShu := StrToIntDef(ZhenShu.Text, 0); if ISMS.Checked then begin FPrice := 0.5; end; if ISZS.Checked then begin if Pos('横条', FHXName) > 0 then begin if FZhenShu < 33 then FPrice := 2.5 else FPrice := 2.6; end else begin with ADOTemp do begin Close; SQL.Clear; SQL.Add('select * from KH_ZDY_TJList where ZdyName=''' + Trim(TouJu.Text) + ''' '); Open; end; AZhenShu := ADOTemp.fieldbyname('LJZhenShu').AsFloat; if FZhenShu < AZhenShu then FPrice := ADOTemp.fieldbyname('Price1').AsFloat else FPrice := ADOTemp.fieldbyname('Price2').AsFloat; end; end; if IFTXBZ.Checked then begin FPrice := 3.2; end; Price.Text := FloatToStr(FPrice); end; function TfrmKouKuanInPut.Setstring(cString: string): string; {提取数字} var i: integer; str: string; begin str := ''; for i := 1 to length(cString) do begin if Pos(cString[i], '0123456789.') <= 0 then break else case cString[i] of '.': str := str + '.'; '0': str := str + '0'; '1': str := str + '1'; '2': str := str + '2'; '3': str := str + '3'; '4': str := str + '4'; '5': str := str + '5'; '6': str := str + '6'; '7': str := str + '7'; '8': str := str + '8'; '9': str := str + '9'; end; end; Setstring := str; end; function TfrmKouKuanInPut.RoundFloat(f: double; i: integer): double; var s: string; ef: extended; begin s := '#.' + StringOfChar('0', i); ef := StrToFloat(FloatToStr(f)); //防止浮点运算的误差 result := StrToFloat(FormatFloat(s, ef)); end; procedure TfrmKouKuanInPut.CBHJ(); var FISMS, FISZS, FIFTXBZ, FIFCLBZ: Boolean; FElseWageName, FHXName: string; FQty1, FPrice1, FMiShu, AZhenShu, FZhenShu, FPrice, FMoney, FOutputWage, FElseWage, FTXBZMoney, FCLBZMoney, FTXBZQty, FCLBZQty, FKKMoney: Double; begin FISMS := ISMS.Checked; FISZS := ISZS.Checked; FIFTXBZ := IFTXBZ.Checked; FIFCLBZ := IFCLBZ.Checked; FPrice := StrToFloatDef(Price.Text, 0); FQty1 := StrToFloatDef(Qty1.Text, 0); FPrice1 := StrToFloatDef(Price1.Text, 0); FMiShu := StrToFloatDef(MiShu.Text, 0); FZhenShu := StrToFloatDef(ZhenShu.Text, 0); FHXName := trim(HXName.Text); FElseWageName := trim(ElseWageName.Text); FTXBZQty := StrToFloatDef(TXBZQty.Text, 0); FCLBZQty := StrToFloatDef(CLBZQty.Text, 0); FKKMoney := StrToFloatDef(KKMoney.Text, 0); //米数工资 if FISMS then FOutputWage := FPrice * FMiShu; //针数工资 if FISZS then FOutputWage := FPrice * FZhenShu; //跳线补助 if FIFTXBZ then FTXBZMoney := FOutputWage * FTXBZQty / 100; //产量补助 if FIFCLBZ then FCLBZMoney := FOutputWage * FCLBZQty / 100; //其他补助 if Trim(FElseWageName) <> '' then FElseWage := FPrice1 * FQty1; FMoney := FOutputWage + FElseWage + FCLBZMoney + FTXBZMoney - FKKMoney; OutputWage.Text := floattostr(FOutputWage); TXBZMoney.Text := floattostr(FTXBZMoney); CLBZMoney.Text := floattostr(FCLBZMoney); ElseWage.Text := floattostr(FElseWage); Money.Text := floattostr(FMoney); end; procedure TfrmKouKuanInPut.TBCloseClick(Sender: TObject); begin ModalResult := 1; end; procedure TfrmKouKuanInPut.InitData(); begin with ADOTemp do begin Close; SQL.Clear; sql.Add(' select * from GZListMain '); sql.Add('where GZMainID=''' + FMainId + ''''); Open; end; SCSHData(ADOTemp, ScrollBox1, 0); with ADOTemp do begin Close; SQL.Clear; sql.Add(' select * from GZListSub '); sql.Add('where GZSubID=''' + FSubId + ''''); Open; end; SCSHData(ADOTemp, ScrollBox1, 1); if not ADOTemp.IsEmpty then begin ISMS.Checked := ADOTemp.FieldByName('ISMS').Value; ISZS.Checked := ADOTemp.FieldByName('ISZS').Value; IFTXBZ.Checked := ADOTemp.FieldByName('IFTXBZ').Value; IFCLBZ.Checked := ADOTemp.FieldByName('IFCLBZ').Value; IsPrice.Checked := ADOTemp.FieldByName('IsPrice').Value; end; end; procedure TfrmKouKuanInPut.FormShow(Sender: TObject); begin InitData(); if PState = 0 then begin end; if PCopyInt = 1 then begin FSubId := ''; PState := 0; MiShu.Text := '0'; ZhenShu.Text := '0'; ElseWageName.Text := ''; Price1.Text := '0'; Qty1.Text := '0'; KKNote.Text := ''; KKMoney.Text := '0'; end; end; function TfrmKouKuanInPut.SaveData(): Boolean; var maxno, maxSubNo: string; begin try ADOCmd.Connection.BeginTrans; ///保存主表 if Trim(FSubId) = '' then begin if GetLSNo(ADOCmd, maxno, 'GZS', 'GZListSub', 3, 1) = False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; end else begin maxno := Trim(FSubId); end; with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from GZListSub where GZSubID=''' + Trim(maxno) + ''''); Open; end; with ADOCmd do begin if ADOCmd.IsEmpty then Append else edit; FieldByName('GZMainID').Value := Trim(FMainId); FieldByName('GZSubID').Value := Trim(maxno); SSetsaveSql(ADOCmd, 'GZListSub', ScrollBox1, 1); FieldByName('ISMS').Value := ISMS.Checked; FieldByName('ISZS').Value := ISZS.Checked; FieldByName('IFTXBZ').Value := IFTXBZ.Checked; FieldByName('IFCLBZ').Value := IFCLBZ.Checked; FieldByName('IsPrice').Value := IsPrice.Checked; if Trim(FSubId) = '' then begin FieldByName('Filler').Value := Trim(DName); FieldByName('FillTime').Value := SGetServerDateTime(ADOTemp); end else begin // FieldByName('Editer').Value := Trim(DName); // FieldByName('EditTime').Value := SGetServerDateTime(ADOTemp); end; Post; end; FSubId := Trim(maxno); ADOCmd.Connection.CommitTrans; Result := True; except Result := False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmKouKuanInPut.TBSaveClick(Sender: TObject); begin Note.SetFocus; // if Trim(CustomerName.Text)='' then // begin // Application.MessageBox('客户不能为空!','提示',0); // Exit; // end; // // if TV1.DataController.Summary.FooterSummaryValues[1]<>100 then // begin // Application.MessageBox('比例合计必须为100!','提示',0); // Exit; // end; if SaveData() then begin // Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; procedure TfrmKouKuanInPut.FormCreate(Sender: TObject); begin // SetWindowLong(Qty.Handle, GWL_STYLE, GetWindowLong(Qty.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(ZzCost.Handle, GWL_STYLE, GetWindowLong(ZzCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(DjBzCost.Handle, GWL_STYLE, GetWindowLong(DjBzCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(YfCost.Handle, GWL_STYLE, GetWindowLong(YfCost.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(CbPrice.Handle, GWL_STYLE, GetWindowLong(CbPrice.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(Price.Handle, GWL_STYLE, GetWindowLong(Price.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(Lr.Handle, GWL_STYLE, GetWindowLong(Lr.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // SetWindowLong(Lrd.Handle, GWL_STYLE, GetWindowLong(Lrd.Handle, GWL_STYLE) or ES_MULTILINE or ES_RIGHT); // Bjtime.DateTime := SGetServerDate(ADOTemp); end; procedure TfrmKouKuanInPut.cxButtonEdit3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'XHJTXinXi'; flagname := '机台信息'; fnote := True; Label1.Caption := '机号'; V1Name.Caption := '机号'; V1Note.Caption := '机型'; if ShowModal = 1 then begin JTNo.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); JXModel.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('Note').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmKouKuanInPut.qjtsKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; if not (((Key >= '0') and (Key <= '9')) or (Key = '.') or (Key = #8)) then begin Key := #0; end else if (pos('.', TEdit(Sender).text) <> 0) then begin if Key = '.' then begin Key := #0; end; end; end; procedure TfrmKouKuanInPut.ScrollBox1Click(Sender: TObject); begin Note.SetFocus; end; procedure TfrmKouKuanInPut.HXNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZdyAttachCP_HX_Sel := TfrmZdyAttachCP_HX_Sel.Create(Application); with frmZdyAttachCP_HX_Sel do begin if ShowModal = 1 then begin HXName.Text := Trim(frmZdyAttachCP_HX_Sel.CDS_HZ.fieldbyname('ZdyName').AsString); TouJu.Text := Trim(frmZdyAttachCP_HX_Sel.CDS_HZ.fieldbyname('defstr2').AsString); end; end; finally frmZdyAttachCP_HX_Sel.Free; end; CBHJ(); end; procedure TfrmKouKuanInPut.PDTiaoXian1Change(Sender: TObject); begin CBHJ(); end; procedure TfrmKouKuanInPut.MiShuExit(Sender: TObject); begin DJHJ(); CBHJ(); end; procedure TfrmKouKuanInPut.ElseWageNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'ElseWageName'; flagname := '其他工资项目'; fnote := True; V1Note.Caption := '单价'; if ShowModal = 1 then begin ElseWageName.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); Price1.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('Note').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmKouKuanInPut.cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'ElseWageName'; flagname := '其他工资项目'; fnote := True; V1Note.Caption := '单价'; if ShowModal = 1 then begin ElseWageName.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); Price1.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('Note').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmKouKuanInPut.KKNotePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'KKNote'; flagname := '扣款内容'; if ShowModal = 1 then begin KKNote.Text := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmKouKuanInPut.ISMSClick(Sender: TObject); begin if not ISMS.Checked then begin ISZS.Checked := True; end else begin ISZS.Checked := False; end; end; procedure TfrmKouKuanInPut.ISZSClick(Sender: TObject); begin if not ISZS.Checked then begin ISMS.Checked := True; end else begin ISMS.Checked := False; end; end; procedure TfrmKouKuanInPut.ISMSExit(Sender: TObject); begin CBHJ(); end; procedure TfrmKouKuanInPut.IFTXBZClick(Sender: TObject); begin if not IFTXBZ.Checked then begin IFCLBZ.Checked := True; end else begin IFCLBZ.Checked := False; end; end; procedure TfrmKouKuanInPut.IFCLBZClick(Sender: TObject); begin if not IFCLBZ.Checked then begin IFTXBZ.Checked := True; end else begin IFTXBZ.Checked := False; end; end; procedure TfrmKouKuanInPut.JTNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.KKNoteKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.ElseWageNameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.MoneyKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.NoteKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.ISMSKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmKouKuanInPut.IsPriceClick(Sender: TObject); begin DJHJ(); CBHJ(); end; end.