- •Данные. Обзор типов данных. Особенности численных данных.
- •Структура программы. Разделы объявления модулей, меток, данных, процедур и функций.
- •Оператор повтора «For». Пример.
- •Процедуры и функции. Способы и особенности передачи данных через имя и окно данных.
- •Стандартные процедуры и функции по работе со строками.
- •Записи. Объявление нового типа записи, обращение к полям записи.
- •Создание, чтение и запись текстовых файлов.
- •Создание, чтение и запись типизированных файлов.
- •Другие события
- •Проект в Delphi. Структура, основные файлы.
- •Файл Проект
- •Файл модуля формы.
- •Опции проекта
- •Модальные формы
- •Вывод в поле диалогового окна
- •Назначение файла (AssignFile)
Другие события
Название события |
Когда возникает |
OnKeyPress |
Наступает, когда пользователь нажимает какую-либо клавишу. |
OnDBClick |
Возникает при двойном щелчке на компоненте |
OnMouseMove |
Возникает при перемещении курсора мыши над компонентом |
OnMouseDown |
Возникает при нажатии на кнопку мыши |
OnMouseUp |
Возникает при отпускании кнопки мыши |
OnEnter |
Возникает при получении компонентом фокуса ввода |
OnExit |
Возникает при потере компонентом фокуса ввода |
OnCreate |
Возникает в момент создания формы. Существует только у формы |
Области видимости
При описании нового класса важен разумный компромисс. С одной стороны, требуется скрыть от других методы и поля, представляющие собой внутреннее устройство класса (для этого и придуманы свойства). Маловажные детали на уровне пользователя объекта будут бесполезны и только помешают целостности восприятия.
С другой стороны, если слишком ограничить того, кто будет порождать классы-потомки, и не обеспечить ему достаточный набор инструментальных средств и свободу маневра, то он и не станет использовать ваш класс.
В модели объектов языка Object Pascal существует механизм доступа к составным частям объекта, определяющий области, где ими можно пользоваться (области видимости). Поля и методы могут относиться к четырем группам (секциям), отличающимся областями видимости. Методы и свойства могут быть общими (секция public), личными (секция private), защищенными (секция protected) и опубликованными (секция published). Есть еще и пятая группа, automated, она ранее использовалась для создания объектов СОМ; теперь она присутствует в языке только для обратной совместимости с программами на Delphi версий 3—5.
Области видимости, определяемые первыми тремя директивами, таковы.
□ Поля, свойства и методы секции public не имеют ограничений на видимость. Они доступны из других функций и методов объектов как в данном модуле, так и во всех прочих, ссылающихся на него.
О Поля, свойства и методы, находящиеся в секции private, доступны только в методах класса и в функциях, содержащихся в том же модуле, что и описываемый класс. Такая директива позволяет полностью скрыть детали внутренней реализации класса. Свойства и методы из секции private можно изменять, и это не будет сказываться на программах, работающих с объектами этого класса. Единственный способ для кого-то другого обратиться к ним — переписать заново созданный вами модуль (если, конечно, доступны исходные тексты).
□ Поля, свойства и методы секции protected также доступны только внутри модуля с описываемым классом. Но — и это главное — они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях. Такие элементы особенно необходимы для разработчиков новых компонентов — потомков уже существующих. Оставляя свободу модернизации класса, они все же скрывают детали реализации от того, кто только пользуется объектами этого класса.
Рассмотрим пример, иллюстрирующий три варианта областей видимости.
unit First; interface
type
TFirstObj = class private
procedure Methodl; protected
procedure Method2; public
procedure Method3; end;
procedure TestProcl;
unit Second; interface uses First;
type
TSecondObj = class(TFirstObj)
procedure Method4; end;
procedure TestProc2;
implementation
uses dialogs;
var AFirstObj: TFirstObj;
procedure TestProcl; begin
AFirstObj := TFirstObj.Create; AFirstObj.Methodl; {допустимо} AFirstObj.Method2; {допустимо} AFirstObj.Method3; {допустимо} AFirstObj.Free; end;
Понятие компонента, формы.
Понятие компонента является фундаментальным для среды Delphi. Без компонентов все преимущества визуальной разработки приложений исчезают и говорить становится не о чем. Поэтому соберите все силы и внимательно прочитайте этот параграф, пытаясь усвоить не только технику использования компонентов, но и саму их суть.
Существует два взгляда на компоненты.
Взгляд снаружи, точнее из среды визуальной разработки приложений. С этой точки зрения компоненты — это самодостаточные строительные блоки, которые вы берете из палитры компонентов и переносите на форму для создания собственно приложения. Примеры компонентов вам известны: это кнопки, списки, надписи и др.
Существует еще и взгляд изнутри, т.е. взгляд из программы на языке Delphi. С этой точки зрения компоненты — это классы, порожденные прямо или косвенно от класса TComponent и имеющие published-свойства. Экземпляры компонентов — это объекты этих классов, существующие в качестве полей формы. Среди опубликованных свойств компонентов обязательно присутствует имя (Name), под которым экземпляр компонента представляется в окне свойств.
Объединение этих двух точек зрения дает цельное представление о том, что такое компоненты. При работе с компонентами из среды визуальной разработки приложений вы всегда видите их лицевую сторону. Однако как только вы начинаете писать обработчики событий, и управлять компонентами программно, вы соприкасаетесь с программной стороной компонентов, суть которой — объекты. Таким образом, среда Delphi обеспечивает симбиоз визуального и объектно-ориентированного программирования.
При анализе структуры компонента обнаруживается, что его природа троична и лучше всего описывается формулой:
Компонент = состояние (свойства) + поведение (методы) + обратная реакция (события).
Состояние компонента определяется его свойствами. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). Помимо этого, свойства могут получать значения либо на этапе проектирования (design-time), либо только во время выполнения программы (run-time). Первые устанавливаются для каждого компонента в окне свойств и определяют начальное состояние компонента. Во время выполнения приложения эти свойства могут быть изменены программно, соответственно изменится внешний вид и поведение компонента. Вторая группа — это свойства, которые не видны в окне свойств, и управлять которыми можно только программно. С точки зрения языка Delphi различие между этими группами свойств состоит в том, что первые объявлены в секции published, а вторые — в секции public.
Поведение компонента описывается с помощью его процедур и функций (методов). Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы не имеют под собой визуальной основы.
Обратная реакция компонента — это его события. События позволяют, например, связать нажатие кнопки с вызовом метода формы. События реализуются с помощью свойств, содержащих указатели на методы (см. гл. 3).
Форма – визуальный компонент, обладающий свойствами окна Windows и служащий для размещения других компонентов. Каждая форма представлена двумя файлами (*.pas-исходный текст модуля данных формы; и *.dfm-файл формы содержит информацию о свойствах формы и компонентов располож. На ней).
