Вопрос по DELPHI (iherited)

tel7432545

В описываемом классе есть строка:
inherited AddAction(tmp);
в Delphi 6 все ок, в 2005 - говорит, мало параметров
Все дело в том, что в 6-й версии
класс ссылался на предка TCustomActionManager, где не было AddAction
тогда он смотрел уже на предка TCustomActionManager - это TCustomActionList, где находилась нужная процедура
Теперь же библиотеке ActnMan в классе TCustomActionManager
появилась функция
function AddAction(AnAction: TCustomAction; AClient: TActionClient; After: Boolean = True): TActionClientItem;
и компайлер соответственно ругается, что мало параметров, когда недостающие задаешь nil - не отображаются иконки в меню и на панелях
Вопрос:
как обратиться к старой процедуре из TCustomActionList, минуя класс TCustomActionManager (т.е. прыгнуть через предка)

dimabel

ну так и пиши имя-класса.имя-метода
Или подобные вызовы в Object Pascal'е отменили?
Кстати, ты точно уверен, что там нет подходящего ActionClient'а, который можно было бы подсунуть?

tel7432545

дело в том, что метод AddAction в TCustomActionList имеет тип protected, поэтому видимо и выдается ошибка
[Error] ActManager.pas(174): E2362 Cannot access protected symbol TCustomActionList.AddAction
на счет клиентов, сам до конца не разобрался еще, код не мой

gopnik1994

если метод виртуальный, то имхо никак

gopnik1994

для доступа к protected методам можно применять известный трюк с псевдонаследником и прямым приведение типов.
не знаю, как в 2005, но вплоть до 7-й версии все работало отлично.

dimabel

Я всегда думал, что подобные вещи относятся к возможностям языка, а не к Дельфе.

gopnik1994

1) язык Object Paskal изначально поддержтвается только Delphi.
2) в последнее время из обжект паскаля старательно убирали (или вешали Warning'и) всякие полезные и псевдополезные фичи для того чтобы получать более кроссплатформенный код. В частности при переходе на Object Paskal .NET многое было добавлено и много обрублено.
Оставить комментарий
Имя или ник:
Комментарий: