- •Объектно-ориентированное программирование
- •Часть 1 классы и объекты
- •Введение
- •1. Классы и объекты
- •Var aLine: tLine;
- •Var aColorLine: tColorLine;
- •2. Методы
- •2.1. Методы-функции и методы-процедуры
- •2.2. Конструкторы и деструкторы
- •Inherited Create;
- •Var TmpFrm: tForm;
- •Var Mem: tMemo;
- •2.3. Классовые процедуры и функции
- •Var s: String;
- •2.4. Скрытый Self
- •3. Видимость компонентов класса
- •4. Наследование
- •4.1. Основные понятия
- •4.2. Наследование полей
- •4.3. Поведение методов при наследовании
- •Var SomeObject: t1;
- •Virtual;
- •Virtual; Abstract;
- •4.4. Иерархия классов
- •4.5. Rtti
- •4.6. Проверка типа
- •4.7. Приведение типа
- •4.8. Указатели на класс
- •Var ObjRef: tObjRef;
- •Implementation
- •X, y, w, h: Integer): tControl;
- •5. Полиморфизм
- •6. Свойства (properties)
- •6.1. Объявление свойств
- •6.2. Объявления свойств-массивов
- •Var I: Byte;
- •6.3. Раздел Read
- •6.4. Раздел Write
- •Inherited Create;
- •Inherited Destroy;
- •6.5. Команды Default, NoDefault и Stored
- •6.6. Команда Index
- •Var aYear, aMonth, aDay: Word;
- •Var aYear, aMonth, aDay: Word;
- •6.7. Команды DispId и Implements
- •6.8. Переопределение свойств при наследовании
- •7. События (events)
- •7.1. Объявление событий
- •IfAssigned(fOnMouseMove) Then fOnMouseMove(Self, Shift, X, y);
- •Vk_return: NumMemo.DoNumStr(l);
- •Vk_return: PostMessage(NumMemo.Handle, wm_user1,1, 0);
- •7.2. Обработчики событий
- •7.3. Делегирование событий
- •Var Objl: tIstClass;
- •7.4. Переопределение стандартных событий
- •Var NewBtn: tNewButton;
Var NewBtn: tNewButton;
Begin
NewBtn :=TNewButton.Create(Self); // Создание кнопки With NewBtn Do Begin Parent:=Self;
SetBounds(10,10, 75,25);
Name:='NewBtn';
Visible:=True;
OnClick:=Buttonl.OnMouseMove; //Новое событие TButton(NewBtn).OnClick:=Button2.0nClick; // Щелчок мыши End;
End;
Приведенный пример позволяет продемонстрировать возможность переопределения типа события и возможность доступа к переопределенному событию предка с помощью приведения типов.
После запуска программы щелкнем мышью по кнопке NewBtn, - появится сообщение "Click!". Щелчок по кнопке ОК формы сообщения (MessageDIg) приведет к появлению сообщения "Move!". Это демонстрация приведения типа.
Если в виртуальном конструкторе удалить последнюю строку или/и строку Inherited Click в реализации метода TNewButton.Click, то щелчок по кнопке NewBtn сразу приведет к появлению сообщения "Move!". Это означает, что событие OnClick переопределено. Уведомительное событие заменено на специализированное и использованы его параметры Х и Y для вывода сообщения.
7.5. Выводы
Итак, если подвести итог, то можно сказать следующее:
• Windows является системой ориентированной на события.
• События в Delphi принимают форму сообщений.
• В недрах Windows VCL Delphi сообщения Windows обрабатываются и преобразуются в более простую для программиста форму.
• События в программе на Delphi вызываются не только сообщениями Windows, но и внутренними процессами.
• Обработка событий в Delphi сводится к написанию для каждого компонента своих обработчиков.