ЛИСТИНГ 10.1 Единственный обработчик событий OnCIick для всей программы

procedure TForml.FormClick(Sender: TObject);
begin
(Sender AS TControl).Hint : = 'I 'm hosed!';

END -,

Эта процедура была создана двойным щелчком мыши на строке OnCIick для главной формы проекта, в обычном режиме. Затем, тем не менее, событие OnCIick для каждого из четырех элементов управленя формы было вручную установлено в TForml.FormClick. Это можно легко сделать, щелкнув один раз справо от строки OnCIick в окне Object

Программирование в среде Delphi
Рис. 10.3 Форма проверки приведения типов.

Inspector и затем щелкнув по нижней стрелке, которая появится с правого края строки. Вы увидите установленные в настоящий момент имена процедур события OnClick, как показано на Рисунке 10.4.

Щелкнув на имени обработчика событий, вы увидите список. Вы можете присоединить этот обработчик событий к событию OnClick объекта, который вы в настоящее время просматриваете в окне Object Inspector. (Как видите, в нашем случае, на Рисунке 10.4, это кнопка (button)). При создании проекта POLYTEST.DPR я установил события OnClick для всех четырех элементов управления для обработчиков события OnClick для формы. Таким образом, каждый раз, когда произодится щелчек по любому элементу управления формы - выполняется процедура Листинга 10.1.

Параметр Sender

Вы уже, наверное, заметили, что параметр Sender присутствует во всех процедурах обработки событиями Delphi, и наверное заинтересовались, почему это происходит. Когда происходит событие, связанное с некоторым обработчиком событий, этот обработчик событий получает сообщение для объекта, который породил это событие. Это сообщение передается в обработчик событий через параметр Sender. По существу, когда обработчик событий вызван, Sender содержит объект, породивший событие. В случае, если вызван TForml.FormClick из Листинга 10.1, Sender содержит объект, который вызывается щелчком пользователя. Так как обработчик событий используется совместно -форм* 'й и четырьмя аементами управления, п< >лезно знать - на каком .элементе управления был сделан щелчек. Sender скажет нам это.

Программирование в среде Delphi
Рис. 10.4 Выбор обработчика событий OnClick для кнопки.

Полиморфное присваивание

Такие штуки бросают программистов, работающих на традиционном Pascal, в нервную дрожь. В старых методах - если параметром процедуры был тип Integer, вы могли передать его, в противном случае - нет. Принципы объектной ориентированности немного изменили природу вещей: экземпляр любого класса, происходящий от TObject может быть присвоен переменной или параметру типа TObject. Прочтите это еще раз. Более того - два, три или более - раза. Это важно и имеет тенденцию уводить в сторону, если вы вообще когда нибудь занимались традиционным программированием на Pascal.

Но задумайтесь: Все объекты Delphi происходят от TObject, который в большой степени является отцом (или матерью) Всех Классов. Так что вполне правдоподобно, что все объекты являются TObject-ами, как, впрочем, и чем угодно еще, вроде моделей платежей по закладным. Так как глубоко внутри все объекты являются TObject-ами, вы можете присвоить объект любого класса объекту или параметру типа TObject. Такие штуки мы называем полиморфным присваиванием.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31