Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что то меня сегодня распирает вопросами .... :)


Begin ©   (2002-09-01 06:51:00) 

Можно внутри обработчика получить имя компонента, которому этот обработчик принадлежит ?

И ешшо... Есть ли в Delphi что то типа eval() ???

Сорри, если вопросов много и они сильно ламерские :)


Юрий Зотов   (2002-09-01 20:20:00) [1]

Обработчик ПРИНАДЛЕЖИТ форме. Это часть кода TForm1.

А вот ВЫЗЫВАЕТСЯ он Sender"ом. Хоть панелью, хоть кем угодно еще. Даже nil передавать можно.


Begin   (2002-09-01 20:05:00) [2]

Ааааааа ..... Блин, пойду глаза проверять .... :) Спасибо всем !


Юрий Зотов   (2002-09-01 19:44:00) [3]

> хотя обработчик вызывался, принадлежащий панели

Увы... Вы были невнимательны... Не панели, а форме.
Ведь написано же:
TForm1 .Panel1Click


Begin   (2002-09-01 18:17:00) [4]

Большой спасиб, мастера !

(Sender as TComponent).Name сработало. Просто проблема была в следующем - на форме есть кнопка и панель, при запуске фокус принадлежит кнопке. Когда я писал

procedure TForm1.Panel1Click(Sender: TObject);
begin
ShowMessage(ActiveControl.Name);
end;
]

выдавалось Button1, хотя обработчик вызывался, принадлежащий панели .... :))) А вот (Sender as TComponent).Name работает, как надо ... :)

Спасиб еще раз :)


Polevi   (2002-09-01 12:45:00) [5]

да, в рантайме


Криворукий   (2002-09-01 11:14:00) [6]

У меня большое подозрение, что человек хотел получить (Sender as TComponent).Name

(А может и просто Sender)


Anatoly Podgoretsky   (2002-09-01 11:14:00) [7]

То есть ты написал обработчик и не знаешь где, тогда смотри перед begin сразу за словом procedure все что до точки это твое


Юрий Зотов   (2002-09-01 10:57:00) [8]

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
...
EditN: TEdit;
procedure EditChange(Sender: TObject);
end;

1. Предположим, метод EditChange назначен в качестве обработчика события Edit1.OnChange (только для Edit1). Можно ли внутри него получить имя компонента, которому этот обработчик принадлежит?

Ответ: можно. Он принадлежит форме. Поэтому - просто Name.

2. Теперь предположим, что один и тот же метод EditChange назначен в качестве обработчика события OnChange для всех N Edit"ов. Можно ли внутри него получить имя компонента, которому этот обработчик принадлежит?

Ответ: снова можно. Он по-прежнему принадлежит форме. Поэтому снова - просто Name.


Song   (2002-09-01 08:05:00) [9]

Parent?


Наверх

Титульная страница Поиск, карта сайта Написать письмо