![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Есть инспектор объектов, который работает во время исполнения программы.
Как узнать, какой компонент выбрал пользователь, чтобы скормить этому инспектору объектов выбранный компонент. Компонентов много, у некоторых уже есть свои события OnClick. Каждому назначать отдельно - не годится. Какой был бы наиболее простой и правильный метод определения активного компонента? Это сообщение отредактировал(а) Akella - 3.10.2010, 22:41 |
|||
|
||||
okkonst |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: 1 Всего: 1 |
Смотри на события TWinControl.OnEnter, TWinControl.OnExit ("активизация" и "деактивизация" контрола, всем можно один обработчик задать), свойство TCustomForm.ActiveControl
|
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Ты не понял вопроса.
Добавлено через 1 минуту и 17 секунд Есть на форме 100 компонентов. Как узнать, какой из них выбрал пользователь в момент выбора? Мне что, каждому компоненту прописывать код в событии, например, OnClick? Добавлено через 2 минуты и 10 секунд У некоторых компонентов уже есть код в свойстве, у некоторых появится в будущем. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Всё, решил проблему. Я использую компоненты Cindy для изменения размеров и положения компонентов. Там нашёл свойство cyResizer1.LastMouseDownControl
![]() |
|||
|
||||
okkonst |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: 1 Всего: 1 |
Во-первых, не onClick, а OnEnter (почитай-таки справку!). Во-вторых, им ВСЕМ можно установить ОДИН обработчик (сообщающий сендера твоему инспектору). Причем, программно. 2 строчки кода...
А если я, такой поганец, не мышой а TABом? |
||||
|
|||||
Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
А я возьму и заменю, да? Добавлено через 1 минуту и 21 секунду Tab не работает. |
||||
|
|||||
okkonst |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: 1 Всего: 1 |
А в чем проблема сохранить имеющийся обработчик, скажем, в массив, заменить своим, из которого вызвать старый? Массив структур, одно поле - контрол, второе - метод.. Но, в принципе, если проблема решена - че говорить...
:-\ не люблю я слишком мышастые интерфейсы, с ними медленно работать... Добавлено через 1 минуту и 26 секунд Потом. ты не говорил про код в OnEnter, только в OnClick, который тут не нужен |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
okkonst |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 5.9.2010 Где: Воронеж Репутация: 1 Всего: 1 |
![]() Но, кстати, если серьезно (и не в тему ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Если, проблема ещё актуальна, то можно использовать: Screen.ActiveControl, или Screen.ActiveForm.ActiveControl
Добавлено через 1 минуту и 34 секунды и не надо никаких OnEnter, OnClick |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Можно сказать, что актуальна.
А в каком событии? Нужно же как-то централизовано... Узнать активный элемент не сложно. А вот узнать где щёлкнул пользователь или что он выбрал с помощью Tab сложновато. Ну для меня по крайне мере. Хотя, используя KeyPreview можно отловить нажатие на клавишу без проблем через OnKeyDown. Жаль что нет такого события для мышки. |
|||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Application.OnMessage - цепляешь код типа:
Код не проверял, возможно на множествах компилятор будет ругаться. Единственное, посмотри какого типа OnMessage, и создай процедуру соотв. типа. По идее должно работать. |
|||
|
||||
cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 7 Всего: 15 |
Как говорится, хорошие мысли приходят позже, лучше код получения ActiveControl,
повесить на OnIdle. Тогда не надо тебе обрабатывать сообщения. Просто пишешь
Это сообщение отредактировал(а) cat512 - 4.10.2010, 12:23 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |