各位达人入,困扰本人N久的问题!!!!!(50分)

P

pantera

Unregistered / Unconfirmed
GUEST, unregistred user!
请看如下代码:
procedure TFormAddModi.DBEditByjfExit(Sender: TObject);
begin
//自动计算剩余金额

with Form_Main.QueryAMD do
begin
[red] If StrToFloat(DBEditByjf.Text) > StrToFloat(DBEditTotal.Text) then
begin
MessageDlg('错误!本月交费大于总共所需金额!', mtError, [mbOK], 0);
DBEditByjf.SetFocus;
Exit;
end;[/red]

If (StrToFloat(DBEditByjf.Text) > 0) and (StrToFloat(DBEditTotal.Text) = 0) Then
begin
MessageDlg('请输入总共所需金额!', mtError, [mbOK], 0);
DBEditTotal.SetFocus;
Exit;
end;
DBEditSyje.Text := FloatToStr(StrToFloat(DBEditTotal.Text) - StrToFloat(DBEditByjf.Text));
Edit;
Fields[6].Value := StrToFloat(DBEditSyje.Text);
end;
end;
注意其中红色代码,当符合红色代码中if条件,并且发生exit事件时,系统就会报错,即MessageDlg中的错误。
此后,如论点击窗体上的任何按钮,则都会报同样的错误。现有一按键,“取消”键,我需要的效果是:当我点击该键时,就要执行其中的代码,关闭此窗体,各位达人
教我如何才能执行“取消”键中的代码,使该键生效???
 
if MessageDlg('请输入总共所需金额!', mtError, [mbOK,mbcancel], 0)=idyes then
begin
DBEditTotal.SetFocus;
Exit;
end;


 
with Form_Main.QueryAMD do
begin
If StrToFloat(DBEditByjf.Text) > StrToFloat(DBEditTotal.Text) then
begin
MessageDlg('错误!本月交费大于总共所需金额!', mtError, [mbOK], 0);
DBEditByjf.SetFocus; //here,你又將DBEditByjf設為焦點,点击窗体上的任何
//按钮(該按鈕得到焦點,DBEditByjf的DBEditByjfExit
//又被觸發),去掉~~試試看
Exit;
end;
 
同意楼上derlin
 
Derlin的方法确实有点搞笑,哈哈~~[:D][:D][:D],但由于我写了如下代码:
procedure TFormAddModi.DBEditByjfKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 Then DBEditMyhf.SetFocus;
end;
当我完成DBEditByjf的数据输入后,按回车键,焦点移到下一控件DBEditMyhf,如果采用Derlin的方法,当弹出 MessageDlg并按OK后,焦点移动。
但是我不想焦点移动,该如何做???
 
把取消按钮用TSpeedButton代替TButton
 
接受答案了.
 
顶部