- •Коренькова Татьяна Николаевна
- •Часть 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). Ошибки, возникающие во время выполнения программ
- •Ошибки ввода-вывода
- •Критические ошибки
- •Фатальные ошибки
- •Литература
Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
Создайте еще один метод формы tForml — функцию ImagelnShape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
functionTForml.ImagelnShape (Image : TImage;
Shape : TShape) : Boolean;
begin
if(Image.Left >= Shape.Left) and
(Image.Left+Image.Width <= Shape.Left+Shape.Width) and (Image.Top >= Shape.top) and (Image.Top + Image.Height) <= (Shape.Top + Shape.Height) then
ImagelnShape :=True{Рисунок в середине фигуры}
else
ImagelnShape := False; {Рисуноквнефигуры}
end;
Функция ImagelnShape является методом класса Forml, поэтому обращение к свойствам любых объектов формы Forml осуществляется непосредственно с помощью имени этих объектов, например, Image.Тор. Декларацию функции вставьте в раздел описания формы typeTForml в раздел деклараций общедоступных процедур после служебного слова public:functionImageInShape(Image:TImageShape:TShape):Boolean;
11*. Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
procedure TForml.BitBtnlClick(Sender: TObject); begin
{Останавливаемобатаймера}
Timer 1.Enabled := False; {Останавливаеммигания Labell}
{Останавливаем индикатор времени}
Timer2.Enabled := False;
if ImageInShape(Imagel,Shape2) and
ImageInShape(Image2,Shape3) and
ImageInShape(Image3,Shapel) then begin
{Считываемфайлгромкогоаплодирования}
MediaPlayerl.FileName := 'applause.wav";
MediaPlayerl.Open; {Открываемплеер}
MediaPlayerl.Play; {Воссоздаем звук}
{Открываем, окно сообщения "Правильно!"}
MessageDlg('11равильно!', mtlnformation, [mbOk], 0);
end else begin
MediaPlayerl.FileName := 'ding.wav';
MediaPlayerl.Open;
MediaPlayerl.Play; {Подаемзвук "ДИНГ"} MessageDlg('He правильно!', mtlnformation, [mbOk], 0);
{Включаем оба таймера и индикатор времени)
Timerl.Enabled := True;
Timer2.Enabled := True;
Gaugel.Progress := 100;
end;
11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
procedureTForml.BitBtnlClick(Sender : Tobject);
varcheck 1, check2, check3 : integer;
begin
{Где находится первый рисунок?){В 1-ойфигуре)
if ImageInShape(Imagel,Shape 1) then checkl := 1; {Во 2-ойфигуре)
if ImageInShape(Imagel,Shape2) then checkl := 2; {В 3-ейфигуре)
if ImageInShape(Imagel,Shape3) then checkl := 3; {Гденаходитсявторойрисунок?) {В 1-ойфигуре)
if ImageInShape(Image2,Shape 1) then check2 := 1; {Во 2-ойфигуре)
if ImageInShape(Image2,Shape2) then check2 := 2; {В 3-ейфигуре)
if ImageInShape(Image2,Shape3) then check2 := 3; {Гденаходитсятретийрисунок?) {В 1-ойфигуре)
if ImageInShape(Image3,Shapel) then check3 := 1; {Во 2-ойфигуре)
if ImageInShape(Image3,Shape2) then check3 := 2; {В 3-ейфигуре)
if ImageInShape(Image3,Shape3) then check3 := 3;
{Еслирисункирасположеныправильно)
if (check[i, 1] = checkl) and (check[i, 2] = check2)
and (check[i, 3] = check3) then {считаемудачныепопытки)
score := score + 1; SetPicture; {Устанавливаемновыерисунки)
end;
12*.Запрограммируйте второй таймер, обеспечивающий индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной числу в SpinEditl.
Если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" в заданное время, подается звук "ДИНГ" и открывается информационное окно с сообщением "Попробуйте ещё раз!".
procedure TForml.Timer2Timer(Sender: TObject); begin
{Задаем скорость движения индикатора) timer2.interval := SpinEditl.value * 100;
{Работает индикатор времени) gaugel.progress := gaugel.progress - 1; ifgaugel.progress — 0 then{Если время исчерпано) begin
Timer 1.Enabled := False; Timer2.Enabled := False; MediaPlayerl.FileName := 'ding.wav'; MediaPlayerl.Open;
MediaPlayerl.Play; {Подаемзвук "ДИНГ") MessageDlg('Попробуйтеещераз!', mtlnformation,
[mbOk], 0);
Timer 1.Enabled := True; Timer2.Enabled := True; Gaugel.Progress := 100; end;
end;
12**.Запрограммируйте второй таймер, обеспечивающий доступность кнопки "Готово" лишь в случае правильного размещения всех рисунков в отведенных прямоугольниках и показывающий время со скоростью, обратно пропорциональной числу к SpinEditl.
В случае, если пользователь не успел расположить рисунки в прямоугольниках и нажать на кнопку "Готово" за надлежащее время, подается звук "ДИНГ", попытка не засчитывается, и происходит переход к следующей серии рисунков.
procedure TForml .Timer2Timer(Sender: TObject); begin
{Задаемскоростьдвиженияиндикатора } timer2.interval := SpinEditl.value * 100; {Еслиодинизрисунковнаходитсявпервомпрямоугольнике) if ( ImageInShape(Imagel,Shapel) or
ImageInShape(Image2,Shape 1) or ImageInShape(Image3, Shape 1)) and {иодинизрисунковнаходитсявовторомпрямоугольнике) ( ImageInShape(Imagel,Shape2) or
ImageInShape(Image2,Shape2) or I m age I n S liape(Image3 ,Shape2)) and {иодинизрисунковнаходитсявтретьемпрямоугольнике) ( ImageInShape(Imagel ,Shape3) or
ImageInShape(Image2,Shape3) or
ImageInShape(Image3,Shape3)) {токнопка "Готово" становитсядоступной:} then BitBtnl.Enabled := True; {Работаетиндикаторвремени} gaugel.progress := gaugel.progress - 1; if gaugel.progress = 0 then {Есливремяисчерпано} begin
MediaPlayerl.FileName := "ding.wav'; MediaPlayerl .Open;
MediaPlayerl.Play; {Подаемзвук "ДИНГ"} SetPicture; {Меняемсериюрисунков}
end;
end;
