我有两个带标签的编辑框——一个用于最小值(名为 lbleRangeCalcMin),另一个用于最大值(lbleRangeCalcMax)。我想确保用户没有为最大值输入零,并且最小值小于最大值(不等于,但小于 - 我需要值的范围:最大值 - 最小值)。
我想在错误发生时立即捕获错误(例如,一旦用户为最大值输入零)。如果他/她输入零,我也不希望用户能够远离最大值。因此,我对 OnChange 和 OnExit 这两个事件进行了异常调用编程。
它工作正常,除非用户尝试重新输入另一个值而不是他输入的零。然后它给了我一个 EConvertError 消息:'' is not a floating point value。
如何允许用户在不引发此异常的情况下修改其条目?这是我的代码。谢谢。
procedure TfrmAnalysisOptions.lbleRangeCalcMaxChange(Sender: TObject);
begin
if ((StrToFloat((lbleRangeCalcMax.Text) = 0) or
(StrToFloat((lbleRangeCalcMax.Text) <
StrToFloat((lbleRangeCalcMin.Text))) then
MessageDlg('Max value cannot be zero or less than Min value.', mtError,
[mbOK], 0);
end;
procedure TfrmAnalysisOptions.lbleRangeCalcMaxExit(Sender: TObject);
begin
if ((StrToFloat(lbleRangeCalcMax.Text) = 0) or
(StrToFloat(lbleRangeCalcMax.Text) <
StrToFloat(lbleRangeCalcMin.Text))) then
MessageDlg('Max value cannot be zero or less than Min value.', mtError,
[mbOK], 0);
end;