МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОУВПО «Комсомольский-на-Амуре государственный
технический университет»
Факультет авиа-кораблестроения
,
ВВЕДЕНИЕ В DELPHI НА ПРИМЕРАХ
Учебное пособие (проект)
Комсомольск на Амуре
2007
УДК
, Бурменский в Delphi на примерах: Учебное пособие. - Комсомольск на Амуре: Комсомольский-на-Амуре государственный технический университет, 2007с.
В учебном пособии дается краткий курс среды программирования Delphi и приведены примеры различных прикладных программ с пояснениями, позволяющими начинающему пользователю быстро научиться основным приёмам объектного программирования.
Учебное пособие предназначено для студентов специальности 240100 "Организация перевозок и управление на транспорте" и соответствует программе курсов «Компьютерные технологии» и «Информационные технологии на транспорте». Пособие может быть полезно всем студентам, изучающим программирование.
Ил. 50, табл. 10, библиогр. 20 назв.
Рецензенты:
Кафедра
к. т.н., доцент
© ГОУВПО «Комсомольский-на-Амуре государственный технический университет»
ВВЕДЕНИЕ
1. СИСТЕМА ПРОГРАММИРОВАНИЯ DELPHI
1.1. Структура системы
Главные составные части (окна) среды программирования Delphi:
- Дизайнер Форм (Form Designer) или просто – «форма»;
- Окно Редактора Исходного Текста (Editor Window);
- Палитра Компонент (Component Palette);
- Инспектор Объектов (Object Inspector).
Есть, конечно, и другие важные составляющие Delphi, вроде линейки инструментов, системного меню и многие другие, нужные Вам для точной настройки программы и среды программирования.
Программисты на Delphi проводят большинство времени переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор). Дизайнер Форм (или просто – Форма) показан на рис. 1, окно Редактора - на рис. 2.
Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Он первоначально состоит из одного пустого окна (формы), которое Вы заполняете разными объектами, выбранными на Палитре Компонент.
Несмотря на всю важность Дизайнера Форм, местом, где «продвинутые» программисты проводят основное время, является Редактор. Логика является движущей силой программы и Редактор - то место, где Вы ее “кодируете”.
![]() |
Рис. 1. Дизайнер Форм (форма)
![]() |
Рис. 2. Редактор программного кода
Палитра Компонент (см. рис. 3) позволяет Вам выбрать нужные объекты – компоненты для размещения их на форме. Для использования Палитры Компонент просто первый раз щелкните мышкой на одном из объектов и потом второй раз - на форме. Выбранный Вами объект появится на проектируемом окне и им можно манипулировать с помощью мыши.

Рис. 3. Палитра Компонент - место, где Вы выбираете объекты, которые будут помещены на вашу форму (в разных версиях Delphi)
Палитра Компонент использует постраничную группировку объектов. Вверху Палитры находится набор закладок - Standard, Additional, Dialogs и т. д. Если Вы щелкнете мышью на одной из закладок, то Вы можете перейти на следующую страницу Палитры Компонент.
Предположим, Вы помещаете компонент Edit на форму; Вы можете двигать его с места на место. Вы также можете использовать границу, прорисованную вокруг объекта для изменения его размеров. Большинством других компонент можно манипулировать тем же образом. Однако, невидимые во время выполнения программы компоненты (например, Menu) не меняют своей формы.
Слева от Дизайнера Форм Вы можете видеть Инспектор Объектов (рис. 4). Заметьте, что информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница - это список свойств (Properties), вторая - список событий (Events).
Рис. 4. Инспектор Объектов позволяет определять свойства и поведение объектов |
Если нужно изменить что-нибудь, связанное с определенным компонентом, то Вы обычно делаете это в Инспекторе Объектов. Важно понять, что каждый компонент является настоящим объектом, и Вы можете с помощью Инспектора Объектов менять его свойства (Properties), в частности, внешний вид, а также реакции на события (Events), такие, например, как щелчок мыши или нажатие клавиши. К примеру, Вы можете изменить имя и размер компонента Button, изменяя свойства Caption, Left, Top, Height, и Width.
Вы можете использовать закладки вверху Инспектора Объектов для переключения между страницами свойств и событий. Страница событий связана с Редактором, - если Вы дважды щелкнете мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в Редактор, сам Редактор немедленно получит фокус, и Вы сразу же имеете возможность добавить код обработчика данного события.
Важная часть среды Delphi - Справочник. Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. Справочник является контекстно-зависимым; при нажатии клавиши F1, Вы получите подсказку, соответствующую текущей ситуации. Например, находясь в Инспекторе Объектов, выберите какое-нибудь свойство и нажмите F1 - Вы получите справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение - жмите F1 и необходимая информация появится на экране.
1.2. Дополнительные элементы
В данном разделе внимание фокусируется на трех инструментах среды программирования:
- Меню (Menu System);
- Панель с кнопками для быстрого доступа (SpeedBar);
- Редактор картинок (Image Editor).
Меню предоставляет быстрый и гибкий интерфейс к среде Delphi, потому что может управляться по набору “горячих клавиш”. Это удобно еще и потому, что здесь используются слова или короткие фразы, более точные и понятные, нежели иконки или пиктограммы. Вы можете использовать меню для выполнения широкого круга задач: открытия и закрытия файлов, управления отладчиком или настройкой среды программирования и др..
SpeedBar находится непосредственно под меню, слева от Палитры Компонент (рис. 5). SpeedBar выполняет много из того, что можно сделать через меню. Если задержать мышь над любой из иконок на SpeedBar, то Вы увидите, что появится подсказка, объясняющая назначение данной иконки.

