📄 a02050f002unit.pas
字号:
begin MouthEdt.SetFocus ; strMouth:=MouthEdt.Text; Exit; end; if Trim(DayEdt.Text) ='' then begin DayEdt.SetFocus ; strMouth:=MouthEdt.Text; Exit; end; try EncodeDate(StrToInt(YearEdt.Text),StrToInt(MouthEdt.Text), StrToInt(DayEdt.Text)); except begin Application.MessageBox('日期范围错误!','错误',mb_OK+mb_IconStop); DayEdt.SetFocus ; Exit; end; end; strMouth:=MouthEdt.Text;end;procedure TA02050F002Frm.DayEditExit(Sender: TObject);begin if Trim(YearEdt.Text) ='' then begin YearEdt.SetFocus ; strDay:=DayEdt.Text; Exit; end; if Trim(MouthEdt.Text) ='' then begin MouthEdt.SetFocus ; strDay:=DayEdt.Text; Exit; end; if Trim(DayEdt.Text) ='' then begin DayEdt.SetFocus ; strDay:=DayEdt.Text; Exit; end; if Length(Trim(DayEdt.Text))=1 then DayEdt.Text:= '0'+Trim(DayEdt.Text); try EncodeDate(StrToInt(YearEdt.Text),StrToInt(MouthEdt.Text), StrToInt(DayEdt.Text)); except begin Application.MessageBox('日期范围错误!','错误',mb_OK+mb_IconStop); DayEdt.SetFocus ; Exit; end; end; strDay:=DayEdt.Text;end;procedure TA02050F002Frm.YearEditClick(Sender: TObject);var WordYear:Word; WordMouth:Word; WordDay:Word;begin if trim(YearEdt.Text) ='' then begin DecodeDate(Date,WordYear,WordMouth,WordDay); YearEdt.Text :=IntToStr(WordYear); end;end;procedure TA02050F002Frm.MouthEditClick(Sender: TObject);var WordYear:Word; WordMouth:Word; WordDay:Word;begin if trim(MouthEdt.Text) ='' then begin DecodeDate(Date,WordYear,WordMouth,WordDay); MouthEdt.Text :=IntToStr(WordMouth); end;end;procedure TA02050F002Frm.DayEditClick(Sender: TObject);var WordYear:Word; WordMouth:Word; WordDay:Word;begin if trim(DayEdt.Text) ='' then begin DecodeDate(Date,WordYear,WordMouth,WordDay); DayEdt.Text :=IntToStr(WordDay); end;end;procedure TA02050F002Frm.FormShow(Sender: TObject);var WordYear:Word; WordMouth:Word; WordDay:Word;begin if trim(DayEdt.Text) ='' then begin DecodeDate(Date,WordYear,WordMouth,WordDay); YearEdt.Text :=IntToStr(WordYear); MouthEdt.Text :=IntToStr(WordMouth); DayEdt.Text :=IntToStr(WordDay); end; if Length(Trim(MouthEdt.Text))=1 then MouthEdt.Text:= '0'+Trim(MouthEdt.Text); if Length(Trim(DayEdt.Text))=1 then DayEdt.Text:= '0'+Trim(DayEdt.Text); { 在此事件处理函数中初始化各项属性 } intErrCounts:=0; try TD04ATbl.Active :=true; finally DMMain.adoConnMain.BeginTrans; // 开始一个事务 end; if tag=0 then // 如果修改 begin Self.Caption :='修改'; AddTBBtn.Visible :=false; TD04ATbl.Locate('自动编号',self.strEditArray[0],[loCaseInsensitive]); TD04ATbl.Edit; { 初始化 } if TD04ATbl.FieldValues['出票日期']<>NULL then begin SpeedButton2Click(Sender); // 为了初始化出票日期, MonthCalendar1.Date:=TD04ATbl.FieldValues['出票日期']; SpeedButton2Click(Sender); // 调用两次 end; moneyEdt.Text :=TD04ATbl.FieldValues['金额'];// 以初始化moneyLabel及strForSaveMoney strForSaveMoney:=moneyEdt.Text; moneyEdt.SetFocus; end else // 如果添加 begin Self.Caption :='添加'; TD04ATbl.Append; { 初始化 } moneyEdt.Text :=''; strForSaveMoney:=''; // 初始化成员变量 TD04ATbl.FieldByName('票据类别').Asstring:='转帐支票'; end;// bNeedHelpSave:=False; // 初始化为不需要帮助 InitEdtCtlIme(self.Panel1,imChinese,gstrInputMethod); InitEdtCtlIme(self.Panel3,imChinese,gstrInputMethod); TD04OutNameDBEdt.SetFocus; // 设置初始焦点end;procedure TA02050F002Frm.SaveTBBtnClick(Sender: TObject);begin if intErrCounts<>0 then begin Application.MessageBox('数据填写的有错误,红色的为有错误的项目,请检查填写内容!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); yearEdt.SetFocus; Exit; end; try { 通过切换焦点产生OnExit事件 } moneyEdt.SetFocus; yearEdt.SetFocus; dayEdt.SetFocus; yearEdt.SetFocus; { 保存数据 } try if (yearEdt.Text<>'') or (mouthEdt.Text<>'') or (dayEdt.Text<>'') then begin strForSaveDate:=Trim(yearEdt.Text)+'-'+Trim(mouthEdt.Text) +'-'+Trim(dayEdt.Text); TD04ATbl.FieldValues['出票日期']:=strForSaveDate; end; except Application.MessageBox('出票日期填写有错误,请检查填写内容,重新提交!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); yearEdt.SetFocus; exit end; try if strForSaveMoney<>'' then TD04ATbl.FieldValues['金额']:=strForSaveMoney except Application.MessageBox('金额填写有错误,请检查填写内容,重新提交!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); moneyEdt.SetFocus; exit; end; TD04ATbl.FieldValues['票据名称']:='交通银行进帐单'; TD04ATbl.FieldByName('票据编码').AsString:='01050'; TD04ATbl.FieldByName('票据种类').AsString:='01'; TD04ATbl.FieldValues['操作员']:=gstrOperaterName; TD04ATbl.Post; // 提交 except Application.MessageBox('数据提交错误,请检查填写内容,重新提交!', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); DMMain.adoConnMain.RollbackTrans; // 回滚一个事务 DMMain.adoConnMain.BeginTrans; // 开始一个事务 yearEdt.SetFocus; Exit; end; DMMain.adoConnMain.CommitTrans; // 提交一个事务 DMMain.adoConnMain.BeginTrans; // 开始一个事务 try if tag=0 then // 修改 TD04ATbl.Edit else TD04ATbl.Edit; except Application.MessageBox('添加记录时产生错误!请与数据库管理员联系', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); yearEdt.SetFocus; end; yearEdt.SetFocus;end;procedure TA02050F002Frm.AbortTBBtnClick(Sender: TObject);begin if IdYes<>Application.MessageBox('真的要放弃吗?', '提示',MB_YesNo+MB_DefButton1+MB_IconQuestion+MB_ApplModal) then begin Exit; end; DMMain.adoConnMain.RollbackTrans; // 回滚一个事务 // 更新表,注意顺序 try TD04ATbl.Active :=False; TD04ATbl.Active :=True; finally DMMain.adoConnMain.BeginTrans; // 开始一个事务 end; try if tag=0 then // 修改 begin TD04ATbl.Locate('自动编号',self.strEditArray[0],[loCaseInsensitive]); TD04ATbl.Edit; { 初始化 } if TD04ATbl.FieldValues['出票日期']<>NULL then begin SpeedButton2Click(Sender); // 为了初始化出票日期, MonthCalendar1.Date:=TD04ATbl.FieldValues['出票日期']; SpeedButton2Click(Sender); // 调用两次 end; moneyEdt.Text :=TD04ATbl.FieldValues['金额']; moneyEdt.SetFocus; // 利用焦点的转换,产生OnExit()事件, // 以初始化moneyLabel及strForSaveMoney end else // 添加 begin TD04ATbl.Append; { 初始化 } SpeedButton2Click(Sender); // 为了初始化出票日期, MonthCalendar1.Date :=Date; SpeedButton2Click(Sender); // 调用两次 moneyEdt.Text :=''; strForSaveMoney:=''; // 初始化成员变量 moneyEdt.SetFocus; // 利用焦点的转换,产生OnExit()事件,初始化moneyLabel end; except Application.MessageBox('操作数据库时产生错误!请与数据库管理员联系', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); end; yearEdt.SetFocus;end;procedure TA02050F002Frm.ExitTBBtnClick(Sender: TObject);begin Close;end;procedure TA02050F002Frm.MoneyEdtExit(Sender: TObject);var i:integer; strMoney,strTmp:string; intTmp:integer; strPosion:string;begin { 先进行判断是否需要进行处理 } strTmp:=ChangeMoneyLowcaseToUppercase(strForSaveMoney); if moneyEdt.Text=strTmp then exit; // 不需要处理 { 开始处理 } if ChangeMoneyLowcaseToUppercase(moneyEdt.Text)='-1' then begin Application.MessageBox('金额输入错误!请重新输入', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); moneyEdt.SetFocus; exit; end; strMoney:=moneyEdt.Text; // 临时保存原始金额; strForSaveMoney:=moneyEdt.Text; // 将原始输入,保存到类成员中 { 对输入的金额进行处理} strPosion:=Trim(moneyEdt.Text); intTmp:=Pos('.',pChar(strMoney)); Delete(strPosion,intTmp,1); if intTmp=0 then strPosion:=strPosion+'.00' else if (strlen(pChar(strPosion))-intTmp)=1 then strPosion:=strPosion+'0' else if (strlen(pChar(strPosion))-intTmp)=0 then strPosion:=strPosion+'00'; if Length(strPosion)>11 then begin Application.MessageBox('金额输入错误!请重新输入', '提示',MB_OK+MB_DefButton1+MB_IconInformation+MB_ApplModal); moneyEdt.SetFocus; exit; end; { 将金额转换为大写并填写到对应项中 } moneyEdt.Text:=ChangeMoneyLowcaseToUppercase(moneyEdt.Text); { 清空金额项 } moneyLabel0.Caption :=''; moneyLabel1.Caption :=''; moneyLabel2.Caption :=''; moneyLabel3.Caption :=''; moneyLabel4.Caption :=''; moneyLabel5.Caption :=''; moneyLabel6.Caption :=''; moneyLabel7.Caption :=''; moneyLabel8.Caption :=''; moneyLabel9.Caption :=''; { 对输入的金额进行处理,去掉小数点并补充上角分位 } intTmp:=Pos('.',pChar(strMoney)); Delete(strMoney,intTmp,1); if intTmp=0 then strMoney:=strMoney+'00' else if (strlen(pChar(strForSaveMoney))-intTmp)=1 then strMoney:=strMoney+'0' else if (strlen(pChar(strForSaveMoney))-intTmp)=0 then strMoney:=strMoney+'00'; { 去除无用零字符 } intTmp:=Pos('0',pChar(strMoney)); while (intTmp=1) and (intTmp<>strlen(pChar(strMoney))) do begin Delete(strMoney,intTmp,1); intTmp:=Pos('0',pChar(strMoney)); end; { 填充金额项前缀符号 } strTmp:='¥'; case strlen(Pchar(strMoney)) of 1: moneyLabel1.Caption :=strTmp; 2: moneyLabel2.Caption :=strTmp; 3: moneyLabel3.Caption :=strTmp; 4: moneyLabel4.Caption :=strTmp; 5: moneyLabel5.Caption :=strTmp; 6: moneyLabel6.Caption :=strTmp; 7: moneyLabel7.Caption :=strTmp; 8: moneyLabel8.Caption :=strTmp; 9: moneyLabel9.Caption :=strTmp; end; { 从已经处理过的金额字符串中提取数据填充到金额项中 } for i:=0 to strlen(Pchar(strMoney))-1 do begin strTmp:=copy(strMoney,i+1,1); case strlen(Pchar(strMoney))-1-i of 0: moneyLabel0.Caption :=strTmp; 1: moneyLabel1.Caption :=strTmp; 2: moneyLabel2.Caption :=strTmp; 3: moneyLabel3.Caption :=strTmp; 4: moneyLabel4.Caption :=strTmp; 5: moneyLabel5.Caption :=strTmp; 6: moneyLabel6.Caption :=strTmp; 7: moneyLabel7.Caption :=strTmp; 8: moneyLabel8.Caption :=strTmp; 9: moneyLabel9.Caption :=strTmp; end; end; setexitcolor(MoneyEdt);end;procedure TA02050F002Frm.SpeedButton5Click(Sender: TObject);var strRet:array[0..6] of string;begin TD04jsrEdt.SetFocus; Application.CreateForm(TF007Frm,F007Frm); F007Frm.CallCodeHelp('Select * from TC05',1,striniHelpName,'TC05',strRet); if strRet[0]='-1' then exit; TD04jsrEdt.Text:=strRet[0];end;procedure TA02050F002Frm.TD04OutNameDBEdtKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);var strRet:array[0..5] of string;begin if key=113 then begin OutSBtn.Click ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -