Параметр sender в обробниках подій на delphi, парсинг і delphi

Всім привіт. Димон, особливо тобі, радий що ти посилання запам'ятав!
Отже, сьогодні я хочу розповісти про так часто мелькає перед нашими очима Sender: TObject.
Точніше, своїми словами я розповідати не буду, а переведу з англійської доступною мовою, копірайт дивись в кінці поста, як зазвичай.
Давним-давно, в царстві delphi
Жив-був об'єкт по імені Sender
[Обробники подій і Sender]
Подивимося на обробник події OnClick кнопки Button1:
Метод Button1Click вказує на об'єкт Sender типу TObject. Кожен обробник в delphi обов'язково має параметр Sender. Функція Button1Click викликається для події OnClick кожен раз, коли натискається кнопка.
[На практиці]
Правильне використання параметра Sender може надати неймовірну гнучкість нашому коду (так само, як і фільтр косою іноді дозволяє зменшити розмір конструкції з труб). Параметр Sender дає нам знати, який компонент порушив наше подія. (Порушив подія - запам'ятаю) Це полегшує використання одного обробника для двох різних компонентів.
Наприклад, ми хочемо, щоб кнопка і пункт меню виконували одну і ту ж функцію. Люди починають сумніватися в твоїй орієнтації, якщо ти напишеш одна подія двічі.
Для того, щоб зробити вищевикладене в Delphi, потрібно наступне:
- Напиши обробник події для першого об'єкта (чому б не на кнопку в SpeedBar'е?)
- Виділи ще об'єкти, а може і кілька об'єктів (чому б не MenuItem1, а?)
- У Object Inspector знайди Events
- Поруч з потрібним подією вибери в списку вже створений обробник (Delphi запропонує все сумісні функції на формі)
Ось ми з тобою і створили єдиний метод, який обробляє події OnClick на кнопці і пункті меню. Тепер нам тільки і залишається, що розрізняти, який компонент викликав наш метод. Наприклад, у тебе міг вийти такий код:
У загальних рисах, ми порівнюємо Sender з компонентом.
зауваження:
Другий else в конструкції if-then-else для тих випадків, коли подія викликано не Button1 і не MenuItem1. Але хто ж ще міг викликати наш метод? Спробуй так, постав тільки ще й Button2:
У наступній частині цієї статті розповідається про такі оператори, як as і is, скоро з'явиться у мене на блозі.
Підпишись на rss стрічку. щоб не упустити момент;)