Рис. 5. SpeedBar находится слева от Палитры Компонент.
Редактор Картинок (Image Editor), показанный на рис.6, работает аналогично программе Paint из Windows. Вы можете получить доступ к этому модулю, выбрав пункт меню Tools | Image Editor.
1.3. Стандартные компоненты
Для дальнейшего знакомства со средой программирования Delphi потребуется рассказать о составе первой страницы Палитры Компонент.
На первой странице Палитры Компонент размещены 16 объектов (рис. 7) определенно важных для использования. Мало кто обойдется длительное время без кнопок, списков, окон ввода и т. д. Все эти объекты такая же часть Windows, как мышь или окно.

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

Рис. 7. Компоненты, расположенные на первой странице Палитры
Набор и порядок компонент на каждой странице являются настраиваемыми. Так, Вы можете добавить к имеющимся компонентам новые, изменить их количество и порядок.
Основные стандартные компоненты Delphi перечислены ниже с некоторыми комментариями по их применению. При изучении данных компонент было бы полезно иметь под рукой компьютер с тем, чтобы посмотреть, как они работают и как ими манипулировать.
MainMenu позволяет Вам поместить главное меню в программу. При помещении MainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют "невидимыми компонентом", поскольку они невидимы во время выполнения программы. Создание меню включает три шага: а) помещение MainMenu на форму; б) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов; в) определение пунктов меню в Дизайнере Меню (заданием свойства Caption в Инспекторе Объектов).
PopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.
Label служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов.
Edit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
Memo - иная форма Edit. Подразумевает работу с большими текстами. Memo может переносить слова, сохранять в буфере обмена фрагменты текста и восстанавливать их, и другие основные функции редактора.
Button позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив Button на форму, Вы по двойному щелчку мыши можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом (подчеркнуто то, что нужно написать вручную):
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption:= 'Yes!';
end;
CheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Project | Options, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox’ов.
RadioButton позволяет выбрать только одну опцию из нескольких. Например, если Вы откроете диалог Project | Options и выберете страницу Linker, то Вы можете видеть, что секции Map file и Linker output состоят из наборов RadioButton.
ListBox нужен для показа прокручиваемого списка. Классический пример ListBox’а в среде Windows - выбор файла из списка в пункте меню File | Open многих приложений. Названия файлов или папок и находятся в ListBox’е.
ComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз (drop-down combo box), который можно видеть, например, внизу окна диалога выбора файла.
Scrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox’ах - при необходимости прокрутки текста для просмотра.
GroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
Panel - управляющий элемент, похожий на GroupBox, используется в декоративных целях. Чтобы использовать Panel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении Panel будут передвигаться и эти компоненты. Panel используется также для создания линейки инструментов и окна статуса.
· ScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется ScrollBox.
Это список основных объектов на первой странице Палитры Компонент. Если Вам нужна дополнительная информация, то выберите на Палитре объект и нажмите клавишу F1 - появится Справочник с полным описанием данного объекта.
1.4. Подробнее об Инспекторе Объектов
Ранее мы вкратце рассмотрели Инспектор Объектов (Object Inspector). Теперь нужно исследовать этот важный инструмент глубже. Основное для понимания Инспектора Объектов состоит в том, что он используется для изменения характеристик любого компонента, «брошенного» на форму. Кроме того, и для изменения свойств самой формы.
Сначала рассмотрим работу со свойствами на примере свойства AutoSize (по умолчанию выключено - False). Выберите форму, щелкнув на ней мышкой, перейдите в Инспектор Объектов и с помощью двойного щелчка мышью переключите значение свойства в True. Заметьте, что это действие радикально меняет внешний вид формы – её размеры подстроились под содержимое формы. Измените значение свойства Color формы.
Теперь нажмите клавишу <Shift> и щелкните на Memo и затем на ListBox. Теперь оба объекта имеют по краям маленькие серые квадратики, показывающие, что выбрано несколько объектов. Выбрав два или более объектов одновременно, Вы можете выполнить большое число операций над ними. Например, передвигать по форме.
Теперь выберите пункт меню Edit | Size и установите оба поля Ширину (Width) и Высоту (Height) в Grow to largest (рис. 9.) Оба объекта стали одинакового размера.
Далее выберите пункт меню Edit | Align и поставьте в выравнивании по горизонтали значение Center (рис. 10).
Поскольку Вы выбрали сразу два компонента, то Инспектор Объектов будет показывать только те поля, которые являются общими для объектов. Это означает то, что изменения в свойствах, произведенные Вами повлияют не на один, а на все выбранные объекты.
Рассмотрим изменение свойств объектов на примере свойства Color. Есть три способа изменить его значение в Инспекторе Объектов. Первый - просто напечатать имя цвета (clRed) или номер цвета. Второй путь - нажать на маленькую стрелку справа и выбрать цвет из списка. Третий путь - дважды

