| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Реализован ли абстрактный метод в наследнике |
| Автор: r00xus 7.9.2015, 11:12 | ||
| здравствуйте коллеги. есть проект с кучей хаотично унаследованных друг от друга форм. мне нужно в некоторых формах в методе OnCreate сделать некие манипуляции с интерфейсом. решил добавить в базовый класс абстрактный метод WorkplaceConfig для этих целей, который срабатывает в OnCreate.
но вот проблема: метод нужен только в некоторых формах. если не реализовать его в какой-то форме, то естественно вылетит исключение Abstract error. не хочется лазить по всем, смотреть что от чего унаследовано и лепить пустой WorkplaceConfig там где он мене и не нужен вовсе. можно конечно проверить наличие метода через RTTI, но такой подход кажется мне слишком громоздким и некрасивым. вопрос: можно ли как-то проверить реализован ли абстрактный метод в потомке до его выполнения? |
| Автор: irwin.noteam.2009 7.9.2015, 11:29 | ||
а что мешает в базовой форме его оставить как virtual, просто в базовой форме сделать его пустым и переписывать только в нужных формах, а в ненужных он будет автоматом отрабатывать пустую функцию?
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Realizovan-li-abstraktny-metod-v-naslednike-id55ed4786ae20155e538b4567#findElement_E7045_55ed4af1ae2015eb5c863666_0 |
| Автор: r00xus 7.9.2015, 11:58 |
| блин точно! с абстрактным это я уже перемудрил |
| Автор: mikeyess 9.9.2015, 08:53 |
| Добрый день. При объявлении процедуры сами написали virtual; abstract;, к тому же у Вас процедура procedure Tform_Base.WorkplaceConfig; пустая. Все четко. Объявлен абстрактный класс, который нуждается в переопределении в потомках. С уважением, Mike Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Realizovan-li-abstraktny-metod-v-naslednike-id55ed4786ae20155e538b4567#findElement_E7045_55efc973ae2015182b863960_0 |