- •Содержание
- •Введение
- •Лабораторная работа № 13 Создание простых форм. Программирование кнопок
- •Теоретические сведения Назначение и состав окон для визуальной разработки по в Delphi 7
- •Объект tForm(форма)
- •Объект tLabel (текстовое поле)
- •Объект tButton (кнопка)
- •Преобразование типов
- •Метод установления фокуса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 14 Интерактивный ввод и вывод. Обработка исключительных ситуаций
- •Теоретические сведения Компонент tEdit (поле редактирования)
- •Компонент tRadioButton (переключатель)
- •Пример 14.1. При нажатии на кнопки «Ответ» в окне появляется строка, соответствующая выбранному переключателю (рис. 14.1)
- •Обработка события, вызванного нажатием на кнопку, имеет такой вид:
- •Процедуры и функции, реализующие диалоговые окна
- •Обработчики исключений
- •Пример 14.2. Вычислить значение функции . Экранная форма программы показана на рис. 14.5.
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 15 Программирование циклов. Компоненты: флажок, группа компонентов, главное меню, контекстное меню, список действий, область просмотра
- •Теоретические сведения Компонент tMemo (область просмотра)
- •Пример 15.1. В многострочный редактор при нажатии кнопки выводятся номера строк. Экранная форма программы показана на рис. 15.1.
- •Компонент tCheckBox (флажок)
- •Пример 15.2. Флажками отмечаются используемые кредитные карточки и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.2.
- •Панель tGroupBox (группы компонентов)
- •Пример 15.3. С помощью флажков выбирают продукты из списка и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.3.
- •Список действий (tActionList)
- •Главное меню (tMainMenu)
- •Пример 15.5. Создан простой редактор содержащий меню. Экранная форма программы показана на рис. 15.7.
- •Обработка событий выбора пунктов меню имеет вид
- •Всплывающее меню (tPopupMenu)
- •Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 16Обработка динамических массивов данных. КомпонентTStringGrid(Таблица строк)
- •Теоретические сведения Компонент tStringGrid (таблица строк)
- •Implementation
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 17Работа с объектами. Инкапсуляция. Наследование. Полиморфизм. Создание заставки
- •Теоретические сведения Понятие класса и объекта
- •Инкапсуляция и свойства объекта
- •Наследование
- •Полиморфизм и виртуальныеметоды
- •Директивы, используемые при объявлении класса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 18Компоненты для работы с файлами и каталогами
- •Теоретические сведения Компоненты для работы с файлами и каталогами
- •Выбор дисковода
- •Просмотр и перемещение по дереву каталогов
- •Просмотр списка и выбор имени файла
- •Выбор маски для списка файлов
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 19Создание многооконных приложений (mdi). Строка Состояний
- •Теоретические сведения Компонент tStatusBar(строка состояний)
- •Многооконные приложения
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 20КомпонентTChart для Построение диаграмм различных типов. Создание библиотек динамической компоновки (Dll). Статическое подключение Dll
- •Теоретические сведения Компонент tChart (диаграмма)
- •Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
- •Implementation
- •Создание библиотеки динамической компоновки (dll)
- •Пример 20. 2. Создать библиотеку содержащую функции сложения целых и вещественных чисел, а также строк. Код библиотеки имеет вид
- •Статический вызов библиотеки
- •Пример 20.3. Используем статически функции, описанные в библиотеке (см. Пример 20.2). Экранная форма программы показана на рис. 20.5. Фрагмент кода с использованием функций из библиотеки:
- •Implementation
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 21Использование форм в библиотеках динамической компоновки (Dll). Динамическое подключение Dll.
- •Теоретические сведения Динамический вызов библиотеки
- •Implementation
- •Использование форм в библиотеках
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Домашнее задание № 6Компоненты: Поля редактирования, группа переключателей. Обработка событий клавиатуры
- •Теоретические сведения Компонент группа переключателей (tRadioGroup)
- •События клавиатуры
- •Порядок выполнения работы
- •Варианты:
- •Контрольные вопросы
- •Домашнее задание № 7Создание Справочного файла
- •Теоретические сведения Создание справочной системы
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Использование форм в библиотеках
Библиотека может содержать формы, при этом форма добавляется к библиотеке и конструируется обычным для проекта способом, но обязательно надо включить в модуль формы экспортируемые функции (как минимум одну), служащие для управления формой извне библиотеки. В основной модуль экспортируется функция управления формы и ее подключение осуществляется так же, как и любой другой функции.
Пример 21.2. Создадим программу, в которую будет загружаться форма из библиотеки. Экранная форма основной программы показана на рис. 21.1, а форма, загружаемая из библиотеки — на рис. 21.2. Код библиотеки, содержащей форму:
library DLLForm;
{ библиотека с использованием формы }
uses
ShareMem,
SysUtils,
Classes,
//подключение модуля с формой
untFrmDLL in 'untFrmDLL.pas' {FrmDLL};
{$R *.res}
//экспортирование функции для внешнего управления формой
exports ShowFrmInDLL;
begin
end.
unit untFrmDLL;
interface
. . .
var
FrmDLL: TFrmDLL;
function ShowFrmInDLL(name:string):TModalResult;
implementation
{$R *.dfm}
function ShowFrmInDLL(name:string):TModalResult;
begin
FrmDll:=TFrmDll.Create(Application);
FrmDll.Caption:=name;
Result:=FrmDll.ShowModal;
FrmDll.Free;
end;
procedure TFrmDLL.FormCreate(Sender: TObject);
begin
btnOK.ModalResult:=mrOk;
btnCancel.ModalResult:=mrCancel;
end;
end.
Рис. 21.1. Экранная форма основной программы примера 21.2
Рис. 21.2. Экранная форма примера 21.2, загружаемая из библиотеки
Порядок выполнения работы
На основе варианта задания из лабораторной работы 20 создать библиотеку динамической компоновки, в которую поместить форму с графиком. Динамический вызов библиотек (с функцией и формой) разместить в основном модуле.
Обработать все возможные исключительные ситуации.
Контрольные вопросы
Особенности создания библиотеки динамической компоновки с формой.
Экспортирование функций.
Загрузка библиотеки в оперативную память.
Выгрузка библиотеки из оперативной памяти.
Получение адреса внешней функции.
Лабораторная работа № 22Разработка компонентов пользователя
Цель работы: закрепление навыков объектно-ориентированного программирования. Изучение особенностей создания и использования компонентов IDE Delphi.
Теоретические сведения
Разработку компонента можно начать с создания проекта пакета (Package). Для этого выполним File\New\Other.. \ New \ Package (рис. 22.1). При этом откроется окно управления проектом пакета компонентов (рис. 22.2).
Теперь необходимо установить текущие каталоги, для этого нажимаем кнопку Options и на закладке Directories изменяем поля (рис. 22.3):
Output directory = .
DCP output directory = .
Точка означает текущий каталог.
Как и для любого проекта выполняем Save Project As… (проект желательно сохранить в отдельном каталоге, изменив стандартное имя проекта Package1.dpk на свое, например StdVar.dpk). Компилируем и выполняем установку пакета, нажимая кнопку Install в окне управления проектом пакета. В случае удачной установки пакета получаем сообщение, показанное на рис. 22.4.
С этого момента в каталоге проекта находятся следующие файлы: StdVar.bpl, StdVar.cfg, StdVar.dcp, StdVar.dcu, StdVar.dof, StdVar.dpk, StdVar.res.
Кроме этого файл StdVar.bpl интегрирован в состав среды разработки Delphi и поэтому для корректной работы не может быть перемещен в другой каталог (или удален) без очистки списка используемых пакетов. Таким образом, для удаления пакета нужно указать в списке Design packages необходимый пакет и нажать кнопку Remove. После этого с файлом *.bpl можно выполнять необходимые манипуляции. Для добавления существующего пакета достаточно, нажав кнопку Add…, указать его местонахождение (рис. 22.5).
Рис. 22.1. Хранилище объектов Delhi с выбранным шаблоном Package
Рис. 22.2. Окно управления проектом пакета компонентов
Рис. 22.3. Установка текущих каталогов
Рис. 22.4. Сообщение об удачной инсталляции компонента
Теперь можно приступать к созданию компонента. Для этого необходимо в окне управления проекта пакета нажать кнопку Add и в появившемся окне на закладке New Component заполнить поля:
Ancestor type (базовый класс компонента), например TTimer;
Class Name (имя класса создаваемого компонента), например TMyTimer;
Palette page (имя страницы в палитре компонентов), здесь лучше указать уникальное имя для создания своей странички, например Std;
Unit file name (местонахождение файла компонента) изменяем на текущий каталог проекта.
Нажимаем Ok и выполняем Save All (рис. 22.6).
После компиляции получаем сообщение, показанное на рис. 22.7, и на палитре компонентов появляется новая закладка с именем Std, которая содержит созданный компонент (рис. 22.8).
Рис. 22.5. Окно опций проекта, содержащего пакеты
Рис. 22.6. Окно опций проекта, содержащего пакеты
Рис. 22.7. Сообщение об успешной инсталляции компонента
Рис. 22.8. Новая закладка на палитре компонентов с пользовательским компонентом.