Задачи курса: 1) Приобретение навыков работы в среде системы визуального программирования Delphi (версия не ниже 0). Создание простейших Приложений

Вид материалаДокументы

Содержание


Знакомство со средой программирования Delphi
Главное окно
Главное меню
Палитра компонентов
Дизайнер Форм
Палитра компонентов
Дизайнера Форм
Справочник (on-line help)
Open Project
Close удаляет текущий файл из окна Редактора. Close All
Cut, Copy, Paste и Delete
View Source
Delphi. (Пуск/ Программы/Borland Delphi 5
Подобный материал:
1   2   3   4   5   6   7

unit Unit1;

interface

uses Unit2;

type

TPoint= class

x: integer;

y: integer;

procedure Draw;

end;

TColorPoint= class (TPoint)

Color: integer;

procedure Draw;

end;

var p:TPoint;


implementation


procedure TPoint.Draw;

begin

putpixel(x,y,15);

end;


procedure TColorPoint.Draw;

begin

putpixel(x,y,Color);

end;


end.

  1. Знакомство со средой программирования Delphi
    1. Структура среды программирования

Delphi – система быстрой разработки приложений для операционной системы Windows. Концепция Delphi была реализована в конце 1994 г., когда вышла первая версия среды разработки. В основу этого программного продукта легли концепции объектно-ориентированного программирования и визуального подхода к построению интерфейса приложения. На сегодняшний момент вышла седьмая версия среды. От версии к версии разработчики улучшают средства для разработки приложений.

Delphi – это комбинация нескольких важнейших технологий:
  • Высокопроизводительный компилятор в машинный код
  • Объектно-ориентированная модель компонентов
  • Визуальное построение приложений из программных прототипов
  • Масштабируемые средства для построения баз данных

Приложение для Windows – это специальный тип программы, которая:
  • Имеет специальный формат исполняемого файла (*.exe)
  • Работает только с Windows
  • Обычно работает в прямоугольном окне на экране
  • При выводе на экран следует рекомендациям по стандартному пользовательскому интерфейсу
  • Может работать одновременно с другими программами для Windows, включая другие экземпляры этого же приложения
  • Может взаимодействовать и совместно использовать данные с другими приложениями Windows

Среда Delphi состоит из нескольких отдельно расположенных окон.


Рисунок 1 Главное окно Delphi

Ниже перечислены основные составные части Delphi:
  1. Главное окно
  2. Дизайнер Форм (Form Designer) 
  3. Окно Редактора Исходного Текста (Editor Window)
  4. Палитра Компонент (Component Palette)
  5. Инспектор Объектов (Object Inspector)
  6. Справочник (On-line help)

Есть, конечно, и другие важные составляющие Delphi, вроде линейки инструментов, системного меню и многие другие, нужные для точной настройки программы и среды программирования. Рассмотрим функции каждого составляющего.

Главное окно управляет процессом разработки приложения. Оно управляют файлами, включаемых в приложение и выполняет всю работу, связанную с их сопровождением, компиляцию и отладкой. Главное окно имеет
  • Главное меню (MenuBar), располагается непосредственно под строкой заголовка главного окна и позволяет получить доступ ко всем функциях среды разработки.
  • Панель инструментов (SpeedBar) предоставляет быстрый доступ к большинству команд главного меню. Располагается под главным меню.
  • Палитра компонентов (Component Palette) предоставляет доступ к визуальным компонентов, которые можно помещать на форму.

Программисты на Delphi проводят большую часть времени, переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор).

Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Окно формы представляет собой проект Windows-окна будущей программы. Вначале это окно пусто. Точнее, оно содержит стандартные для Windows интерфейсные элементы – кнопки вызова системного меню, максимизации, минимизации и закрытия окна, полосу заголовка и очерчивающую рамку. Вся рабочая область окна обычно заполнена точками координатной сетки, служащей для упорядочения размещаемых на форме компонентов (вы можете убрать эти точки, вызвав с помощью меню Tools | Environment options соответствующее окно настроек и убрав флажок в переключателе Display Grid на окне, связанном с закладкой Preferences). Значительную часть времени программист занят увлекательным занятием, напоминающим работу с набором деталей конструктора Lego: он “достает” из палитры компонентов, как из коробки с деталями, нужный компонент и размещает его на “наборном поле” окна формы, постепенно заполняя форму интерфейсными элементами. Собственно, именно в этом процессе наполнения формы и заключается главная изюминка визуального программирования. Программист в любой момент времени контролирует содержание окна создаваемой программы и может внести в него необходимые изменения. Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время является Редактор. Логика является движущей силой программы и Редактор – то место, где Вы ее “кодируете”.

