- •ВВЕДЕНИЕ
- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Установка и запуск системы
- •Файлы проекта
- •ЛАБОРАТОРНАЯ РАБОТА 1
- •Цель работы
- •Основные сведения
- •Интерфейс системы
- •Меню и команды
- •Рис.1 Окна Delphi
- •Главное меню
- •Меню File
- •Меню Edit
- •Меню Search
- •Меню View
- •Меню Project
- •Команда Project+Options
- •Страница Compiler окна свойств проекта
- •Меню Run
- •Меню Tools
- •Команда Tools+Environment Options. страница Preferences
- •Команда Tools+Options, страница Display
- •Команда Tools+Options, страница Library
- •Команда Tools+Debugger Options, страница Language Exceptions
- •Получение помощи
- •Форма – Form
- •Поле метки – Label
- •Кнопка – Button
- •Выполнение работы
- •Создание программы
- •Настройка среды
- •Создать новый проект
- •Модификация свойств формы
- •Добавление элементов управления в форму
- •Добавление поля метки
- •Добавление кнопки
- •Окно редактора кода
- •Создание исполняемого модуля
- •Варианты заданий
- •ЛАБОРАТОРНАЯ РАБОТА 2
- •Цель работы
- •Основные сведения
- •Отладка программы
- •Управление последовательностью действий
- •Наблюдение (слежение) за переменными
- •Рис. 2. Диалоговое окно «Свойства наблюдаемого выражения»
- •Рис. 3. Окно «Список наблюдаемых значений»
- •Поле ввода – Edit
- •Выполнение работы
- •Задание
- •Создание формы
- •Расположение элементов управления в форме
- •Процедура обработки нажатия кнопки
- •Отладка программы
- •Варианты заданий
- •ЛАБОРАТОРНАЯ РАБОТА 3
- •Цель работы
- •Основные сведения
- •Компонент MainMenu
- •Рис.4. Окно построителя меню
- •Компонент ToolBar
- •Компонент ImageList
- •Рис 5. Окно контейнера изображений ImageList.
- •Компонент ActionList
- •Рис.6. Окно редактирования ActionList
- •Обработка исключительных ситуаций
- •Модальные окна
- •Пример выполнения
- •Задание
- •Главная форма приложения
- •Рис.7. Главная форма проекта
- •Модальные окна
- •Рис.8. Модальные формы проекта
- •Варианты заданий
- •ЛАБОРАТОРНАЯ РАБОТА 4
- •Цель работы
- •Основные сведения
- •Флажок – Check Box
- •Переключатели – Radio Button
- •Список – List Box
- •Комбинированный список – Combo Box
- •Кнопка с рисунком – BitBtn
- •Выполнение работы
- •Задание
- •Проектирование
- •Создание формы
- •Рис.9. Главное окно проекта
- •Расположение элементов управления в форме
- •Процедуры обработки
- •Кнопка добавления слова
- •Кнопка удаления слова
- •Отображение выбранного элемента списка
- •Варианты заданий
- •ЛАБОРАТОРНАЯ РАБОТА 5
- •Цель работы
- •Основные сведения
- •Класс TFont
- •Класс TPen
- •Класс TBrush
- •Класс TCanvas
- •Компонент Image
- •Компонент Timer
- •Стандартный диалог ColorDialog
- •Стандартный диалог FontDialog
- •Пример выполнения работы
- •Рис. 10. Главная форма проекта примера
- •Варианты заданий
- •ЛАБОРАТОРНАЯ РАБОТА 6
- •Цель работы
- •Основные сведения
- •Класс TStringList
- •Основные приемы использования списка TStringList.
- •Работа с текстовыми файлами
- •Основные приемы работы с текстовым файлом
- •Стандартные диалоги открытия и сохранения файла
- •Пример выполнения работы
- •Рис 11. Главная форма проекта
- •Рис.12. Запрос фамилии владельца
- •Варианты заданий
- •СОДЕРЖАНИЕ
– 29 –
Пример выполнения работы
Рассмотрим задачу изображения цветного шара перемещающегося в пределах некоторого прямоугольника. В процессе перемещения пользователь должен иметь возможность изменить цвет, размер шара и способ взаимодействия выводимого изображения с фоном.
На главную форму проекта поместим компоненты Image, Timer, ColorDialog, Edit, UpDown, две кнопки BitBin и два зависимых переключателя RudioButton.
Компонент Image используется как прямоугольная область, в которой происходит движение шара. Рисование осуществляется на канве этого компонента. Обработчик события OnTimer компонента Timer производит удаление изображения шара и его прорисовку на новом месте, что и создает эффект движения. Способ удаления изображения зависит от установленного режима его взаимодействия с фоном (устанавливается переключателями RudioButton). Если установлен режим pmXor, то изображение исчезает после повторного вывода в то же самое место. В режиме pmCopy необходимо поверх изображения шара вывести шар, цвет которого совпадает с цветом фона (в данном случае белого цвета). Компонент Edit содержит текущий радиус шара в пикселях. Он недоступен для редактирования. Изменение радиуса реализуется связанным с ним компонентом UpDown. Кнопки BitBin производят вызов диалога ColorDialog и выход из программы.
На рис. 10 изображена главная форма проекта. Сам проект с исходными текстами программ находится в папке GraphicLab.
Для реализации движения шара введены переменные.
•X, Y – Координаты левого верхнего угла прямоугольника, в который вписан шар;
•dX, dY – приращение соответственно по оси X и по оси Y;
•R – радиус нарисованного шара;
•С – цвет нарисованного шара.
Прежде всего, создадим процедуру Draw, которая выводит эллипс, вписанный в квадрат
(X, Y) – (X+2*R, Y+2*R).
procedure TfGrafic.Draw; begin
Im.Canvas.Ellipse(X,Y,X+2*R,Y+2*R);
end;
Рис. 10. Главная форма проекта примера
При запуске программы в обработчике события OnCreate формы задаем режим взаимодействия рисунка с фоном pmXor, начальный радиус окружности, случайным образом выби-
Калачев Д.П., Лутай В,Н,. Скороход С.В. Delphi. Лабораторные работы.
– 30 –
раем координаты X, Y и их шаг dX, dY, задаем начальный зеленый цвет пера и кисти, прорисовываем окружность и запускаем таймер.
procedure TfGrafic.FormCreate(Sender: TObject); begin
Im.Canvas.Pen.Mode := pmXor; r := uSize.Position; randomize;
X:= Random( Im.Canvas.ClipRect.Right – 2 * R );
Y:= Random( Im.Canvas.ClipRect.Bottom – 2 * R ); dX := 1 + Random( 10 );
dY := 1 + Random( 10 );
C:= clGreen; dColor.Color := C;
Im.Canvas.Brush.Color := C; Im.Canvas.Pen.Color := C; draw;
Tim.Enabled := true
end;
В обработчике события OnTimer таймера реализуется передвижение окружности на новое место. Сначала необходимо стереть старое изображение. В режиме pmCopy устанавливаем белые цвета пера и кисти и прорисовываем окружность белым цветом. В режиме pmXor достаточно просто повторно прорисовать окружность. Далее устанавливаем в переменные C и R новые установленные значения цвета и радиуса окружности, после чего вычисляем новые координаты X, Y описывающего окружность квадрата и прорисовываем окружность. При вычислении координат необходимо следить, чтобы они не вышли за границы объекта Im, а при достижении границы шаг по соответствующей координате изменялся на противоположный.
procedure TfGrafic.TimTimer(Sender: TObject); begin
if rCOPY.Checked then begin Im.Canvas.Brush.Color := clWhite;
Im.Canvas.Pen.Color |
:= clWhite; |
|
end; |
|
|
draw; |
dColor.Color; |
|
C := |
:= C; |
|
Im.Canvas.Brush.Color |
||
Im.Canvas.Pen.Color |
:= C; |
|
r := |
uSize.Position; |
|
X := |
X+dX; |
|
With |
Im.Canvas.Cliprect do begin |
|
If |
X < Left then begin |
|
X |
:= Left; |
|
dX := -dX |
|
|
end; |
|
|
If |
X+2*R > Right then begin |
|
X |
:= Right-2*R; |
|
dX := -dX |
|
|
end |
|
|
end; |
Y + dY; |
|
Y := |
|
Калачев Д.П., Лутай В,Н,. Скороход С.В. Delphi. Лабораторные работы.