- •2. Понятие класса в Делфи. Взаимосвязь класса и объекта. Дерево классов в Делфи.
- •5. Понятие и достоинства подхода объектно-ориентированного программирования.
- •21. Что такое событийное программирование? Понятие события и его роль в современном программировании. 22. События в Делфи программах, их назначения, средства реализации, примеры разнообразных событий.
- •23. Примеры событий в конкретных программах на Делфи.
- •24. Составные имена в программах – когда они возникают, как формируются и с помощью каких средств можно сократить длину таких имен. (например, оператор With)
- •25. Запись как тип данных, их определение, назначение, структура. Обращение к полям записей: составные имена, оператор With. Примеры применения в программах.
- •26. Условный оператор, его назначение, структура. Варианты условных операторов. Вложенные условные операторы. Примеры.
- •27. Массив как тип данных, определение, назначение, структура. Объявление и программирование ввода-вывода одномерного, двух и многомерного массивов. Примеры применения в программах.
- •Имя: array [нижний_индекс. .Верхний_индекс] of тип
- •Имя: array[НижняяГраница1..ВерхняяГраница1, НижняяГраница2..ВерхняяГраница2] of Тип
- •29. Файлы как типы данных. Определения и свойства файлов, типы файлов: текстовые, типированные и нетипированные файлы. Операторы чтения из файла и записи в файл.
- •30. Применение логических переменных, логических функций, логических выражений при программировании в системе Делфи. Логические операции, разрешенные в Делфи.
- •1. Отрицание: not ("не")
- •2. Логическое умножение (конъюнкция) - and ("и")
- •3. Логическое сложение (дизъюнкция) - or ("или")
- •4. Исключающее "или" - xor
- •31. Конструкторы и деструкторы – средства порождения и уничтожения объектов в системе Делфи. Их необходимость и область применения в программах.
21. Что такое событийное программирование? Понятие события и его роль в современном программировании. 22. События в Делфи программах, их назначения, средства реализации, примеры разнообразных событий.
23. Примеры событий в конкретных программах на Делфи.
Событийный подход к программированию включает использование объектов, способных реагировать на события, происходящие в системе. Событийный подход используется при разработке как самостоятельных программ, так и операционных систем, например, Microsoft Windows или OS/2 Presentation Manager.
Строго говоря, событийное программирование не имеет прямого отношения к объектному, примером чему является Windows, в которой изначально предполагалось создание программ на языке C, не имеющем средств ООП. Однако, как показывает практика, событийный подход имеет довольно много общего с объектным. В первую очередь это инкапсуляция данных, а также полиморфизм и в ряде случаев наследование. Это означает, что при реализации событийного подхода удобно использовать средства ООП -- в этом случае многие особенности событийных программ реализуются автоматически.
С использованием событийного и объектного подходов в настоящее время построен целый класс библиотек -- шаблоны программ (Application Frameworks). Такие библиотеки могут включать как собственный диспетчер событий (как, например, Turbo Vision фирмы Borland), так и полагаться на средства операционной системы (например, библиотеки для Windows OWL фирмы Borland и MFC фирмы Microsoft). Визуальные компоненты способны генерировать и обрабатывать достаточно большое число (несколько десятков) событий различных видов. К наиболее общим группам событий можно отнести следующие:
выбор элемента управления;
перемещение указателя мыши;
вращение колеса мыши;
нажатие клавиш;
получение и потеря элементом управления фокуса ввода;
перемещение объектов методом drag-and-drop (перетаскиванием).
Отметим, что в окне Инспектора объектов события сгруппированы по следующим группам:
действие (Action);
перемещение и стыковка компонентов (Drag, Drop and Docking);
контекстная помощь (Help and Hints);
входные (Input);
среда (Layout);
связь (Linkage);
разное (Miscellaneous);
визуальные (Visual).
Объекты из библиотеки визуальных компонент (VCL) Delphi, равно как и объекты реального мира, имеют свой набор свойств и свое поведение - набор откликов на события, происходящие с ними. Список событий для данного объекта, на которые он реагирует, можно посмотреть, например, в Инспекторе Объектов на странице событий. (На самом деле, на этой странице представлен список свойств, которые имеют тип вроде TMouseMoveEvent и представляют из себя процедуры-обработчики событий. Существует соглашение по названиям данных свойств. Например, OnDblClick соответствует двойному щелчку мыши, а OnKeyUp - событию, когда нажатая клавиша была отпущена.) Среди набора событий для различных объектов из VCL есть как события, портируемые из Windows (MouseMove, KeyDown), так и события, порождаемые непосредственно в программе (DataChange для TDataSource).
Поведение объекта определяется тем, какие обработчики и для каких событий он имеет. Создание приложения в Delphi состоит из настройки свойств используемых объектов и создания обработчиков событий.
Простейшие события, на которые иногда нужно реагировать - это, например, события, связанные с мышкой (они есть практически у всех видимых объектов) или событие Click для кнопки TButton. Предположим, что вы хотите перехватить щелчок левой кнопки мыши на форме. Чтобы сделать это - создайте новый проект, в Инспекторе Объектов выберите страницу событий и сделайте двойной щелчок на правой части для свойства OnClick. Вы получите заготовку для обработчика данного события:
procedure TForm1.FormClick(Sender: TObject);
begin
end;
Напишите здесь следующее:
procedure TForm1.FormClick(Sender: TObject);
begin
MessageDlg('Hello', mtInformation, [mbOk], 0);
end;
Каждый раз, когда делается щелчок левой кнопки мыши над формой будет появляться окно диалога (см. рис.1).
Рис.1: Диалог, появляющийся при щелчке мыши на форме.
Код, приведенный выше, представляет из себя простейший случай ответа на событие в программе на Delphi. Он настолько прост, что многие программисты могут написать такой код и без понимания того, что они на самом деле отвечают на сообщение о событии, посланное им операционной системой. Хотя программист получает это событие через третьи руки, тем не менее он на него отвечает.
Опытные программисты в Windows знают, что при возникновении события, операционная система передает вам не только уведомление о нем, но и некоторую связанную с ним информацию. Например, при возникновении события "нажата левая кнопка мыши" программа информируется о том, в каком месте это произошло. Если вы хотите получить доступ к такой информации, то должны вернуться в Инспектор Объектов и создать обработчик события OnMouseDown:
procedure TForm1.FormMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
begin
Canvas.TextOut(X, Y, 'X='+IntToStr(X)+' Y='+IntToStr(Y));
end;
Запустите программу, пощелкайте мышкой на форме:
Рис.2
Как видите, в Delphi очень просто отвечать на события. И не только на события, связанные с мышкой. Например, можно создать обработчик для OnKeyDown (нажата клавиша):
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
MessageDlg(Chr(Key), mtInformation, [mbOk], 0);
end;
Теперь, когда вы имеете начальные знания о программировании событий в Delphi, самое время вернуться назад и посмотреть на теорию, стоящую за тем кодом, что вы написали. После получения представления о том, как работает система, можно вернуться к среде Delphi и посмотреть, как использовать полностью имеющиеся возможности.