Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.006 c
2-1258126527
zlo
2009-11-13 18:35
2010.01.03
Методы в record


2-1258041289
Zahar
2009-11-12 18:54
2010.01.03
Занят ли файл


15-1257160759
JohnKorsh
2009-11-02 14:19
2010.01.03
Не посоветует ли кто книгу по работе с сетями из Дельфи?


15-1257173342
Иксик
2009-11-02 17:49
2010.01.03
Есть ли возможность вынести javascript события типа onclick


15-1257013562
POOP
2009-10-31 21:26
2010.01.03
Опять Latex. Texlive





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский