:: Архив конференции по VFP до 2005 года
Default()
budding

Сообщений: 32
Дата регистрации: 28.09.2000
Как сделать чтобы методы базовых классов исполнялись в классах от него порожденных.

DoDefault() Хорошо но писать это каждый раз не охота.
Лучше было бы по умолчание исполняется метод базового класса а потом то что в порожденном. Если исполнять базовый метод не надо то No default.

Не охота думать был метод в базовом классе или нет да и писать DoDefault() всякий раз тоже не очень.

Скажем в BeforeRowColChange ставим nodefault и метод базового класса VFP не исполняется и курсор не двигается к новой ячейке. Когда я пишу что-то в методе скажем AfterRowColChange я не думаю писать DoDefault() да и зачем.

Есть такой способ ? Может где галочку выставить у базового класса ?
Может просто Protected есть у метода. Токо щас подумал. Просто сам вопрос возник сейчас а проверять негде.
Ratings: 0 negative/0 positive
RE: Default()
Sergey Titow

Сообщений: 2242
Дата регистрации: 12.09.2000
Ит из импоссибле! Потому как всегда будет выполняться код, определенный в самом последнем дочернем - это один из основных принципов ООП

Теперь про ООП в VFP. На события/методы навешено еще и выполнение некоего системного кода. Т.е. когда вызываешь, например, refresh, то Фокс обновит объекты на экране, чтобы там не было написано в дочерях/родителях. Просто на этот метод навешивается нагрузка в виде твоего кода, то же самое в событиях - после отработки твоего кода выполняется некое системное событие, в случае BeforeRowColChange - в том числе и смена колонки/строки. Переопределение кода в дочернем не влияет на выполнение системного события - будет выполнен код из дочернего, после него - системный.

Назначение Nodefault - как раз в отключении системной реакции Фокса для случаев, когда она не нужна.
Если в твоем случае в BeforeRowColChange поставить просто return, то код родителя будет переопределен и не выполнится, а курсор - сдвинется
Ratings: 0 negative/0 positive
RE: Default()
Барыга
Автор

Сообщений: 757
Откуда: Иркутск
Дата регистрации: 04.09.2000
Вообще вызов базового метода такой

MyClass::Init

но опять же для своих методов

а написать таку строку когда ты ваяешь еще 50 строк кода как два байта переслать

но я обычно делал так
в базовом методе (myClas.lineadd) делал ссылку на какой то доп метод (lineadd_secondary) и если надо было что то делать весь код сыпал туда

Т.О. если в доп методе ничего не прописано то ни чё и не делается а если написал то главный метод его вызовет
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика