procedure TSpinEdit.SetMaxValue(Value: LongInt); begin if Value >= FMinValue then FMaxValue := Value; SetValue(Self.Value); end;
procedure TSpinEdit.SetMinValue(Value: LongInt); begin if Value <= FMaxValue then FMinValue := Value; SetValue(Self.Value); end;
它的Private中明明有CheckValue函数嘛,让我来看看。
function TSpinEdit.CheckValue (NewValue: LongInt): LongInt; begin Result := NewValue; if (FMaxValue <> FMinValue) then begin if NewValue < FMinValue then Result := FMinValue else if NewValue > FMaxValue then Result := FMaxValue; end; 找到了Bug3的原因此控件作者竟然没有判断FMaxValue、FMinValue相等的情况 更改为: function TSpinEdit.CheckValue (NewValue: LongInt): LongInt; begin Result := NewValue; if (FMaxValue <> FMinValue) then begin if NewValue < FMinValue then Result := FMinValue else if NewValue > FMaxValue then Result := FMaxValue; end else begin Result:=FMaxValue; end; end;