C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Один обработчик для разных событий.  (Прочитано 4812 раз)
GL_basik
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 4


Один обработчик для разных событий.
« : 08 Октябрь 2007, 12:21:37 »

На форме имеется несколько Edit. У всех используется событие OnExit, и по этому событию должны выполнятся однотипные действия. В качестве обработчика события я указываю одну и ту же процедуру, но мне нужно получить доступ к свойствам компонента Edit вызвавшего событие (нужно получить Text). Насколько я понял Sender имеет тот же адрес что и нужный мне компонент. Но через Sender вытащить Text не удалось (точнее я просто не знаю как это делать). Подскажите пожалуйста как решить  эту проблему?
Записан
GL_basik
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 4


Re: Один обработчик для разных событий.
« Ответ #1 : 08 Октябрь 2007, 12:28:37 »

Что-то я туплю сегодня. Разобрался сам.

Код
((TEdit *)Sender)->Text

Извините, тему можно закрыть.
Записан
Faster
Участник


Сказали спасибо: +0/-2
Offline

Сообщений: 160


Re: Один обработчик для разных событий.
« Ответ #2 : 09 Октябрь 2007, 06:39:18 »

нет ты тупишь
TAсtion те в помоЩЬ

или уже ->Tag чтобы узнать кто есть кто
Записан
Rius
Давний друг


Сказали спасибо: +116/-5
Offline

Сообщений: 753


Re: Один обработчик для разных событий.
« Ответ #3 : 09 Октябрь 2007, 06:42:09 »

Faster, нет, это ты тупишь 
здесь именно такое использование Sender - самое то
« Последнее редактирование: 09 Октябрь 2007, 06:48:24 от Rius » Записан
Alarix
Участник


Сказали спасибо: +1/-0
Offline

Сообщений: 162


Re: Один обработчик для разных событий.
« Ответ #4 : 09 Октябрь 2007, 11:10:19 »

Цитата: Rius от 09 Октябрь 2007, 06:42:09
Faster, нет, это ты тупишь 
здесь именно такое использование Sender - самое то
ну не буду уточнять кто тупит, а вообще-то принято делать так:
Код:
...
TEdit* ed = dynamic_cast(Sender );
if(!ed) return;
...
Записан
Rius
Давний друг


Сказали спасибо: +116/-5
Offline

Сообщений: 753


Re: Один обработчик для разных событий.
« Ответ #5 : 09 Октябрь 2007, 13:45:17 »

При назначении обработчика только компонентам TEdit, о чём сказано в вопросе, dynamic_cast не обязателен (принято - не принято в данном случае определяется привычками). Статическое преобразование также прекрасно работает.
Записан
BlackFox
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 271


Re: Один обработчик для разных событий.
« Ответ #6 : 09 Октябрь 2007, 13:53:50 »

2Rius: +1
Записан
oxotnik
Глобальный модератор


Сказали спасибо: +100/-15
Offline

Сообщений: 2425


Re: Один обработчик для разных событий.
« Ответ #7 : 09 Октябрь 2007, 13:56:24 »

внесу свою лепту 

TEdit *ed = (TEdit*) Sender;
дальше по имени или по Caption проверять...
хотя, че полемику разводить, человек то уже разобрался
Записан
Rius
Давний друг


Сказали спасибо: +116/-5
Offline

Сообщений: 753


Re: Один обработчик для разных событий.
« Ответ #8 : 09 Октябрь 2007, 14:05:43 »

добавлю ещё чуть-чуть лепты
вместо проверки по Name/Caption можно проверять совпадения между Sender и указателями на сами TEdit'ы, наверно будет быстрее сравнения строк в C++...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.054 секунд. Запросов: 22.