- •Содержание
- •Введение
- •Лабораторная работа № 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Создание Справочного файла
- •Теоретические сведения Создание справочной системы
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
const L:double=-5; // левая граница графика
R:double=5; // правая граница графика
st:double=0.1; // шаг
var
FrmGraf: TFrmGraf;
Implementation
//функция для которой строится график
function y(x:double):double;
begin
y:=abs(x)+1;
end;
//обработка события при нажатии на кнопку «График»
procedure TFrmGraf.BtnGrafClick(Sender: TObject);
var m,i:integer;
x:double;
begin
BtnClear.Enabled:=true;
ChtY.Visible:=true;
ChtY.Title.Text.Add('График функции y:=abs(x)+1');
m:=round(abs(R-L)/st); //количество точек на графике
x:=L; // начальное значение x
for i:=0 to m-1 do begin
ChtY.Series[0].AddXY(x,y(x),'',clTeeColor);
x:=x+st;
end;
BtnGraf.Enabled:=false;
end;
//обработка события при нажатии на кнопку «Очистить»
procedure TFrmGraf.btnClearClick(Sender: TObject);
begin
ChtY.Title.Text.Delete(1);
ChtY.Series[0].Clear;
BtnGraf.Enabled:=true;
end;
//обработка события изменения выбора «Показать/Скрыть легенду»
procedure TFrmGraf.RgrLegClick(Sender: TObject);
begin
if RgrLeg.ItemIndex=0 then
ChtY.Legend.Visible:=true
else ChtY.Legend.Visible:=false;
end;
Рис. 20.2. Экранная форма примера 20.1
Создание библиотеки динамической компоновки (dll)
Библиотека динамической компоновки (библиотека) не является исполняемой программой, но содержащийся в ней код может быть вызван из приложения или из другой DLL.
Создание библиотеки начинается выбором компонента DLL Wizard на странице New в хранилище объектов, который вызывается через меню File New Other… (рис. 20. 3). Первоначально проект библиотеки состоит из одного файла, который имеет вид
library Project2;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
SysUtils,
Classes;
{$R *.res}
Begin
end.
Этот проект является заготовкой, к которой необходимо добавить код, для содержания которого создана эта библиотека.
Ключевое слово library указывает, что это динамическая библиотека, а не исполняемый файл, и что при компиляции проекта будет создан файл с расширением DLL, а не ЕХЕ.
Код, располагаемый между операторными скобками begin и end, служит для инициализации библиотеки и автоматически выполняется при ее загрузке. При инициализации библиотеки можно проверить какие-либо условия, задать начальные значения переменным и т. п.
Комментарий в проекте библиотеки предупреждает, что если функции библиотеки в качестве параметров или результата передают строки, то в раздел uses самой библиотеки и вызывающих ее программ и других библиотек должен быть включен модуль ShareMem. Причем этот модуль должен быть первым в списке модулей. Кроме того приложению и библиотеке при передаче строк требуется файл BorlndMM.dll.
Рис. 20.3. Хранилище объектов Delphi с DLL Wizard
Дальнейшее создание библиотеки заключается в следующем
в добавлении к проекту функций;
в экспортировании их из библиотеки.
Описание функций располагают между секциями подключения модулей и инициализации. Функции кодируются обычным способом.
Экспортирование функций заключается в объявлении функции как внешней. Для этого функция указывается в секции exports, которая имеет следующий вид:
exports
<Имя функции> [name <Внешнее имя функции>],
<Имя функции> [name <Внешнее имя функции>];
Имя функции — это имя, заданное при описании функции в проекте библиотеки. Внешнее имя представляет собой имя, под которым функция экспортируется и может быть вызвана извне DLL. Указывать внешнее имя не обязательно, в этом случае функция экспортируется под своим именем.
Кроме экспортируемых функций библиотека может включать в себя внутренние (неэкспортируемые) функции, а также глобальные переменные.