Палитра компонентов - это главное богатство Delphi. Она занимает правую часть главного окна и имеет закладки, обеспечивающие быстрый поиск нужного компонента. Под компонентом понимается некий функциональный элемент, содержащий определенные свойства и размещаемый программистом в окне формы. С помощью компонентов создается каркас программы, во всяком случае - ее видимые на экране внешние проявления: окна, кнопки, списки выбора и т. д. Палитра Компонент позволяет Вам выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкните мышкой на один из объектов и потом второй раз - на Дизайнере Форм. Выбранный Вами объект появится на проектируемом окне и им можно манипулировать с помощью мыши. Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок - Standard, Additional, Dialogs и т.д. Если Вы щелкнете мышью на одну из закладок, то Вы можете перейти на следующую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе.

Слева от Дизайнера Форм Вы можете видеть Инспектор Объектов. Любой размещаемый на форме компонент характеризуется некоторым набором параметров: положением, размером, цветом и т. д. Часть этих параметров, например, положение и размеры компонента, программист может изменять, манипулируя с компонентом в окне формы. Для изменения других параметров предназначено окно Инспектора объектов. Это окно содержит две страницы – Properties (Свойства) и Events (События). Страница properties служит для установки нужных свойств компонента, страница Events позволяет определить реакцию компонента на то или иное событие. Совокупность cвойств отображает видимую сторону компонента: положение относительно левого верхнего угла рабочей области формы, его размеры и цвет, шрифт и текст надписи на нем и т. п.; совокупность событий - его поведенческую сторону: будет ли компонент реагировать на щелчок мыши или на нажатие клавиш, как он будет вести себя в момент появления на экране или в момент изменения размеров окна и т. п. Каждая страница окна Инспектора объектов представляет собой двухколончатую таблицу, левая колонка которой содержит название свойства или события, а правая – конкретное значение свойства или имя подпрограммы [Если вам еще не знаком этот термин, считайте, что подпрограмма – это просто относительно небольшой фрагмент программы.], обрабатывающей соответствующее событие. В верхней части окна Инспектора объектов располагается раскрывающийся список всех помещенных на форму компонентов. Поскольку форма сама по себе является компонентом, ее имя также присутствует в этом списке.

Страница событий связана с Редактором; если Вы дважды щелкнете мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в Редактор, сам Редактор немедленно получит фокус, и Вы сразу же имеете возможность добавить код обработчика данного события. Окно кода предназначено для создания и редактирования текста программы. Этот текст составляется по специальным правилам и описывает алгоритм работы программы. Совокупность правил записи текста называется языком программирования. В системе Delphi используется язык программирования Object Pascal, который представляет собой расширенную и усовершенствованную версию широко распространенного языка Паскаль, впервые предложенного швейцарским ученым Н. Виртом еще в 1970 г. и усовершенствованного сотрудниками корпорации Borland (созданные ими языки назывались Turbo Pascal, Borland Pascal и Object Pascal). Первоначально окно кода содержит минимальный исходный текст, обеспечивающий нормальное функционирование пустой формы в качестве полноценного Windows-окна. В ходе работы над проектом программист вносит в него необходимые дополнения, чтобы придать программе нужную функциональность. Поскольку для создания даже простых программ вам понадобится создавать и изменять (редактировать) код программы, ниже описываются основные приемы работы с окном кода. Сразу после открытия нового проекта в нем будут минимально необходимые строки кода для описния формы.

