unit U_XHGZInPut; 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, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters; type TfrmXHGZInPut = 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; Label5: TLabel; BSType: TComboBox; 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 frmXHGZInPut: TfrmXHGZInPut; implementation uses U_DataLink, U_ZDYHelp, U_Fun, U_ZdyAttachCP_HX_Sel, U_ZDYHelpTouJu; {$R *.dfm} procedure TfrmXHGZInPut.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.7 else FPrice := 2.8; 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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.TBCloseClick(Sender: TObject); begin ModalResult := 1; end; procedure TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.ScrollBox1Click(Sender: TObject); begin Note.SetFocus; end; procedure TfrmXHGZInPut.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 TfrmXHGZInPut.PDTiaoXian1Change(Sender: TObject); begin CBHJ(); end; procedure TfrmXHGZInPut.MiShuExit(Sender: TObject); begin DJHJ(); CBHJ(); end; procedure TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.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 TfrmXHGZInPut.ISMSClick(Sender: TObject); begin if not ISMS.Checked then begin ISZS.Checked := True; end else begin ISZS.Checked := False; end; end; procedure TfrmXHGZInPut.ISZSClick(Sender: TObject); begin if not ISZS.Checked then begin ISMS.Checked := True; end else begin ISMS.Checked := False; end; end; procedure TfrmXHGZInPut.ISMSExit(Sender: TObject); begin CBHJ(); end; procedure TfrmXHGZInPut.IFTXBZClick(Sender: TObject); begin if not IFTXBZ.Checked then begin IFCLBZ.Checked := True; end else begin IFCLBZ.Checked := False; end; end; procedure TfrmXHGZInPut.IFCLBZClick(Sender: TObject); begin if not IFCLBZ.Checked then begin IFTXBZ.Checked := True; end else begin IFTXBZ.Checked := False; end; end; procedure TfrmXHGZInPut.JTNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.KKNoteKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.ElseWageNameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.MoneyKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.NoteKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.ISMSKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmXHGZInPut.IsPriceClick(Sender: TObject); begin DJHJ(); CBHJ(); end; end.