- •Коренькова Татьяна Николаевна
- •Часть 2
- •Практическая часть
- •Типизированные файлы.
- •Нетипизированные файлы.
- •Библеотека graph
- •Практическая часть Основные графические операторы для построения изображений:
- •Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
- •Пример программы построения графика функции.
- •Практическая часть
- •Практическое занятие №24. Изучение интегрированной среды разработчика.
- •Ход работы
- •1. Загрузите систему визуального программирования Delphi.
- •Закройте окно программы Forml, минимизируйте главное окно Delphi и создайте на рабочем диске папку с названием группы, а в ней папку, названную вашей фамилией. Снова активизируйте окно Delphi.
- •Сохраните созданную программу в своей папке.
- •6. Визуально ознакомьтесь со свойствами формы Left, Тор, Width и Height.
- •7. Исследуйте, как изменение значений свойств Left, Тор, Width или Height формы в окне ObjectInspector ведет к изменению расположения или размера формы.
- •8. Измените цвет фона формы.
- •Выполните программу еще раз (см. Пункт 3).
- •Вставьте в форму текстовое поле (объект типа Label) с текстом «Анкета студента».
- •12. Вставьте в форму объект типа Image (картинка).
- •13. Вставьте свою портретную фотографию с помощью свойства Picture (иллюстрация) объекта Imagel.
- •14. Наложите свою художественную фотографию на портретную, вставив в форму еще один объект типа Image.
- •15. Поэкспериментируйте со свойством Visible (видимость) двух изображений, каждый раз выполняя программу (см. Пункт 3).
- •16. Вставьте в форму кнопки для поочередного отображения наложенных одна на другую фотографий - два объекта типа Button с названиями Buttonl и Button2.
- •17. Запрограммируйте кнопку «Портретная фотография» так, чтобы после ее нажатия в форме появлялась портретная фотография.
- •18. Запрограммируйте кнопку «Художественная фотография» соответственно ее назначению (см. Пункт 17).
- •Запустите программу и убедитесь, что кнопки выполняют свои функции. Закройте окно программы «Анкета студента».
- •Создайте ехе-файл проекта
- •Практическое занятие №25 Создание простого проекта. Задачаобобменевалюты
- •Ход работы
- •1. Вставьте в форму два объекта типа RadioButton (переключатель), как показано на рис. 7.
- •2. Задайте начальное значение второго переключателя как активное.
- •16. Запустите программу и убедитесь, что переключатели выполняют предписанные им функции.
- •17. Запрограммируйте кнопку «Выход».
- •18. Запрограммируйте кнопку «Вычислить».
- •24. Создайте ехе-файл Вашей программы.
- •25. Закройте среду Delphi, запустите созданную программу и выполните вычисления для разных входных данных.
- •26. Продемонстрируйте созданную форму преподавателю. За- кончите работу.
- •Практическое занятие №26 Объявление класса, создание экземпляров класса.Задачатабулированияфункции Объекты Memo, MainMenu, PopupMenu, CheckBox, GroupBox. Программирование циклов
- •Ход работы
- •Загрузите среду визуального программирования Delphi.
- •Поменяйте заголовок (Caption) формы с «Forml» на «Табулирование функции» (без кавычек) и увеличьте размеры формы в вертикальном направлении.
- •Смените пиктограмму в левом Верхнем углу формы, указав конкретный файл с рисунком пиктограммы в поле значения свойства Icon (пиктограмма) формы.
- •21. Запрограммируйте команду «Табулировать».
- •Практическое занятие №27 Создание наследованного класса. Задачаобиржеценныхбумаг
- •Ход работы
- •8. В окне текста программы перед разделом implementation введите описание констант и переменных программы:
- •10. В окне текста программы после раздела implementation введите описание метода Refresh формы.
- •Сохраните выполненную на данный момент работу в своей папке.
- •Практическое занятие №28 Перегрузка методов. Задачаотелефонномсправочнике
- •Ход работы
- •8. Сохраните выполненную на данный момент форму в своей папке.
- •9. С помощью мыши задайте ширину столбцов таблицы, на- пример так, как показано на рис. 16.
- •10. Добавьте на форму главное меню и введите названия его команд, как показано на рис. 16 и рис. 17.
- •11. Создайте окно формы «о программе» (см. Рис. 18).
- •Сохраните работу и запустите проект на выполнение.
- •18. Добавьте на форму два объекта - стандартные диалоги Windows для открытия и сохранения файлов.
- •19. Запрограммируйте процедуры открытия и сохранения фай- лов телефонного справочника (команды главного меню «Прочитать из файла» и «Записать в файл»).
- •20. Напишите процедуру создания формы.
- •21. Напишите процедуру заполнения полей редактирования NewEdit.
- •22. Напишите процедуру заполнения комбинированного списка NewComboBox.
- •Сохраните работу, запустите программу, заполните таблицу данными и убедитесь в том, что программа правильно записывает на диск и считывает с диска файлы телефонных справочников.
- •Запрограммируйте команду главного меню «Сохранить изменения в списке записей».
- •Практическое занятие №29 Создание проекта с использованием кнопочных компонентов.
- •Ход работы
- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
- •6*. Введите описание глобальных переменных программы:
- •6**. Введите описания глобальных констант и переменных программы:
- •Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •Создайте еще один метод формы tForml — функцию ImagelnShape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •11*. Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
- •11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
- •Сохраните программу и проект в своей папке.
- •Запустите программу. Перетягивайте мышью рисунки на середину соответствующих фигур.
- •Создайте ехе-файл программы и поупражняйтесь с ней.
- •Упражнения. Совершенствование проекта
- •Практическое занятие №31 Создание проекта с использованием компонентов ввода и отображения чисел, дат и времени. Калькулятор
- •Постановка задачи.
- •Ход работы.
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №33 Разработка оконного приложения. Создание новых форм с меню, геометрическими фигурами, палитрой и со шкалой.
- •Практическое занятие №34 Разработка оконного приложения с несколькими формами. Разработка проекта Halfbottle.
- •Постановка задачи.
- •Ход работы
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №35 Разработка многооконного приложения. Проект “Худой или полный?”.
- •Упражнения
- •Сообщения и коды ошибок
- •50. Do expected (Нуженоператор do).
- •54. Of expected (Требуется of).
- •55. Interface expected (Требуется интерфейсная секция).
- •57. Then expected (Требуется then).
- •58. To or downto expected (ТребуетсяТОили downto).
- •73. Implementation expected (Отсутствует исполняемая часть модули).
- •102. String constant expected (Нужнаконстантастроковоготипа).
- •106. Character expression expected (Предшествующее выражение должна иметь символьный тип).
- •161. Code generation error (Ошибка генерации кода).
- •162. Asm expected (Отсутствует зарезервированное слово asm). Ошибки, возникающие во время выполнения программ
- •Ошибки ввода-вывода
- •Критические ошибки
- •Фатальные ошибки
- •Литература
5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
procedure TForml.TimerlTimer(Sender: Tobject); begin
{Еслиполемигает}
if Labell.Visible = True then
Labell.Visible := False {полегасится,}
else
{иначе - полезасвечивается} Labell.Visible := True;
end;
6*. Введите описание глобальных переменных программы:
varForml : Tforml
{Эта строка уже есть в заготовке модуля} shiftX, shiftY :integer;
6**. Введите описания глобальных констант и переменных программы:
const к = 4; {Количество обновлений содержания теста}
a: array [l..k, 1..3] of string = ( {Массиврисунков} ('car.wmf, 'money.wmf', 'bomb.wmf'),
('coins.wmf', 'clock.wmf, 'tennis.wmf), ('brick.wmf, 'building.wmf, 'champgne.wmf), ('dice.wmf, 'donkey.wmf, 'door.wmf) ); b: array [l..k, 1..3] of string = ( {Массивслов}
('money', 'car', 'bomb'),
('tennis', 'clock', 'coins'),
('building', 'champagne', "brick'),
('dice', 'door', 'donkey')
);
check: array [l..k, 1..3] of integer = (
(2, 1, 3), {Таблица отображения} (3, 2, 1), {массива рисунков а в }(3, 1, 2), {массив слов Ъ. Здесь число-} (1, 3, 2) ); {номер рисунка к слову}
var
Forml : TForml; {Этастрокаужеестьвзаготовкемодуля} i, score : integer; shiftX, shiftY : integer; leftl, left2, left3 : integer; topi, top2, top3 : integer;
7*.Запрограммируйте кнопку BitBtn2 как кнопку закрытия окна командой close.
Вставьте рисунки bomb.wmf, tennis.wmf и money.wmf, из папки С:\ ProgramFiles \ MicrosoftOffice \ Clipart \ Popular в объекты Imagel, Image2 и Image3 соответственно.
Свойствам Caption текстовых полей Label2, Label3 и Label4 присвойте значения "money", "bomb" и "tennis" соответственно.
7**.Запрограммируйте процедуры: создания формы FormCreate, вставки в неё рисунков SetPicture, вывод информации о результате теста Informationи кнопку BitBtn2:
procedure Tb1orml.FormCreate(Sender: TObject); begin
i := 0; {Номер обновления содержания теста) score := 0; {Набранные пользователем баллы) {Сохраняем начальные координаты)
{левых верхних углов) {трех рисунков в форме)
leftl ;= Imagel.Left left2 := Image2.Left left3 := Image3.Left topi := Imagel.Top; top2 := Image2.Top;
top3 := Image3.Top;
SetPicture; {Процедура i-ойвставкирисунков)
end;
procedure Information; begin
{ОстанавливаемобатаймераПрекращаеммигание Labell} Forml.Timer 1.Enabled := False; {Останавливаемдвижениеиндикаторавремени) Forml.Timer2.Enabled := False; {Результаттестаприводимк 100 баллам) score := (score * 100) div к;
{Если результат > 90 - считываем файл громкого
аплодирования)
if score >90 then
Forml.MediaPlayerl.FileName :— 'applause.wav';
{Если результат между 70 и 90 - считываем файл
легкогоаплодирования.)
if (score >70) and (score <90) then
Forml.MediaPlayerl.FileName := 'clap.wav'; {Иначе файл не считываем и аплодирования не будет)
Forml.MediaPlayerl.Open; {Открываем мульт. плеер)
Forml.MediaPlayerl.Play; {Воссоздаём звук }
{Открываем окно сообщения"Вы набрали ## баллов с 100}
MessageDlg('Bbi набрали '+IntToStr(score)+' баллов из 100', mtInformation,[mbOk], 0); {После щелчка на кнопке "Ok" информационного окна:} {Закрываем окно программы. - заканчиваем работу}
Forml.close;
end;
procedure TForml.BitBtn2Click(Sender: TObject); begin
Information;
end;
Процедуры Information и SetPicture не являются методами класса Forml. Поэтому изменение свойств любых объектов формы происходит в них путем явного указания имени формы Forml перед именем соответствующего объекта, например, Forml.Timer1.Enabled. Декларации процедур Information и
SetPicture вставьте между описанием типа TForml и разделом подсоединенных модулей - uses:
procedureInformation; procedureSetPicture;
8. Обеспечьте перетягивания первого рисунка на форме, запрограммировав обработки таких трех событий для объекта Imagel: OnMouseDown (ЕслиНажатьМышь), OnMouseMove (ЕслиПеретягиватьМышь) и OnMouseUp (ЕслиОтпустить-Мышь). Для заполнения заготовок приведенных процедур воспользуйтесь закладкой Events окна инспектора объектов первого рисунка.
procedureTForml.ImagelMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
{Временная переменная Tag объекта Imagel=1, если) {клавиша мыши в этот момент нажата) Imagel.Tag := 1;
shift := Y; {Запоминаем координату (X;Y) точки) shift := X; {щелчка мыши в середине рисунка) end;
procedureTForml.lmagelMouseMove(Sender: TObject;Shift: TshiftState; X,Y: Integer);
begin
ifImagel.Tag = 1 then {Еслинажатаклавишамыши} begin
{Меняем, координаты рисунка на величину изменения координаты указателя мыши (X;Y) с учетом его смещений в середине рисунка shiftX, shiftY}
Imagel.Top := Imagel.Top + Y - shiftY;
Imagel.Left := Imagel.Left + X - shiftX;
end;
end;
procedureTForml.ImagelMouseUp(Sender : Tobject;
Button : TMouseButton; Shift : TShiftState; X, Y : Integer);
begin
{Запоминаем, что клавиши мыши отпущены.} Image 1.Tag := 0 end;
Обратите внимание, что программа не проверяет, какую именно клавишу мыши нажал пользователь, поэтому перетягивать картинки можно любой клавишей. Проверить клавиши мыши можно, проанализировав аргумент Button (типа TMouseButton) приведенных процедур: Button = {mbLeft (левая клавиша), mbRight (правая), mbMiddle (средняя)}. Координаты указателя мыши в пикселях передаются в процедуры с помощью аргументов X и Y типа integer.