щелкнуть на поле свойства Color. При этом появится диалог выбора цвета.
Свойство Font работает на манер свойства Color. Чтобы это посмотреть, сначала выберите свойство Font для объекта Memo и дважды щелкните мышкой на поле ввода. Появится диалог настройки шрифта, как показано на рис. 11. Выберите, например, шрифт New Times Roman и установите размер, например 24. Затем измените цвет с помощью ComboBox’а в нижнем левом углу окна. Когда Вы нажмете кнопку OK, то увидите, что вид текста в объекте Memo изменился.
В завершение краткого экскурса по Инспектору Объектов дважды щелкните на свойство Items компонента ListBox. Появится диалог, в котором Вы можете ввести строки для отображения в ListBox. Напечатайте несколько строк и нажмите кнопку OK. Текст отобразится в ListBox’е.
1.5. Сохранение программы. Состав проекта. Меню File
Вы приложили некоторые усилия по созданию программы и можете захотеть ее сохранить. Это позволит загрузить программу позже и снова с ней работать.
Выберите пункт меню File | Save Project As. В окне сохранения файла сначала обязательно создайте новую папку для новой программы. Дело в том, что в процессе работы над проектом автоматически создаются несколько файлов, необходимых при дальнейшем редактировании программы. Если Вы не определите им место, то потом будет трудно «собирать» Ваш проект.
Предложено будет сохранить два файла. Первый - модуль (unit), над которым Вы работали. Второй - главный файл проекта, который "владеет" Вашей программой. Сохраните модуль под именем, например, MAIN. PAS и проект под именем, напримр, TEST.DPR. Любой файл с расширением PAS и словом “unit” в начале является модулем.
Проект Delphi включает один файл проекта (.DPR), один или более модулей (.PAS), одну или более форм (которые хранятся в файлах типа.DFM), а также ряд других файлов. Каждая форма связана с соответствующим модулем. В процессе Вашей работы окна с формами или с текстами модулей могут быть по каким-либо причинам закрыты и не видны на экране. Однако сами формы и модули при этом остаются в проекте. Их можно снова вызвать командами Units… и Forms… меню View.
После компиляции или запуске проекта (командами Project | Compile Project, Build Project или Run) образуется программа (.EXE – файл), которая может работать независимо файлов проекта (.dpr, .pas, .dfm и др.), а также от наличия системы Delphi. Однако для возможности выполнения изменений необходимо все файлы проекта сохранять. Исключением могут являться только.EXE – файлы (так как их можно создать при запуске проекта на компиляцию или выполнение из Delphi), а также копии изменённых файлов, имеющих в расширении первый символ «~» (например Unit1.~pas) – такие файлы можно удалять.
У начинающих пользователей бывает типичная ошибка. Задумав начать новый проект, они выбирают команду File | New Form, и на новой форме размещают компоненты главного окна будущей программы. Такая программа работать не будет.
Новый проект начинается с команды File | New Application (новое приложение). Команда File | New Form используется для добавления к проекту новых, вспомогательных форм – окон.
При работе с командами меню File обратите внимание, что команды Open (открыть), Save (сохранить) и Close (закрыть) имеют варианты: для всего проекта (со словами project, All) и для его отдельных составляющих (форм, модулей). Если Вы не «ощутите разницу» между однотипными командами, то можете попасть в неприятное положение.
Другая типичная ошибка начинающих – сохранение разных файлов проекта в разные папки. Работая, например, над новым проектом, они используют команды File | Save As… либо Save, думая, что сохраняют проект. На самом деле сохраняются только текущие модули и формы проекта. При запуске проекта на выполнение либо компиляцию выясняется, что проект ещё не сохранён (появляется окно сохранения проекта). По невнимательности можно сохранить проект в другую папку, - отдельно от остальных файлов. Всё будет работать. Однако если затем папку с проектом либо папку с остальными файлами проекта перемещать (например, на свою дискету), то потеряется либо сам проект, либо остальные файлы. Вывод: сохраняйте все части проекта в одну папку!
1.6. Z-упорядочивание, Button, заголовки и исходный текст
Еще несколько возможностей Инспектора Объектов и Дизайнера Форм.
Создайте новый проект. Поместите на форму объект Memo, а затем Edit так, чтобы он наполовину перекрывал Memo, как показано на рис. 12. Теперь выберите пункт меню Edit | Send to Back (убрать на задний план), что приведет к перемещению Edit вглубь формы, за объект Memo. Это называется изменением Z-порядка компонент. Буква Z используется потому, что обычно математики обозначают третье измерение буквой Z. Так, X и Y используются для обозначения ширины и высоты, и Z используется для обозначения глубины. Перемещение компонента на передний план выполняется командой Edit | Bring to Front.
Если Вы “потеряли” на форме какой-то объект, то найти его можно в раскрывающемся списке, который находится в верхней части Инспектора Объектов.
Поместите на форму кнопку Button. Теперь растяните Инспектор Объектов так, чтобы свойства Name и Caption были видны одновременно на экране. Теперь измените имя кнопки на Terminate. Заметьте, что заголовок (Caption) поменялся в тот же момент. Такое двойное изменение наблюдается, если ранее не изменялось свойство Caption.
Текст, который Вы видите на поверхности кнопки - это содержимое свойства Caption. Свойство Name служит для ссылок на кнопку при написании кода программы.