Последняя важная часть среды Delphi – Справочник (on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится Справочник. Справочник является контекстно-зависимым; при нажатии клавиши F1, Вы получите подсказку, соответствующую текущей ситуации. Например, находясь в Инспекторе Объектов, выберите какое-нибудь свойство и нажмите F1 - Вы получите справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение - жмите F1 и необходимая информация появится на экране.
    1. Проект Delphi

Основная программа, которая использует написанные программистом модули, называется проектом. Проект может включать формы, модули, установки параметров проекта, ресурсы, графическую информацию и т.д. Вся эта информация хранится в различных файлах, которые используются в головной программе, т.е. в проекте.

Любой проект имеет, по-крайней мере шесть файлов, связанных с ним. Три из них относятся к управлению проектом из среды и напрямую программистом не меняются. Ниже приводится список файлов, которые обязательно содержатся в проекте.
  • Главный файл проекта, изначально называется PROJECT1.DPR.
  • Первый модуль программы (unit), который автоматически появляется в начале работы. Файл называется UNIT1.PAS по умолчанию, но его можно назвать любым другим именем, вроде MAIN.PAS.
  • Файл главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения информации о внешнем виде главной формы.
  • Файл PROJECT1.RES содержит иконку для проекта, создается автоматически.
  • Файл, который называется PROJECT1.DFO по умолчанию, является текстовым файлом для сохранения установок, связанных с данным проектом. Например, установленные разработчиком директивы компилятора сохраняются здесь.
  • Файл PROJECT1.CFG содержит информацию о состоянии рабочего пространства.

Разумеется, если сохранить проект под другим именем, то изменят название и файлы с расширением RES, DFO и CFG. Кроме того, в проекте сохраняются файлы резервных копий (т.е. файлы с расширениями *.~df, *.~dp, *.~pa). Поскольку проект содержит множество файлов, то рекомендуется для каждого проекта создавать отдельную директорию. Все манипуляции с файлами (сохранение, переименование, редактирование и т.д.) рекомендуется производить только в среде разработки.

После компиляции программы получаются файлы с расширениями: DCU – скомпилированные модули EXE – исполняемый файл
    1. Главное меню среды

Пункт меню “File”

New предлагает выбрать тип нового приложения

New Application начинает новый проект для оконного приложения

New Form создает новую форму и модуль, связанный с ней

Open открывает при необходимости любой модуль или просто текстовый файл. Если модуль описывает форму, то эта форма тоже появится на экране.

Open Project открывает существующий проект.

Reopen открывает ранее открывавшийся проект

Save сохраняет только редактируемый файл, но не весь проект.

Save As сохраняет редактируемый файл под другим именем.

Save Project As сохраняет проект

Save All сохранить все файлы

Close удаляет текущий файл из окна Редактора.

Close All закрывает все файлы проекта

Рисунок 2

Пункт меню “Edit”

“Edit” содержит команды Undo и Redo, которые могут быть очень полезны при работе в редакторе для устранения последствий при неправильных действиях, например, если случайно удален нужный фрагмент текста.

Команды Cut, Copy, Paste и Delete - как во всех остальных приложениях Windows, но их можно применять не только к тексту, но и к визуальным компонентам. Bring To Front, Send To Back, Align и Size используются для выравнивания и управления внешним видом компонентов на форме.


Пункт меню “View”

Project manager позволяет видеть содержимое проекта.

Object Inspector показывает окно Инспектора объектов.


Пункт меню “Project”

Add to Project позволяет добавлять форму в проект.

Remove from Project удаляет форму из проекта.

View Source показывает содержимое файла проекта.

Syntax Check только проверяет правильность кода программы, но не обновляет DCU файлы.


Пункт меню “Run”

Run F9 компилирует и запускает приложение на исполнение

Program Reset снимает с выполнения приложение.
    1. Первое приложение на Delphi

Рассмотрим процесс построения простейшего приложения, которое работает следующим образом. При нажатии кнопки появляется сообщение «Здравствуй, мир!».

Порядок действий:
  1. Запустите Delphi. (Пуск/ Программы/Borland Delphi 5) При этом автоматически открывается новый проект для оконного приложения с одной главной формой и модулем, соответствующим этой форме.
  2. Выберите в Палитре компонентов закладку Standard. и перенесите с Палитры компонентов на форму компонент и TButton. Для этого поочередно подводите курсор мыши к компонентам, читая подсказки, до тех пор, пока не появится TButton. Выберете его, нажав левую кнопку мыши, а затем переместите указатель на форму и нажмите еще раз на кнопку мыши. Помещенный на форму компонент будет иметь имя Button1. При этом текст модуля будет иметь вид


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;


type

TForm1 = class(TForm)

Button1: TButton;


private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;


implementation


{$R *.DFM}


end.

  1. Для того, чтобы при нажатии на кнопку происходили какие-либо действия нужно написать обработчик события Button1Click. Для этого выберите на форме Button1 и щелкните на него дважды. Вы окажетесь в окне редактирования.
  2. Приведите обработчик события нажатия кнопки к следующему виду:

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowMessage(‘Здравствуй, мир!');

end;
  1. Сохраните Приложение, выбрав пункт в главном меню File -> Save All. Название проекта и название программного модуля не должно совпадать! Рекомендуется создать отдельную директорию для файлов проекта.
  2. Запустите на выполнение ваше Приложение. Для этого выберете в главном меню пункт Run->Run, или нажмите клавишу F9.



Рисунок 3 Работа приложения
  1. Изменим в Инспекторе объектов у кнопки свойство Caption на Привет. При этом изменится надпись на кнопке.
  2. Если изменим у кнопки свойство Name на MyButton, то текст модуля также изменится

TForm1 = class(TForm)

MyButton: TButton;

procedure MyButtonClick(Sender: TObject);


private

{ Private declarations }

public

{ Public declarations }

end;

Текст файла проекта при этом будет выглядеть так.

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};


{$R *.RES}


begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

С каждым проектом связан глобальный объект Application, который инкапсулирует свойства и методы приложения для Windows. В файле проекта, который среда генерирует автоматически, вызываются методы этого объекта: инициализация, создание формы, функционирование приложения.

    1. Контрольные вопросы
  1. Назовите основные составляющие среды DELPHI и их назначение.
  2. Назовите состав и назначение пунктов главного меню системы.
  3. Каково назначение Инспектора объектов?
  4. Из каких основных файлов состоит проект приложения?
  5. Как производится размещение, перемещение, изменение размеров компонентов на форме?
  6. Как запустить приложение на выполнение из среды DELPHI?



  1. Библиотека визуальных компонентов (VCL)
    1. Иерархия базовых классов VCL

Б
Рисунок 4
иблиотека визуальных компонентов включает множество классов, которые можно использовать при разработке приложений. VCL тесно связана со средой разработки (все визуальные компоненты расположены на Палитре компонентов) и позволяет быстро создавать интерфейс приложения. Множество классов, входящих в библиотеку визуальных компонентов, организовано в виде иерархии. На самом верхнем уровне иерархии находится класс TObject, который является предком для любого класса. От него каждый класс получает в наследство механизмы создания и уничтожения экземпляра класса. Все классы библиотеки визуальных компонентов произошли от группы базовых классов, которые лежат в основе иерархии.

Класс TComponent является важнейшим классом, поскольку является предком для визуальных компонентов. Он наделен взаимодействием компонента со средой разработки, с Палитрой компонентов и Инспектором Объектов. Благодаря этим возможностям компоненты начинают работают уже во время разработки интерфейса приложения. Визуальные компоненты можно разбить на две группы: видимые и невидимые. Видимые компоненты видны не только во время дизайна интерфейса, но и во время работы приложения. Невидимые компоненты не видны во время работы программы, они осуществляют взаимодействие с ресурсами либо с другими компонентами. Непосредственно от класса TComponent можно порождать невидимые визуальные компоненты.

Класс TControl является прямым предком для видимых визуальных компонентов и имеет соответствующие свойства и метода, отвечающие за внешний вид компонентов. Видимые компоненты, которые имеют фокус ввода, т. е. имеют возможность получать и обрабатывать сообщения Windows (например, от клавиатуры), порождаются от класса TWinControl.
    1. Типы свойств компонентов. Изменение свойств

Каждый компонент имеет свой набор характеристик или свойств. Для пользователя (программиста) свойство выглядит как простое поле какой-либо структуры, содержащее некоторое значение. Однако в отличие от “просто” поля, любое изменение значения некоторого свойства компонента сразу же приводит к изменению визуального представления этого компонента, поскольку свойство инкапсулирует в себе методы (действия), связанные с чтением и записью этого поля (которые, в свою очередь, включают в себя необходимую перерисовку). Каждый компонент, который помещается на форму, имеет свое отражение в окне Инспектора Объектов (Object Inspector). Инспектор Объектов имеет две “странички” - “Properties” (Свойства) и “Events” (События), где можно изменять характеристики компонента.

Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства.
    • Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.
    • Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False.
    • Вложенные свойства - это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “+” слева от названия таких свойств. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.

Delphi позволяет легко манипулировать свойствами компонент как в режиме проектирования (design time), так и в режиме выполнения программы (run time). В режиме проектирования манипулирование свойствами осуществляется с помощью Дизайнера Форм (Forms Designer) илина страничке “Properties” Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и Width (ширину) кнопки, достаточно “зацепить” мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, просто подставив новые значения свойств Height и Width в окне Object Inspector.

С другой стороны, в режиме выполнения пользователь (программист) имеет возможность не только манипулировать всеми свойствами, отображаемыми в Инспекторе Объектов, но и управлять более обширным их списком, в том числе и свойствами других классов, которые не являются визуальными компонентами и, следовательно, не отображаются в Инспекторе объектов.

Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. В режиме выполнения невозможно использовать Object Inspector. Однако, доступ к свойствам компонентов довольно легко получить программным путем. Все, что необходимо сделать для изменения какого-либо свойства – это написать простую строчку кода аналогично следующей:

MyComponent.Width := 35;

Вышеприведенная строка устанавливает ширину (Width) компонента в значение 35. Если свойство Width компонента еще не было равно 35 к моменту выполнения данной строки программы, можно увидеть как компонент визуально изменит свою ширину.

Таким образом, нет ничего магического в Инспекторе Объектов. Object Inspector просто является удобным способом выполнения в режиме проектирования того, что может быть осуществлено программным путем в режиме выполнения. Более того, как уже было сказано выше, у компонента могут быть свойства, не отображаемые в окне Инспектора Объектов.

Объектно-ориентированный язык Паскаль, лежащий в основе Delphi, в качестве базового имеет принцип соответствия визуальных компонент тем вещам, которые они представляют. Разработчики Delphi поставили перед собой цель, чтобы, например, представление компонента Button (кнопка), инкапсулирующее некий код, соответствовало визуальному изображению кнопки на экране и являлось как можно более близким эквивалентом реальной кнопки, которую можно найти на клавиатуре. И именно из этого принципа родилось понятие свойства.

Если изменить свойства Width и Height компонента Button, кнопка соответствующим образом изменит свои ширину и высоту. При этом нет необходимости после изменения свойства Width указывать объекту, чтобы он перерисовал себя, хотя при обычном программировании именно так и должно поступать.
    1. Некоторые общие свойства компонентов

Рассмотрим некоторые свойства, которыми обладает каждый визуальный компонент, поскольку эти свойства наследуются от базовых классов иерархии библиотеки визуальных компонентов. Класс TComponent является предком всех визуальных компонентов и от него компоненты получают следующие свойства.