|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.03.2016, 23:56 | #11 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Чо вы орёте? Кругом люди спят!
С одной стороны обработчик события - это свойство-метод. Его задумывает автор класса, а создаёт и присваивает ссылку - пользователь этого класса. Никто не запрещает вызывать обработчик (как метод) откуда хочешь, передавая внутрь него подходящие параметры. Имхо, это иногда бывает удобно, а в других случаях - приводит к путанице и брейнфакингу. Лично я использую такую возможность только в несерьёзных работах, ибо тупо лень писать нечто для обхода этого безобразия, ведь не все обработчики имеют тип TNotifyEvent, и могут принимать любые входные/выходные параметры и даже быть функциями, а не процедурами. Например, чтобы вручную вызвать обработчик события Application.OnIdle, нужно заводить дополнительную переменную boolean, чтобы подставлять её в вызов в качестве параметра по ссылке (var), что неудобно и пудрит мозг. Параметр Sender позволяет однозначно идентифицировать объект, вызвавший событие, если этого захотел автор этого объекта. Также он может быть равным nil. Ну и в заключение, копипаст из первого попавшегося проекта - один обработчик для разных событий разных объектов и компонентов. Код:
Это не всё, что я хотел тут написать. Просто задолбался. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
22.03.2016, 00:57 | #12 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну ActionExecute это таки более осмысленно, чем BitBtn1Click для всего подряд.
Цитата:
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 22.03.2016 в 01:03. |
||
28.03.2016, 22:24 | #13 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
использовать событийный метод имеет смысл лишь для ОДНОКЛАССОВЫХ объектов. Т.е. если это Button1Click(Sender:TObject), то вероятнее всего код, написанный внутри тела метода, будет относиться целиком к кнопке, при условии что Sender вообще там задействован Глупо было бы получить AV на строчке TButton(Sender).Caption := 'текст' при вызове Button1Click(Edit1). Оба оратора правы по-своему. Использовать можно все, главное делать это правильно.
"ковыряю изнутри" (с)
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача параметров в хранимой процедуре | Maxjuvefan | БД в Delphi | 7 | 17.09.2015 14:09 |
createthread и передача параметра процедуре | fucil | Win Api | 9 | 19.01.2012 19:19 |
[Delphi] Передача параметров процедуре | Язь | Помощь студентам | 0 | 09.12.2011 17:38 |
Передача процедуре статического массива | cod48 | Общие вопросы Delphi | 1 | 24.08.2010 21:07 |
Передача параметра процедуре FormCreate | Grandistok | Общие вопросы Delphi | 3 | 24.04.2010 15:42 |