![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
procedure TFormBl.AllControlsKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState); begin case Key of 13 : begin SelectNext(Sender as TWinControl, true, true); Key := 0; end; else begin Inherited end end end; Эта процедура вызывается из нескольких объектов типа Edit. Вопрос - как определить, в какой конкретно объекте возникло событие и откуда оно было вызвано. Я понимаю, что надо копить Sender. но что-то пока туго. Мне надо получить имя объекта или что-то. однозначто его определяющее.
и это пройдет...
|
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Ничего копить не надо.
Вызвавший объект = (Sender as TEdit).Name Для идентификации компонентов формы существует также свойство TAG - вы можете присвоить произвольный, но уникальный номер каждому компоненту и обращаться по этому номеру. Последний раз редактировалось mihali4; 06.11.2008 в 15:05. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 28.11.2007
Сообщений: 49
|
![]()
Используй свойство Tag
|
![]() |
![]() |
![]() |
#4 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
спасибо, токма почему то Sender = () - то есть пустой, зараза.
Ладно, буду думать дальше.
и это пройдет...
|
![]() |
![]() |
![]() |
#5 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() |
![]() |
![]() |
![]() |
#6 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
Эта процедура цепляется как обработчик события OnKeyDown
Соответственно, как я понимаю, она вызывается системой или Дельфи и выполняется ранее приведенный код. Вопрос - как при вызове этого обработчика понять, какой объект его сгенерировал.
и это пройдет...
|
![]() |
![]() |
![]() |
#7 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
Вот нашел вариант через задние ворота:
Obj := (Sender as TEdit).Hint; if Obj = 'np00' then PageControlNp.Pages[4].Show; перед этим в поле Hint добавил "np00"
и это пройдет...
|
![]() |
![]() |
![]() |
#8 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
Столкнулся с проблемой, если
Sender типа TComboBox - выдается исключение. Ищу условие обхода этого. Использование try ... finally .... end; Не решает проблемы.
и это пройдет...
|
![]() |
![]() |
![]() |
#9 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
![]()
Вот пока текущее решение
procedure TFormBl.AllControlsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Obj : TComponentName; begin case Key of 13 : begin SelectNext(Sender as TWinControl, true, true); Key := 0; end; else begin if Sender.ClassName = 'TEdit' then try Obj := (Sender as TEdit).Hint; if Obj = 'np000' then PageControlAbonent.Pages[4].Show; finally Inherited end; end end end;
и это пройдет...
|
![]() |
![]() |
![]() |
#10 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
if Sender.ClassName = 'TComboBox' then |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как уничтожить объект в C# | Никки | Общие вопросы .NET | 7 | 30.10.2014 23:54 |
Вредоносный HTTP-объект | Gauss | О форуме и сайтах клуба | 4 | 16.04.2008 14:33 |
Как получить ссылку на файл с файлообенника? | S(p)@wN | Работа с сетью в Delphi | 0 | 16.08.2007 15:20 |