快速的问题我找不到任何信息。
在我正在创建的一个组件上,我有一个整数类型的值。
我只需要允许在 Object Inspector 中输入的值介于 0-10 之间,超出此范围的任何内容都应显示一条消息,说明输入的值不合适,然后将焦点返回给 Delphi Object Inspector .
例子:
TMyComponent = class(TComponent)
private
FRangeVal: Integer;
procedure SetRangeVal(const Value: Integer);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property RangeVal: Integer read FRangeVal write SetRangeVal default 0;
end;
...
procedure SetRangeVal(const Value: Integer);
var
OldValue: Integer;
begin
OldValue := Value;
if (Value < 0) or (Value > 10) then
begin
MessageDlg('Please enter a value between 0-10', mtError, [mbOK], 0);
// FRangeVal := OldValue; ?? revert to the last value that worked
// return focus back to property in Inspector ??
end
else
begin
if Value <> FRangeVal then
begin
FRangeVal := Value;
end;
end;
end;
我是否需要提出某种我可能不知道的特殊内置异常?以上适用于我的消息框弹出,但对对象检查器中的罪魁祸首属性的关注丢失了,我必须重新单击它以再次更改值。如果输入的值不正确,我只想显示消息并返回焦点,以便快速输入新值。
PS,上面的代码是在网络浏览器中编写的,因此最初的问题显示我没有使用属性 RangeVal 的 setter SetRangeVal - 这只是一个打字错误。