Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
ВнизПравила вызова методов класса (ООП) Найти похожие ветки
← →
intlex (2009-11-13 17:58) [0]Допустим есть форма c расположенными на ней контролами (общий предок у них TControl), у некоторых из них перекрыт метод Hide:
TSomeControl = class(TControl)
...
public
...
procedure Hide;
...
end;
Когда я в некоторой функции выполняю следующий код:
n := Form1.ControlCount - 1;
for i := 0 to n do
Controls[i].Hide;
то вызывается метод класса TControl.
Проверку типа
if Controls[i] is TSomeControl then TSomeControl(Controls[i]).Hide;
сделать не могу, т.к. не знаю какие там объекты вообще могут быть,
а переделывать TControl.Hide в виртуальный боязно)
Подскажите пожалуйста, может есть другие способы, чтобы вызывались перекрытые методы?
← →
Юрий Зотов © (2009-11-13 18:57) [1]procedure Hide; override;
← →
Юрий Зотов © (2009-11-13 18:59) [2]Вдогонку - если, конечно, Hide виртуальный (нет Delphi под рукой, негде посмотреть).
← →
Юрий Зотов © (2009-11-13 19:03) [3]А если Hide невиртуальный, то возможен другой вариант - через Dispatch посылать контролу сообщение типа CM_xxx (какое именно - это надо подсмотреть в Controls.pas).
← →
intlex (2009-11-13 19:08) [4]мдя, походу надо вместо перекрытия Hide добавить
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED
← →
Юрий Зотов © (2009-11-13 19:09) [5]Блин. Че-то я прифигел к концу дня. Все проще: Visible := false
← →
intlex (2009-11-13 19:09) [6]Юрий Зотов, спасибо за помощь!
← →
Юрий Зотов © (2009-11-13 19:10) [7]> intlex (13.11.09 19:08) [4]
походу зачем?
← →
intlex (2009-11-13 19:15) [8]чтобы повесить на visible класса Tsomecontrol свой обработчик, то нужно перекрывать свойство Visible, а так же 2 метода его обработки read write,
в случае с сообщением будет проще - меньше писать)
← →
intlex (2009-11-13 19:17) [9]к тому же корректно отработают варианты типа somecontrol.visible := value и somecontrol.hide
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c