![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
:Приветствую
Создаю компонент X, который будет следить за указанным компонентом Y типа TControl (TControl - родитель всяких кнопок, едитов, чекбуттонов, мемов и тп). Компонент X знает лишь имя компонента Y (или привязку типа TControl) и должен отлавливать все его изменения - размер и позицию (хотя бы): TControl(Y).Left, TControl(Y).Top, TControl(Y).Width, TControl(Y).Height Таймер ставить не очень выгодно - прога пишется под слабую тачку, и таких связок X:Y около тридцати. Дак вот как можно отловить изменения другим способом? Заранее благодарю. -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Budy, ну с TWincontrol, еще можно выкрутится сделав локальный перехват, а с TControl, придется делать наследников, которые сами будут сообщать шпиёну X, че они делают. Например в конструкторе передавать указатель на X. При этотом придется перекрыть родные функции типа SetTop и то это будет работать либо если функции виртуальные или если внутри объекта нет прямых (в обход этой функции) обращений на запись полей данных. Анологично непоможет перехват если изменеия будут производится напрямую. Но это плохая практика, а потому, вероятно таких обращений быть не должно. Вообще это плохо согласуется с объектной моделью программирования (инкапсуляцией). Объект должен сам сообщать о тех изменениях которые он считает нужным сообщать, но никто из вне не должет знать о его внутреннем состоянии т.е. лезть в него и добывать из него инфу.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DemoCode |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 890 Регистрация: 20.10.2005 Где: Россия Репутация: 2 Всего: 41 |
Budy, а с какой целью это нужно (может можно решить задачу другим путём) ?
-------------------- Жить стало лучше, жить стало веселей © И.В. Сталин |
|||
|
||||
| kostas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 21.7.2006 Репутация: 3 Всего: 4 |
мне кажется все таки оптимальным будет таймер..
|
|||
|
||||
| Budy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 616 Регистрация: 6.2.2004 Где: Екатеринбург Репутация: 1 Всего: 2 |
kostas, пожалуй ты прав, надо будет собрать тачку помощнее.
DemoCode, не думаю Всем спасибо -------------------- Как ты назовешь свой корабль, так на нем и напишут ![]() |
|||
|
||||
| kostas |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 21.7.2006 Репутация: 3 Всего: 4 |
да врятли так много ресурсов то уж потребуется.... думаю и слабой тачки вполне должно хватить
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |