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

Параметр 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 стрічку. щоб не упустити момент;)