Рис. 12. Компоненты могут перекрывать и загораживать друг друга
Запомните! Свойство Name любых компонентов должно состоять из латинских символов – это имя соответствующей переменной в программном коде и оно должно соответствовать правилам языка Паскаль. Заголовок же (Caption) можно заполнять русскими буквами.
Если Вы откроете сейчас окно Редактора, то увидите следующий фрагмент кода:
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Terminate: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
И форма, и компоненты описаны соответствующими классами языка Паскаль, названия которых принято начинать с буквы Т. Например, форма описана классом TForm, кнопка (компонент Button) – классом TButton.
В этом фрагменте кнопка (класс TButton) называется Terminate из-за того, что Вы присвоили это название свойству Name. Заметьте, что TMemo и TEdit имеют имена, которые присвоились по умолчанию (названия компонентов с номером в конце – по порядку их создания).
Перейдите на форму и дважды щелкните мышкой на объект Button. Вы сразу попадете в окно Редактора, в котором увидите фрагмент кода вроде этого:
procedure TForm1.TerminateClick(Sender: TObject);
begin
end;
Данный код был создан автоматически и будет выполняться всякий раз, когда во время работы программы пользователь нажмет кнопку Terminate. Вдобавок, Вы можете видеть, что определение класса в начале файла теперь включает ссылку на метод (процедуру) TerminateClick:
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Terminate: TButton;
procedure TerminateClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Теперь самое время написать строчку кода внутри автоматически созданной процедуры. Это очень простой код, состоящий из одного слова Close:
procedure TForm1.TerminateClick(Sender: TObject);
begin
Close;
end;
Теперь после запуска программы на выполнение и нажатия на кнопку, исполняется этот код. В результате форма (значит и все приложение) закрывается. Для проверки запустите программу (командой Run) и нажмите кнопку Terminate. Если все сделано правильно, программа закроется, и Вы вернетесь в режим дизайна.
Перейдите в Инспектор Объектов и измените значение свойства Name для кнопки на любое другое, например OK. Нажмите Enter для внесения изменений. Посмотрите в Редактор, Вы увидите, что код, написанный Вами (обработчик кнопки) изменился:
procedure TForm1.OkClick(Sender: TObject);
begin
Close;
end;
Заметьте, что аналогичные изменения произошли и в определении класса:
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Ok: TButton;
procedure OkClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Теперь замените текст обработчика кнопки: вместо «Close;» напишите «Ok.Caption:= 'Yes!';» :
procedure TForm1.OkClick(Sender: TObject);
begin
Ok. Caption:= 'Yes!';
end;
Запустите программу. При нажатии кнопки надпись на ней изменится на «Yes!».
Обратите внимание, как в тексте программы задаются свойства объекта – через точку. Аналогично разделяются и другие элементы кода (классы, методы – посмотрите на заголовок процедуры). Точка обозначает отношение элементов записи на языке Паскаль: слева «родитель», справа «потомок».
1.7. Некоторые типичные свойства объектов
Основные свойства компонентов:
Caption – видимый на компоненте заголовок;
Color – цвет;
Ctl3D – “пространственность” изображения объекта;
Cursor – форма курсора при его попадании на объект;
Enabled – «включение – отключение» объекта;
Font – настройка шрифта;
Height – вертикальный размер объекта;
Hint – текст всплывающей подсказки;
ShowHint – «включение – отключение» подсказки;
Left – положение объекта от левого края окна;
Name – имя объекта (не применять русские буквы!);
Top – положение объекта от верхнего края окна;
Visible – видимость объекта;
Width – ширина объекта;
Items - список элементов объекта (для компонентов типа TMainMenu, TPopupMenu, TListBox, TComboBox);
Text – текст (для компонентов типа TEdit);
Lines – текст (для компонентов типа TMemo).
Некоторые свойства формы:
ActiveControl – определяет компонент, который при открытии формы будет в фокусе;
AutoScroll – автоматическое включение линеек прокрутки;
ClientHeight – высота формы в пикселах;
ClientWidth – ширина формы;
FormStyle – стиль формы (родительское или дочернее (Child) окно в многодокументном приложении, «сообщение на переднем плане» (fsStayOnTop) и др.);
HorzScrollBar – горизонтальная линейка прокрутки;
VertScrollBar – вертикальная линейка прокрутки;
Icon – иконка формы;
Menu – задаёт активное меню;
Position – положение формы на экране при её окрытии;
WindowState – начальное состояние окна формы (полноэкранное, нормальное или минимизированное)
1.8. Упражнения
1. Создайте форму, которая бы копировала одно из окон:
а) Microsoft Word: Меню Формат | Регистр;
б) Delphi: Меню Edit | Align;
в) Delphi: Меню Edit | Size;
г) Delphi: Меню Edit | Scale;
д) Delphi: Меню Search | Go to Line Number;
е) Delphi: Меню View | Units;
ж) Delphi: Меню View | Forms;
з) Delphi: Меню View | Window List;
и) Microsoft Word: Меню Вставка | Название;
к) Microsoft Word: Меню Вставка | Разрыв;
л) Microsoft Word: Меню Сервис | Установить защиту;
м) Microsoft Word: Меню Сервис | Статистика;
н) Microsoft Word: Меню Таблица | Добавить таблицу.
2. Создайте форму, которая содержит меню, аналогичное меню программы:
а) Image editor (Delphi: Меню Tools);
б) Калькулятор;
в) Блокнот;
г) Package Collection Editor (Delphi: Меню Tools);
д) SQL Monitor (Delphi: Меню Database);
е) Database Desktop (Delphi: Меню Tools);
ж) Мой компьютер (кроме пунктов «Вид» и «Избранное));
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |





