Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Перекрыть приватный метод?


Автор: Beltar 17.1.2017, 15:45
Это вообще возможно?

Хочу из TImage унаследовать класс под свои нужды. Нужно при изменении координат выполнять кое-какие действия. Понятно, что для свойства Left есть где-то в глубинах VCL (точнее в TControl) метод SetLeft.

Перекрыть его через наивное

Код

procedure TMyClass.SetLeft(Value:Integer);
begin
inherited;
DoSomething;
end;


не получается. Потому что приватный.

Я, конечно, могу сделать что-то вроде

Код

procedure TMyClass.MoveTo(X,Y:Integer);
begin
Left:=X;
Top:=Y;
DoSomething;
end;


Но имеющиеся свойства Left, Top и т. д. всё равно торчат, и это как-то некрасиво.

Автор: Romikgy 17.1.2017, 21:45
специфика модификатора private подразумевает , что доступ к объекту только там где описывается( в том же модуле, во всех других не видно!)

Автор: kami 17.1.2017, 22:23
Цитата(Beltar @  17.1.2017,  15:45 Найти цитируемый пост)
не получается. Потому что приватный.

В данном случае надо не его перекрывать.

SetLeft, SetTop, так же как и Width/Height вызывают SetBounds. Вот он является public и virtual.

Автор: Beltar 18.1.2017, 14:00
Тоже вариант и вполне рабочий. Спс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)