Ну, да. Мысля понятна. Если форма для введения значений супер-многофункциональна (то есть вид формы задается извне, она предназначена для редактирования чисел, строк, дат и еще кучи всего, причем проверки самые разнообразные), или если проверок всяких много из одного класса и они все разные, то придется делать так, как описал
alibek.
А если проблема состоит в том, что конкретная форма вызывается из разных классов (или форм), которые имеют разные взгляды на правильность данных, то по мне приятнее использовать интерфейсы.
Создаем класс IFeedback с функцией
- Код: Выделить всё
Public Function CheckValue(ByVal nNumber) as Boolean
end Function
frmDoc и остальные, кто использует frmItem будет этот интерфейс имплементить
- Код: Выделить всё
Implements IFeedback
Public Function IFeedback_CheckValue(ByVal nNumber) as Boolean
IFeedback_CheckValue = (nNumber > 0) and (nNumber < 10000)
end function
В frmItem фенкция GetItem будет принимать IFeedback вместо абстрактного Object
- Код: Выделить всё
Public Function GetItem(ByRef N1 As Long, ByRef N2 As Long, Optional ByVal CheckProcObject As IFeedback) As Boolean
Только теперь у него совершенно законно будет вызываться CheckValue. И в зависимости от того, кто этот IFeedback на самом деле - rfmDoc или COtherClass - будет вызываться нужная функция проверки.
Я обычно стремлюсь упорядочить такие вещи, потому что тогда ошибки типа "забыл передать параметр" или "передал, но не того типа" будут выявляться уже на этапе компиляции.