Разработка Windows-приложений в среде Borland Delphi
Знакомство с интегрированной средой Delphi. Базовые компоненты Delphi. Элементы пользовательского интерфейса. Использование массива объектов в приложении. Алгоритмы сортировки списка. Использование звука в приложениях. Графические возможности Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 04.05.2018 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Наиболее распространенным видом сортировки данных является упорядочивание массива - расположение записей сортируемого массива данных в порядке монотонного изменения некоторого ключевого признака. Сортировка данных позволяет сократить во много раз продолжительность решения задач, которые связаны с обработкой больших массивов информации. Смысл любой сортировки заключается в перестановке элементов таблицы в определенном заданном порядке. Упорядочивание осуществляется в процессе многократного просмотра исходного массива.
Сортировка простым выбором
1. Начинаем сортировку с первого элемента i=1;
2. Найти максимальный элемент и его номер в массиве A1, A2, .. .An
3. Поменять местами A1 и максимальный элемент Ak;
4. перейти к следующему элементу i=i+1;
5. если рассмотрены не все N-1 элементы, то повторить с п. 2.
Пузырьковая сортировка (простой обмен)
1. i=1;
2. Сравнить попарно и, при нарушении упорядоченности, поменять местами элементы Ai и Ai+1, Ai+1 и Ai+2,. . . An-1 и An
3. i=i+1
4. Если i<=N, то повторить с п.2.
Простые вставки (добавление нового элемента в массив, не нарушая его упорядоченности)
1. Задать значение X;
2. i=1;
3. Найти место для Х, когда выполняется Ai<=X<= Ai+1 ;
4. Выполнить сдвиг элементов Ai+1 Ai+2 … An вправо;
5. Поставить значение Х на нужное место (Ai+1 =X).
Постановка задачи: Разработать приложение, реализующее пузырьковую сортировку элементов одномерного массива. Предусмотреть визуализацию алгоритма сортировки через использование массива объектов. Объекты массива имеют различную высоту, каждая из которых соответствует значению элемента массива данных.
Порядок выполнения
1. Создать новый проект и установить на форме компоненты и изменить значения свойств в соответствии с таблицей:
Button1 |
Caption |
Изменить |
|
Top |
220 |
||
Left |
15 |
||
Button1 |
Caption |
Сортировать |
|
Top |
220 |
||
Left |
150 |
||
Timer1 |
Interval |
0 |
|
Label1 |
Top |
25 |
|
Left |
30 |
||
Color |
clBlue |
||
Width |
15 |
||
Height |
100 |
||
Name |
Palka |
||
Visible |
False |
2. Объявить массив данных и массив объектов:
mas: Array[1..15] of Integer;
zabor: Array[1..15] of TLabel;
a,b, i: Integer;
3. Для формы выбрать событие Create и ввести код:
For i:=1 to 15 Do Begin
zabor[i] := TLabel.Create(palka) ;
zabor[i].Parent := Form1;
zabor[i].Left :=i*30;
zabor[i].Top:=palka.Top;
zabor[i].Visible :=true;
zabor[i].Width :=palka.Width ;
zabor[i].Height :=palka.Height ;
zabor[i].Color :=palka.Color ;
end;
b:=0; //количество упорядоченных элементов
a:=1 ;//номер элемента, с которого начинается сравнение пар
4. Для кнопки Изменить ввести код:
Randomize;
For i:=1 To 15 Do
Begin
zabor[i].Height :=random(200)+10;
mas[i]:=zabor[i].Height ;
end;
5. Для кнопки Сортировать ввести код
timer1.Interval :=1000;
6. Для таймера ввести код:
Var
c: integer;
Begin
For i:=a to 14 do
If mas[i]>mas[i+1] then
Begin
c:=mas[i];
mas[i]:=mas[i+1];
mas[i+1]:=c;
zabor[i].Height :=mas[i];
zabor[i+1].Height :=mas[i+1];
a:=i+1;
exit;
end;
a:=1;
b:=b+1;
if b>14 then timer1.Interval :=0;
End;
7. Проверить работу приложения.
8. Модернизировать приложение:
· вывести сообщение об окончании сортировки;
· создать еще один массив меток для вывода значений элементов массива;
· добавить две радиокнопки и внести изменения в программу для выбора режима сортировки: по возрастанию и по убыванию.
9. Результат показать преподавателю.
Задания для самостоятельного выполнения
Задание №1
Модернизировать разработанное приложение: первую половину массива сортировать по возрастанию, а вторую половину массива по убыванию.
Задание №2
Модернизировать разработанное приложение: ввести значение для дополнительного элемента массива и вставить его, не нарушая упорядоченности. Визуально новый элемент должен отличаться по цвету.
Задание №3
Разработать приложение, реализующее сортировку элементов одномерного массива простым выбором. Предусмотреть визуализацию алгоритма сортировки через использование массива объектов.
Задание №4
Разработать приложение, реализующее сортировку элементов массива объектов по цвету. Используйте функцию RGB(n1,n2,n3) для свойства Color, где n1, n2, n3 случайные числа от 0 до 255.
Кнопка Изменить должна переопределять цвет элементов массива объекта.
Задание №5
Разработать приложение, реализующее сортировку элементов массива объектов по алфавиту значений свойства Caption. Кнопка Изменить должна переопределять значение свойства Caption (случайный символ: буква русского алфавита).
Контрольные вопросы
1. Зачем нужна сортировка?
2. Какие виды сортировки бывают?
3. Какое основное требование предъявляется к сортировке?
ПРАКТИЧЕСКАЯ РАБОТА № 8
Тема Использование звука и видео в приложениях.
Цель работы Получить навыки использования медиаплеера при проектировании приложений.
Пояснения к работе
Компонент MediaPlayer (рис.1), значок которого находится на вкладке System, позволяет воспроизводить видеоролики, звук и сопровождаемую звуком анимацию.
Рис. 1
В результате добавления к форме компонента MediaPlayer на форме появляется группа кнопок (рис. 2), подобных тем, которые можно видеть на обычном аудио- или видеоплеере. Назначение этих кнопок пояснено в таблице 1.
Рис. 2. Компонент MediaPlayer
Таблица 1 Кнопки компонента MediaPlayer
Кнопка |
Обозначение |
Действие |
|
Воспроизведение |
btPlay |
Воспроизведение звука или видео |
|
Пауза |
btPause |
Приостановка воспроизведения |
|
Стоп |
btStop |
Остановка воспроизведения |
|
Следующий |
btNext |
Переход к следующему кадру |
|
Предыдущий |
btPrev |
Переход к предыдущему кадру |
|
Шаг |
btStep |
Переход к следующему звуковому фрагменту, например, к следующей песне на CD |
|
Назад |
btBack |
Переход к предыдущему звуковому фрагменту, например, к предыдущей песне на CD |
|
Запись |
btRecord |
Запись |
|
Открыть/Закрыть |
btEject |
Открытие или закрытие CD-дисковода компьютера |
Таблица 2. Свойства компонента MediaPiayer
Свойство |
Описание |
|
Name DeviceType FileName AutoOpen Display VisibleButtons |
Имя компонента. Используется для доступа к свойствам компонента и управлением работой плеера Тип устройства. Определяет конкретное устройство, которое представляет собой компонент MediaPiayer. Тип устройства задается именованной константой: dtAutoSelect -- тип устройства определяется автоматически; dtVaweAudio -- проигрыватель звука; dtAVivideo -- видеопроигрыватель; dtCDAudio -- CD-проигрыватель Имя файла, в котором находится воспроизводимый звуковой фрагмент или видеоролик Признак автоматического открытия сразу после запуска программы, файла видеоролика или звукового фрагмента Определяет компонент, на поверхности которого воспроизводится видеоролик (обычно в качестве экрана для отображения видео используют компонент Panel) Составное свойство. Определяет видимые кнопки компонента. Позволяет сделать невидимыми некоторые кнопки |
Помимо воспроизведения звука, компонент MediaPiayer позволяет просматривать видеоролики и мультипликации, представленные как AVI-файлы (AVI -- это сокращение от Audio Video Interleave, что переводится как чередование звука и видео, т. е. AVI-файл содержит как звуковую, так и видеоинформацию).
Постановка задачи
Разработать приложение, позволяющее воспроизводить звуковые файлы различных форматов, приложение должно выводить информацию о длине звукового файла, времени воспроизведения и времени, которое осталось до конца звучания файла.
Порядок выполнения 1 часть
Создать новый проект.
Для формы установить следующие значения свойств:
Borderlcons / biMaximize False
BorderStyle bsSingle
Caption Позолоченный граммофон
Color СlGray
Position poScreenCenter
Установить на форму компонент MediaPlayer (System), для свойства Visible установите значение False.
Установитm на форме следующие компоненты: шесть кнопок, четыре метки, таймер, компонент для открытия файлов/
Примечание:
в Label1 (самый большой индикатор) будет показываться текущая позиция в файле.
в Label2 (справа сверху) должно отображаться имя открытого файла
в Label3 (справа в середине) - длина открытого файла
в Label4 - сколько осталось времени до конца файла.
Для всех меток установить значение свойства AutoSize = False
Привести форму в соответствие с образцом.
Для всех кнопок установить значение свойства Cursor crHandPoint
Самостоятельно изменить интерфейс проекта (цвет, шрифты) и сохранить.
Для инициализации объектов для Form выберите событие OnActivate и введите код
label1.Font.Color := clGreen; Label2.Font.Color := clGreen;
LabeL3.Font.Color := clGreen; Label4.Font.Color := clGreen;
Label1.Caption := '00:00'; Label2.Caption := 'no file...';
LabeL3.Caption := '00:00'; LabeL4.Caption := '00:00';
//задание фильтра для OpenDialog
OpenDialog1.Filter := 'Wav files (*.wav)|*.WAV';
Определите процедуру, которая выполняется при открытии звукового файла (кнопка OPEN)
If OpenDialog1.Execute=true Then
Begin
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPlayer1.Open; // открываем файл
Label1.Font.Color := clLime; // включаем индикаторы
Label2.Font.Color := clLime;
LabeL3.Font.Color := clLime;
Label4.Font.Color := clLime;
Output; // присваиваем индикаторам значения
Timer1.Enabled:=True;
Создать новую функцию MusicToStr и процедуру Output, которая преобразует длину файла, текущую позицию или количество оставшегося до конца звучания времени в форму, легкую для восприятия.
Function TForm1.MusicToStr(n: longint): string;
Var
s: string; //рабочая переменная для формирования удобочитаемых значений индикаторов
min, sec: Longint;
Begin
//получаем секунды и минуты из миллисекунд
sec := trunc(n/1000);
min := trunc(sec/60);
sec := sec - min*60;
s := IntToStr(min);
// добавляем в строку 0, если секунд больше десяти // чтобы получилось 2:06, а не значение 2:6;
If sec<10 Then
s := s + ':0' + IntToStr(sec)
Else
s := s + ':' + IntToStr(sec);
MusicToStr := s;
End;
procedure TForml.Output; //вывод значений на индикаторы
Var
leng, posit, remain: longint; // длина файла, позиция в файле и оставшееся время
Begin
//читаем свойства проигрывателя
leng := MediaPlayer1.Length;
posit := MediaPlayer1.Position;
remain := leng - posit;
Label1.Caption := MusicToStr(posit);
Label2.Caption := MediaPlayer1.FileName;
Label3.Caption := MusicToStr(leng);
Label4.Caption := MusicToStr(remain);
End;
Объявить созданные процедуру и функцию:
Function MusicToStr(n: longint): string;
Procedure Output;
13. Определите процедуру, которая выполняет проигрывание звукового файла(кнопка PLAY):
If mpCanPlay in MediaPlayer1.Capabilities Then MediaPlayer1.Play;
13. Для кнопок STOP и PAUSE ввести соответствующий код:
If mpCanPlay in MediaPlayer1.Capabilities Then
Begin
MediaPlayer1.Stop;
MediaPlayer1.Position := 0;
End;
If mpCanPlay in MediaPlayer1.Capabilities Then MediaPlayer1.Pause;
14. Ввести код для кнопок перемотки вперед и назад:
//кнопка перемотки вперед
If mpCanPlay in MediaPlayer1.Capabilities Then
Begin
If (MediaPlayer1.Position+10000)<=MediaPlayer1.Length Then
MediaPlayer1.Position := MediaPlayer1.Position + 10000
Else
MediaPlayer1.Position := MediaPlayer1.Length;
MediaPlayer1.Play;
End;
//кнопка перемотки назад
Begin
If mpCanPlay in MediaPlayer1.Capabilities Then
Begin
If MediaPlayer1.Position>=10000 then
MediaPlayer1.Position := MediaPlayer1.Position -10000
Else
MediaPlayer1.Position := 0;
MediaPlayer1 .Play;
End;
Для объекта таймер установить значения свойства Interval= 1000, Enabled = False, выберить событие OnTimer и ввести вызов процедуры OutPut.
Добавить в конец процедуры Button1Click строку Timerl.Enabled:=True;
Проверить работу приложения.
Самостоятельно модернизировать приложение для воспроизведения звуковых файлов различных форматов.
Проект сохранить. Результат показать преподавателю.
2 часть
1. Создать новый проект.
2. На форме установить компоненты: одну кнопку (для открытия файлов), один компонент MediaPlayer, одну рамку GroupBox (Standard), один диалог для открытия файлов
3. Всем объектам изменить свойств в соответствии с таблицей:
компонент |
свойство |
значение |
|
Forml |
BorderIcons/biMaximize bibiMaximize |
False |
|
BorderStyle |
bsSingle |
||
Caption |
Телевизор «СОНЯ» |
||
Height |
356 |
||
Width |
351 |
||
Button 1 |
Caption |
Открыть |
|
Left |
3 |
||
Top |
296 |
||
MediaPlayer1 |
Left |
88 |
|
Top |
296 |
||
GroupBox |
Caption |
||
Height |
289 |
||
Width |
337 |
||
Left |
3 |
||
Top |
0 |
delphi интегрированный приложение графический
4. Сравните свою форму с образцом
5. Для кнопки Открыть ввести код:
If OpenDialog1.Execute=true then
begin
MediaPlayer1.FileName := OpenDialog1.FileName;
MediaPIayer1.Open;
end;
6. Для формы выберите событие OnActivate и ввести код:
//назначаем область просмотра для видеофайла
MediaPlayer1.Display := GroupBox1;
7. Проверьте работу приложения
ПРАКТИЧЕСКАЯ РАБОТА № 9
Тема Графические возможности Delphi
Цель работы: Получить навыки вывода графики на форму.
Пояснения к работе
Графика выводится на поверхность объектов Image, Form, PaintBox. Поверхность объекта соответствует свойству Canvas (холст). Существует объект типа TCanvas, его методы позволяют выводить графические примитивы. У примитивов можно менять цвет и толщину рисования, стиль и цвет заполнения.
Pixels[x,y] - точка;
Ellipse(x,y,x1, y1)- эллипс;
Arc(x, y, x1,y1,x2,y2,x3,y3) - дуга;
LineTo(x,y) - линия от текущей позиции карандаша в точку с координатами x,y.
Chord(x,y,x1,y1,х2,у2,х3,у3) - дуга замкнута и залита цветом;
Pie(x,y,x1,y1,x2,y2,x3,y3) - замкнутый и закрашенный контур;
Rectangle(x,y,x1,y1) - прямоугольник;
RoundRect(x,y,x1,y1,x2,y2) - закругленный прямоугольник;
Polygon(Pol) - построение ломаной линии по координатам, хранящимся в массиве Pol (тип массива TPoint);
MoveTo(x,y) - перемещение в определенный координаты.
Карандаш и кисть
Карандаш (Реn)используется для вычерчивания точек, линий, контуров геометрических фигур: прямоугольников, окружностей, эллипсов, дуг и др. Вид линии, которую оставляет карандаш на поверхности холста, определяют свойства объекта TPеn , которые перечислены в таблице.
Свойство |
Определяет |
Примечание |
|
Color |
Цвет линии |
Именованные константы, определяющие цвет см. Приложение |
|
Width |
Толщину линии |
в пикселах |
|
Style |
Вид линии |
Именованные константы, определяющие вид см. Приложение |
Кисть (Brush) используется для вычерчивания замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами, перечисленными в таблице.
Свойство |
Определяет |
Примечание |
|
Color Style |
Цвет закрашивания замкнутой области Стиль (тип) заполнения области |
Именованные константы, определяющие цвет и стиль заполнении см. Приложение |
Вывод текста
Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:
Объект.Canvas.TextOut(x, у, Текст)
Область вывода текста закрашивается текущим цветом кисти. Поэтому перед выводом текста свойству Brush.Color нужно присвоить значение bsClear или задать цвет кисти, совпадающий с цветом поверхности, на которую выводится текст Координаты правой границы текста, выведенного методом Textout, можно получить, обратившись к свойству PenPos.
Метод базовой точки
При программировании сложных изображений, состоящих из множества элементов, используется метод, который называется методом базовой точки. Суть этого метода заключается в следующем:
1. Выбирается некоторая точка изображения, которая принимается за базовую.
2. Координаты остальных точек отсчитываются от базовой точки.
3. Если координаты точек изображения отсчитывать от базовой в относительных единицах, а не в пикселях, то обеспечивается возможность масштабирования изображения.
На рисунке приведено изображение кораблика. Базовой точкой является точка с координатами (X0 Y0). Координаты остальных точек отсчитываются именно от этой точки.
Постановка задачи
Разработать приложение, реализующее основные функции графического редактора.
Порядок выполнения
1. Создать новый проект.
2. Расположить на форме командную кнопку и для нее ввести программный код (событие OnClick):
form1.Canvas.Font.Size:=20;
form1.Canvas.Font.Style :=form1.Font.Style +[fsbold];
form1.Canvas.Font.Color :=clBlue;
//form1.Canvas.Font.Height :=100;
form1.Canvas.Font.Name :='Arial';
form1.Canvas.TextOut(10,20,'Мой графический редактор');
3. Проверить работу программы. Изменить размер окна (развернуть, свернуть). Просмотреть результат.
4. Перемести введенный программный код в процедуру Form1Paint и еще раз проверить работу программы.
5. Добавить на форму компонент PaintBox (System), задать ему имя Pole.
6. Для объекта Pole выберите событие OnMouseDown и ввести код:
If Button = mbLeft Then // если нажата левая кнопка
maincolor:=clred //переменной присвоить красный цвет
Else //иначе зеленый
maincolor:=clGreen;
7. Для объекта Pole выберите событие OnMouseUp и ввести код;
maincolor:=form1.Color ;
8. Для объекта Pole выберите событие OnMouseMove и ввести код:
pole.Canvas.Pixels[x,y]:=MainColor;
9. Объявить глобальную переменную MainColor: TColor;
10. Проверить работу программы.
11. Для получения эффекта распыления, изменить процедуру PoleOnMouseMove в соответствии со следующим кодом:
For I:=1 to 50 Do
Begin
H:=25-random(50);
V:=25-random(50);
pole.Canvas.Pixels[x+h,y+v]:=MainColor;
End;
12. Проверить работы приложения.
13. Введенный ранее код пометить комментарием.
14. Для объекта Pole выбрать событие OnMouseDown и добавить код
pole.Canvas.Pen.Width :=5; //толщина рисования
pole.Color :=clBlack; //цвет заливки
pole.Canvas.Pen.Color :=clred; // цвет линии
pole.Canvas.Ellipse(x,y,x+100,y+200); // эллипс
15. Проверить работы приложения.
16. Заблокировать комментарием рисование эллипса.
17. Последовательно ввести ниже следующие строки кода, каждый раз проверяя их работу.
pole.Canvas.Arc(x,y,x+50,y+10,x-10,y-10,x+20,y+20);
pole.Canvas.LineTo(x,y) ;
pole.Canvas.Chord(x,y,x+50,y+10,х-10,у-10,х+20,у+20); замкнута и залита цветом
pole.Canvas.Pie(x,y,x+50,y+10,x-10,y-10,x+20,y+20);
pole.Canvas.Rectangle(x,y,x+30,y+40);
pole.Canvas.RoundRect(x,y,x+30,y+50,x+70,y+200);
18. Добавить на форму командную кнопку и ввести для ее события OnClick следующий код:
Var
pol: array[1..3] of TPoint; // координаты точек треугольника
Begin
pol[1].x := 10; pol[1].y := 50;
pol[2].x := 40; pol[2].y := 10;
pol[3].x := 70; pol[3].y := 50;
Form1.Canvas.Polygon(pol);
End;
19. Вывести на экран изображение перемещающегося кораблика, используя метод базовой точки, для этого:
· для формы выбрать событие OnActivate и ввести код:
x:=0; y:=100;// базовая точка
Form1.Color:=clNavy;
Timer1.Interval := 50;
· добавить на форму таймер и ввести для него код:
Titanik(x,y,form1.color); // стереть рисунок
if x < Form1.ClientWidth then
x := x+5 else begin // новый рейс
x := 0; у := Random(50) + 100;
end;
Titanik(x,у,clWhite); // нарисовать в новой точке
· создать и объявить новую процедуру для вычерчивания кораблика:
procedure TForm1.Titanik(x,y: integer; color: TColor);
// x,y координаты базовой точки, color цвет корабля
const dx = 5; dy = 5;//масштаб кораблика
Var buf: TColor;
Begin
With Form1.Canvas Do Begin
buf:=pen.Color; // сохраним текущий цвет
pen.Color:=color; // установим нужный цвет
// рисуем корпус
MoveTo(x,y);
LineTo(x,y-2*dy) ; LineTo (x+10*dx, y-2*dy) ;
LineTo (x+11*dx, y-3*dy) ; LineTo (x+17*dx,y-3*dy) ;
LineTo (x+14*dx, y) ; LineTo (x,y) ;
// надстройка
MoveTo(x+3*dx,y-2*dy) ;
LineTo (x+4*dx, y-3*dy) ; LineTo (x+4*dx, y-4*dy) ;
LineTo (x+13*dx,y-4*dy) ; LineTo (x+13*dx, y-3*dy) ;
MoveTo(x+5*dx,y-3*dy) ; LineTo (x+9*dx, y-3*dy) ;
Rectangle (x+8*dx, y-4*dy, x+11*dx, y-5*dy) ; // мостик
Rectangle (x+7*dx, y-4*dy, x+8*dx, y-7*dy) ; // труба
// иллюминаторы
Ellipse (x+11*dx,y-2*dy,x+12*dx,y-1*dy) ;
Ellipse (x+13*dx, y-2*dy, x+14*dx, y-1*dy) ;
MoveTo(x+10*dx,y-5*dy) ; LineTo(x+10*dx,y-10*dy); // мачта
MoveTo(x+17*dx,y-3*dy); // оснастка
LineTo(x+10*dx,y-10*dy); LineTo(x,y-2*dy);
pen.Color:=buf; // восстановим старый цвет карандаша
End;
End;
20. Проверить работу приложения.
Задания для самостоятельного выполнения
Разработать специализированный графический редактор
Задание № 1
Основной инструмент рисования - распылитель.
Создать панель инструментов, добавить на нее компоненты, позволяющие:
· менять размер распылителя (не менее 4-х вариантов);
· выбирать цвет распыления через ColorBox;
· очищать весь рисунок.
Задание № 2
Инструменты рисования - овал и прямоугольник.
Создать панель инструментов, добавить на нее компоненты, позволяющие:
· выбирать тип фигуры (овал, окружность, квадрат, прямоугольник);
· менять толщину контура фигуры;
· выбирать цвет контура через ColorBox;
· выбирать цвет заливки через ColorBox;
· выбирать стиль заполнения через ComboBox.
· удалять часть изображения (ластик).
Задание №3
Инструменты рисования - отрезок и ломанная.
Создать панель инструментов, добавить на нее компоненты, позволяющие:
· выбирать режим рисования (ломанная, отрезок);
· менять толщину линии;
· выбирать стиль линии через ComboBox;
· выбирать цвет линии через ColorBox;
· очищать весь рисунок.
Задание № 4
Инструменты рисования- многоугольники.
Создать панель инструментов, добавить на нее компоненты, позволяющие:
· выбирать тип многоугольника (треугольник, четырехугольник, пятиугольник);
· менять толщину линии;
· выбирать стиль линии через ComboBox;
· выбирать цвет линии через ColorBox;
Последовательность работы с приложением должна быть следующей:
· пользователь выбирает типа n-угольника и остальные параметры рисования,
· пользователь n-раз щелкает мышкой в области рисования (определяет координаты вершин угольника);
· прорисовка фигуры.
Задание №5
Модернизировать приложение «Движение кораблика». Создать панель инструментов с компонентами, которые позволяют:
· менять масштаб кораблика;
· цвет линии кораблика;
· скорость движения;
· координаты базовой точки кораблика.
Контрольные вопросы
1. Какие компоненты позволяют выводить графику?
2. Назначение объекта Canvas?
3. В чем разница между карандашом и кистью?
4. Как создать анимацию, используя графические примитивы?
5. В чем суть метода базовой точки?
6. Как вывести текст на форму?
ПРАКТИЧЕСКАЯ РАБОТА № 9 а
Тема Рекурсивные графические построения
Цель работы: Получить навыки использования рекурсии.
Пояснения к работе
Рекурсивным называется объект, частично состоящий или определяемый с помощью самого себя. Рекурсия встречается не только в математике, но и в повседневной жизни.
В жизни Вам не раз приходилось сталкиваться с рекурсией. Вспомните хотя бы стихотворение "У попа была собака" или “10 негритят пошли купаться в море…”
Или то, как, сидя в поезде, вы ловили свое отражение в зеркале, которое отражалось в зеркале напротив, которое отражалось в зеркале напротив…
Слово «рекурсия» происходит от латинского слова «recursio» - возвращение.
Определение: Если подпрограмма обращается сама к себе как к подпрограмме непосредственно или через цепочку подпрограмм, то это называется рекурсией. А такие подпрограммы называются рекурсивными.
Для завершения рекурсивных вызовов в рекурсивной подпрограмме обязательно должно быть условие выхода из нее, заканчивающееся возвратом в вызывающую программу.
Постановка задачи
Разработать приложение для рекурсивного построения изображения, представленного на рис.
Порядок выполнения
21. Создать новый проект.
22. Объявить глобальные переменные
k,gd,gm,mx,my:integer; ch :char;
23. Создать следующие процедуры
procedure TForm1.FormCreate(Sender: TObject);
begin
k:=15;//минимальный размер окружности
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
krug(X , Y , Y div 2);
end;
procedure tform1.krug(x,y,r:integer);
begin
if r>k then
begin
krug(x+r,y,r div 2);
krug(x,y+r,r div 2);
krug(x-r,y,r div 2);
krug(x,y-r,r div 2);
end;
form1.Canvas.Ellipse (x-r,y-r,x+r,y+r);
end;
24. Проверить работу программы.
25. Изменить процедуры tform1.krug и FormMouseDown,проверить работу программы
if r>k then
begin
form1.Canvas.Pen.Color :=RGB(Random(255),Random(255),Random(255));
krug(x+r+(r div 2),y,r div 2);
krug(x,y+r+(r div 2),r div 2);
krug(x-r-(r div 2),y,r div 2);
krug(x,y-r-(r div 2),r div 2);
end;
form1.Canvas.Ellipse (x-r,y-r,x+r,y+r);
end;
krug(X , Y , Y div 4)
26. Заменить рисование окружности на рисование прямоугольника и просмотреть результат.
27. Самым знаменитым примером площадного геометрического фрактала является треугольник Серпинского (см. рис.), строящийся путем разбиения треугольника, необязательно равностороннего - средними линиями на четыре подобных треугольника, исключением центрального и рекурсивного разбиения угловых треугольников до получения площадных элементов желаемого разрешения.
Добавить на форму командную кнопку и ввести для нее следующий код
tri(150,150,225,0,300,150,5);
Создать и объявить следующую процедуру
PROCEDURE tform1.TRI(x1,y1,x2,y2,x3,y3, N: integer);
Var x12,y12,x23,y23,x31,y31: integer;
Begin If N<>0 then
begin
x12:=(x1+x2) div 2; y12:=(y1+y2) div 2;
x23:=(x2+x3) div 2; y23:=(y2+y3) div 2;
x31:=(x3+x1) div 2; y31:=(y3+y1) div 2;
form1.Canvas.MoveTo(x31,y31);
form1.Canvas.LineTo(x12,y12);
form1.Canvas.LineTo(x23,y23);
form1.Canvas.LineTo(x31,y31);
TRI(x1,y1,x12,y12,x31,y31, N-1);
TRI(x2,y2,x12,y12,x23,y23, N-1);
TRI(x3,y3,x31,y31,x23,y23, N-1)
end;
end;
28. Проверить работу программы.
Самостоятельно разработать программу, которая рисует множество Кантора.
Рисунок множество Кантора образован квадратами. Каждый следующий квадрат в четыре раза меньше предыдущего. Центр каждого следующего квадрата расположен в вершине предыдущего квадрата и т.д. Так как рисунок состоит из однотипных элементов, и есть явная зависимость, как размеров, так и положения, следовательно, при создании данного рисунка можно использовать в программе рекурсию.
ПРАКТИЧЕСКАЯ РАБОТА № 10
Тема Графические возможности Delphi
Цель работы: Получить навыки использования в приложении битовых образов.
Пояснения к работе
Эффект перемещения сложной картинки может быть создан путем периодической перерисовки картинки с некоторым смещением относительно ее прежнего положения. При этом предполагается, что перед выводом картинки в новой точке сначала удаляется предыдущее изображение. Удаление картинки может быть выполнено путем перерисовки всей фоновой картинки или только той ее части, которая перекрыта битовым образом движущегося объекта.
Рассмотрим второй подход. Картинка выводится применением метода Draw к свойству Canvas компонента Image, а стирается путем копирования (метод copyRect) нужной части фона из буфера на поверхность компонента Image.
Для хранения битовых образов (картинок) фона и самолета, а также копии области фона, перекрываемой изображением самолета, используются объекты типа TBitMap, которые создаются динамически процедурой FormActivate.
Постановка задачи
Разработать приложение, реализующее движение битового образа (картинки) на фоне другой картинки. Примерный вид окна приложения представлен на рисунке.
Порядок выполнения
1. Создать новый проект.
2. Скопировать в папку, где будет сохранен создаваемый проект, файлы factory.bmp и aplane.bmp.
3. Установить на форме компонент Image и таймер.
Примечание: Компонент Image используется для вывода фона, а компонент Timer -- для организации задержки между циклами удаления и вывода на новом месте изображения самолета.
4. Объявить глобальные переменные:
Back, bitmap, Buf : TBitMap; // фон, картинка, буфер
// область фона, которая должна быть восстановлена из буфера
BackRet : TRect;
//область буфера, которая используется для восстановления фона
BufRet: Trect;
х,у: Integer; // текущее положение картинки
W,H: Integer; // размеры картинки
5. Для формы выбрать событие OnActivate и ввести код:
// создать три объекта -- битовых образа
Back := TBitmap.Create; // фон
bitmap := TBitmap.Create; // картинка
Buf := TBitmap.Create; // буфер
// загрузить и вывести фон
Back.LoadFromFile('factory.bmp');
Form1.Image1.Canvas.Draw(0,0,Back);
// загрузить картинку, которая будет двигаться
bitmap.LoadFromFile('aplane.bmp');
bitmap.Transparent := True; // определим "прозрачный" цвет
bitmap.TransParentColor := bitmap.canvas.pixels[1,1];
// создать буфер для сохранения копии области фона,
// на которую накладывается картинка
W:= bitmap.Width; H:= bitmap.Height;
Buf.Width:= W; Buf.Height:=H;
Buf.Palette:=Back.Palette;
// Чтобы обеспечить соответствие палитр
Buf.Canvas.CopyMode:=cmSrcCopy;
// определим область буфера, которая будет использоваться
// для восстановления фона
BufRet:=Bounds(0,0,W,H);
// начальное положение картинки
х := -W; у := 20;
// определим сохраняемую область фона // и сохраним ее
BackRet:=Bounds(x,y,W,H);
Buf.Canvas.CopyRect(BufRet,Back.Canvas,BackRct);
6. Для таймера ввести код:
// восстановлением фона (из буфера) удалим рисунок
Form1.image1.canvas.Draw(x,y,Buf);
x:=x+2;
if x>fоrm1.Image1.Width then x:=-W;
// определим сохраняемую область фона
BackRet:=Bounds(x,у,W,H);
// сохраним ее копию
Buf.Canvas.CopyRect(BufRct,Back.Canvas,BackRct);
// выведем рисунок
Form1.image1.canvas.Draw(x,y,bitmap);
7. Для формы выбрать событие OnClose и ввести код:
// освободим память, выделенную для хранения битовых образов
Back.Free;
bitmap.Free;
Buf.Free;
8. Проверить работу приложения.
9. Самостоятельно модернизировать приложение, для того чтобы траектория движения соответствовала синусоиде.
10. Результат показать преподавателю.
ПРАКТИЧЕСКАЯ РАБОТА № 11
Тема Проектирование многооконных приложений
Цель работы: Получить навыки добавления новых форм к проекту.
Пояснения к работе
Проект приложения, включающий несколько окон, создается поэтапно. Шаги подключения новой формы к проекту:
· создание новой формы в действующем проекте
File / New/ Form
· сохранение формы, как файла модуля *.pas
· подключение нового файла к проекту
Project / Add to Project… , открыть
· создание ссылки на новый модуль, с той формы, которая будет его использовать
File / Use Unit,
в открывшемся диалоговом окне выбрать нужный модуль и нажать Ок.
Методы, используемы при работе с формой
имя_формы.Show - отображение на экране окна формы, до этого невидимого;
имя_формы.Hide - скрыть форму, вернуться на предыдущую;
имя_формы.Update принудительная прорисовка формы;
имя_формы.Free удаление из памяти формы.
Компонент StringGrid
Компонент StringGrid расположен на вкладке Additional и представляет собой таблицу, ячейки которой содержат строки символов. Свойства компонента приведены в таблице:
ColCount |
Количество столбцов таблицы |
|
RowCount |
Количество строк таблицы |
|
DefaultColWidth |
Ширина столбцов |
|
DefaultRowHeight |
Высота строк |
|
FixedCols, FixedRows |
Количество зафиксированных слева столбцов, сверху строк |
|
Cells |
Обращение к ячейке таблицы |
|
Options.goEditing |
Признак допустимости редактирования содержимого ячеек |
Постановка задачи
Разработать приложение «Тригонометрические функции». Приложение должно работать следующим образом:
· после загрузки на экран выводится окно-заставка, которое отображается 5 сек;
· через 5 секунд заставка пропадает, на экран выводится основное окно;
· в основном окне отображается таблица со значениями тригонометрических функций с заданным шагом.
Порядок выполнения
1. Загрузить Delphi, сохранить проект.
2. Изменить свойства главной формы в соответствии с таблицей:
BorderIcons |
biMaximize=False |
|
BorderStyle |
bsSingle |
|
Position |
poScreenCenter |
3. Добавить на форму компонент StringGrid (Additional)и изменить свойства в соответствии с таблицей:
Align |
alClient |
|
ColCount |
5 |
|
RowCount |
2 |
|
DefaultColWidth |
120 |
|
DefaultRowHeight |
18 |
|
ScrollBars |
ssVertical |
|
Options.goRangeSelect |
False |
4. Для события OnCreate ввести код:
Var
t:longint; i,n:integer; step,x,sx,cx: double;
Begin
step:=0.01;
n:=round(90/step)+1;
With stringgrid1 do
Begin
cells[0,0]:='x'; cells[1,0]:='sin(x)';
cells[2,0]:='cos(x)'; cells[3,0]:='tg(x)';
cells[4,0]:='ctg(x)'; colwidths[0]:=colwidths[0] div 2;
rowcount:=n+1;
For i:=1 to n do
Begin
x:=(i-1)*step;
sx:=sin(x*pi/180); cx:=cos(x*pi/180);
cells[0,i]:=floattostr(x); cells[1,i]:=floattostr(sx);
cells[2,i]:=floattostr(cx);
if cx <> 0 then cells[3,i]:=floattostr(sx/cx)
else cells[3,i]:= не существует;
if sx<>0 then cells[4,i]:=floattostr(cx/sx)
else cells[4,i]:= 'не существует';
end; end; end ;
5. Проверить работу приложения.
6. Добавить новую форму (заставка), для этого:
· выбрать в меню File / New/ Form;
· сохранить новую форму с именем Unit2.pas;
· подключить новый файл к проекту, выбрав в меню
Project / Add to Project… , открыть Unit2.pas;
· создать ссылку на новый модуль, с той формы, которая будет его использовать:
o выбрать в меню File / Use Unit,
o в открывшемся диалоговом окне выбрать модуль Unit2 и нажать Ок.
7. Изменить свойства Form2 в соответствии с таблицей:
BorderIcons |
biSystemMenu=FalsebiMinimize=FalsebiMaximize=False |
|
BorderStyle |
bsNone |
|
Position |
poScreenCenter |
|
FormStyle |
fsStayOnTop |
8. На форму Form2 добавить метку, ввести для нее заголовок ТРИГОНОМЕТРИЧЕСКИЕ ФУНКЦИИ
9. Загрузить в редактор файл проект, для этого выбрать в меню Project/ View Source.
10. Откорректировать файл проекта следующим образом:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
Begin
Application.Initialize;
form2:=tform2.create(application); form2.Show ;
form2.Update ; form2.Label1.Update ;
Application.CreateForm(TForm1, Form1);
form2.Hide ; form2.Free;
Application.Run;
end.
11. Для того, чтобы заставка задерживалась на экране 5 секунд в начало процедуры Form1Create добавить:
t:=gettickcount div 1000;
while (gettickcount div 1000)<t+5 do
12. Проверить работу приложения
ПРАКТИЧЕСКАЯ РАБОТА № 12
Тема Анимация
Цель работы: Получить навыки использования анимационных компонентов.
Пояснения к работе
Компонент Animate расположен на вкладке Win32 и позволяет воспроизвести только простую, не сопровождаемую звуком анимацию, кадры которой находятся в AVI-файле. Свойства компонента приведены в таблице:
FileName |
Имя AVI-файла |
|
StartFrame |
Номер кадра, с которого начинается отображение анимации |
|
StopFrame |
Номер кадра, на котором заканчивается отображение анимации |
|
Activate |
Признак активации процесса отображения |
|
Color |
Цвет фона, на котором воспроизводится анимация |
|
Transparent |
Режим использования «прозрачного» цвета при отображении анимации |
|
Repetitions |
Количество повторов отображения |
Постановка задачи
Разработать приложение позволяющее выбирать и воспроизводить AVI-файлы в двух режимах: непрерывном и покадровом.
Порядок выполнения
1. Загрузить Delphi, сохранить проект.
2. Расположить на форме компонент Animate (Win32).
3. Для свойства FileName выбрать имя Avi-файла.
4. В процедуру TForm1.FormCreate ввести код:
animate1.Play(0,animate1.FrameCount ,1);
5. Проверить работу приложения.
6. Самостоятельно изменить программу для того, чтобы количество повторов было 3. Проверить.
7. Привести форму в соответствие с образцом, для этого добавить компоненты и изменить им свойство Caption:
· Label и Edit;
· GroupBox, RadioButton
· OpenDialogs;
· командные кнопки.
8. Объявить глобальную переменную
CFrame: integer; // номер кадра,
9. Создать и объявить процедуру OpenAvi
procedure TForm1.OpenAVI;
begin
Button1.Enabled := False;
Button2.Enabled := False; Button3.Enabled := False;
RadioButton1.Enabled := False; RadioButton2.Enabled := False;
try
Animate1.FileName := Edit1.Text;
except
on Exception do
begin
MessageDlg('Ошибка формата AVI файла.'+
#13+'(Анимация не должна сопровождаться звуком.)',
mtError,[mbOk],0);
exit;
end; end;
Button1.Enabled := True;
RadioButton1.Enabled := True; RadioButton2.Enabled := True;
end;
10. Для кнопки Выбрать (Button4) ввести код:
OpenDialog1.Title := 'Выбрать AVI файл';
OpenDialog1.InitialDir :='';
if OpenDialog1.Execute Then Begin
Edit1.Text := OpenDialog1.FileName;
OpenAVI; End;
11. Для кнопки Пуск ввести код:
if Animate1.Active = False // в данный момент анимация нет then begin
Animate1.StartFrame:=1; // вывод с первого кадра
Animate1.StopFrame:=Animate1.FrameCount; //по последний кадр
Animate1.Active:=True;
Button1.caption:='Стоп';
RadioButton2.Enabled:=False;
end
else // анимация отображается
begin
Animate1.Active:=False; // остановить отображение
Button1.caption:='Пуск';
RadioButton2.Enabled:=True;
end;
12. Для переключателя Непрерывно ввести код:
Button1.Enabled:=True; // доступна кнопка Пуск
// сделать недоступными кнопки просмотра по кадрам
Form1.Button3.Enabled:=False;
Form1.Button2.Enabled:=False;
13. Для переключателя По кадрам ввести код:
Button2.Enabled:=True; // кнопка Следующий кадр доступна
Button3.Enabled:=False; //кнопка Предыдущий кадр недоступна
// сделать недоступной кнопку Пуск - вывод всей анимации
Button1.Enabled:=False;
Animate1.StartFrame:=1;
Animate1.StartFrame:=1;
CFrame:=1;
14. Для кнопки К следующему кадру ввести код:
if CFrame < Animate1.FrameCount Then Begin
CFrame := CFrame + 1;
// вывести кадр
Animate1.StartFrame := CFrame;
Animate1.StopFrame := CFrame;
Animate1.Active := True;
if CFrame = Animate1.FrameCount // текущий кадр - последний
then Button2.Enabled:=False;
End;
if CFrame > 1 then Button3.Enabled := True;
15. Для кнопки К предыдущему кадру ввести код:
if CFrame > 1 then
begin
CFrame := CFrame - 1;
// вывести кадр
Animate1.StartFrame := CFrame;
Animate1.StopFrame := CFrame;
Animate1.Active := True;
if CFrame = 1 // текущий кадр - первый
then Form1.Button3.Enabled := False;
end;
if CFrame < Animate1.FrameCount then Button2.Enabled := True;
16. Проверить работу приложения.
17. Добавить на форму пункт меню Справка.
18. Присоединить к проекту форму для выдачи Справки, для этого:
1. выбрать в меню File / New/Other;
2. выбрать вкладку Forms, на ней выбрать About box.
19. Привести форму в соответствие с образцом:
20. Самостоятельно доработать приложение для вызова окна справки (пункт Справка) и скрытие окна (кнопка Ок)
21. Результат показать преподавателю.
ПРАКТИЧЕСКАЯ РАБОТА № 13
Тема Программирование для Интернет
Цель работы: Получить навыки использования компонента WebBrowser.
Пояснения к работе
Начиная с пятой версии Delphi появился компонент WebBrowser который позволяет создать свой собственный браузер. Можно полностью поменять интерфейс, но принцип действия работы все равно будет, как у Internet Explorer.
Компонент WebBrowser находится на вкладке Internet, его основные свойства и методы приведены в таблице.
OffLine |
Включить / выключить автономный режим |
|
Navigate |
Открыть HTML-документ |
|
Refresh |
Обновить |
|
Stop |
Остановить загрузку |
|
GoHome |
На домашнюю страницу |
|
GoForward |
Вперед |
|
GoBack |
Назад |
Компонент StatusBar - строка состояния представляет собой управляющий элемент, который отображает текущую информацию о содержимом окна, контекстные подсказки по текущему состоянию.
Постановка задачи
Разработать приложение, реализующее основные функции WEB-браузера.
Порядок выполнения
1. Создать новый проект и сохранить его.
2. Добавить на форму компонент ToolBar (Win32), изменить значение свойств: Height= 28, ShowCaptions=True, Flat= True
3. Добавить на ToolBar 5 кнопок: Назад, Обновить, Стоп, Домашняя страница, Вперед, для этого повторить 5 раз следующую последовательность:
· щелкнуть правой кнопкой мыши на компоненте ToolBar;
· выбрать New Button;
· изменить размеры кнопки Width = 67,Height =21;
· вставить разделитель кнопок, щелкнув правой кнопкой на ToolBar и выбрав New Separator;
· изменить свойства Caption для кнопки.
4. Добавить на форму компоненты Edit, командную кнопку, OpenDialogs и WebBrowser.
5. Привести форму в соответствие с образцом.
6. Для того, чтобы компоненты размещались по местам после изменения размера формы, для процедуры FormResize ввести код:
Edit1.Left := 0;
Edit1.Top := ToolBar1.Height + 2;
Button1.Top := Edit1.Top;
Button1.Left := Form1.ClientWidth - Button1.Width - 2;
WebBrowser1.Left := 0;
WebBrowser1.Top := Edit1.Top + Edit1.Height + 2;
//меняем размеры некоторых компонентов
Edit1.Width := Form1.ClientWidth - Button1.Width - 4;
Button1.Height := Edit1.Height;
WebBrowser1.Width := Form1.ClientWidth;
WebBrowser1.Height := Form1.ClientHeight - (Edit1.Top + Edit1.Height + 2);
7. Для кнопки Открыть ввести код:
If OpenDialog1.Execute Then Begin
WebBrowser1.Navigate(OpenDialog1.FileName);
Edit1.Text := OpenDialog1.FileName;
WebBrowser1.Navigate(Edit1.Text); //загрузка документа
Edit1.SetFocus; End;
8. Загрузить приложение, проверить работу кнопки Открыть.
9. Для кнопок панели ввести соответствующие коды:
WebBrowser1.GoBack //назад
WebBrowser1.Stop; //остановить загрузку
WebBrowser1.Refresh ; //обновить страницу
WebBrowser1.GoHome; //на домашнюю страницу
WebBrowser1.GoForward; //вперед
10. Проверить работу приложения.
11. Добавить на форму компонент StatusBar (Win32)и изменить значение его свойства SimplePanel= True.
12. Для компонента WebBrowser1 выбрать событие OnStatusTextChange и ввести код:
StatusBar1.SimpleText := Text;
13. Добавить на форму компонент ProgressBar (Win32)и изменить значение его свойства Align=alButtom.
14. Для компонента WebBrowser1 выбрать событие OnProgressChange и ввести код:
ProgressBar1.Max := ProgressMax;
ProgressBar1.Position := Progress;
15. Проверить работу приложения.
16. Модернизировать приложение для реализации следующих функций:
· при изменении размера формы компоненты StatusBar и ProgressBar должны всегда отображаться на экране.
· кнопки Назад и Вперед после загрузки приложения должны быть недоступны. Кнопка Назад получает доступ только после выбора пользователем гиперссылки в окне браузера. Кнопка Вперед получает доступ после щелчка по кнопке Назад
ПРАКТИЧЕСКАЯ РАБОТА №14
Тема: Разработка тестового приложения.
Цель работы: Закрепить навыки программирования в Delphi.
Постановка задачи:
Текстовый файл содержит несколько вопросов и 4 варианта ответа, из которых только один ответ верный(помечен символом +). Файл имеет следующую структуру:
Тема теста (дисциплина)
/вопрос 1
- ответ 1
+ ответ 2
- ответ 3
- ответ 4
/вопрос 2
+ вопрос 1
- вопрос 2
- вопрос 3
- вопрос 4
. . .
Создать текстовый файл с тестом из 5 вопросов в соответствии с заданной структурой.
Разработать приложение, которое позволяет выбирать файл с тестовыми заданиями и проводить последовательное тестирование.
Предусмотреть вывод результат тестирования на экран
Порядок выполнения
1. Загрузить Delphi;
2. Установить на форму следующие объекты и изменить им свойства (см. таблицу), объявить используемые переменные как глобальные.
объект |
свойство |
значение |
|
Label |
Name |
Label1 |
|
WordWrap |
True |
||
RadioButton |
Name |
RadioButton1 |
|
Button |
Name |
Button1 |
|
Caption |
Далее |
||
OpenDialog |
Name |
OpenFile |
3. Для формы выбрать событие Create и ввести код для создания массива радиокнопок и объявить необходимые переменные:
For i:=1 to 4 Do
Begin
otv[i] := TRadioButton.Create(RadioButton1) ;
otv [i].Parent := Form1;
otv[i].Left := RadioButton1.Left;
otv[i].Top:= RadioButton1.Top+i*40;
otv [i].Visible :=true;
otv [i].Width := RadioButton1.Width ;
otv [i].Height := RadioButton1.Height ;
otv [i].Color := RadioButton1.Color ;
otv[i].Checked :=false;
otv[i].Font := RadioButton1.font;
end;
RadioButton1.Visible :=false;
4. Добавить на форму меню из двух пунктов Файл / Открыть и Выход
5. Для пункта Открыть ввести код:
If openfile.Execute Then
Begin
assignfile(f1,openfile.FileName);
reset(f1);
readln(f1,s);
form1.Caption :=s; {тема теста}
verno:=0;//кол-во верных ответов
n:=0; //номер текущего вопроса
button1.Enabled :=true;
label1.Caption :='';
for i:=1 to 4 do
begin
otv[i].Caption :='';
otv[i].Checked :=false;
end;
end;
6. Для кнопки Далее ввести код:
if n>0 then {проверим ответ на предыдущий вопрос}
for i:=1 to 4 do
if (otv[i].Checked =true) and (otv[i].tag=1) then verno:=verno+1;
if eof(f1) then {если тест закончен}
begin
showmessage(' кол-во верных ответов='+inttostr(verno));
closefile(f1);
button1.Enabled :=false;
exit;
end;
n:=n+1;
{ччитаем следующий вопрос}
readln(f1,s);
delete(s,1,1);
label1.Caption :=s;
for i:=1 to 4 do {варианты ответов}
begin
readln(f1,s);
otv[i].Checked :=false;
otv[i].Tag:=0;
if s[1]='+' then otv[i].Tag:=1;{запомним верный ответ}
delete(s,1,1);
otv[i].Caption :=s;
end;;
7. Проверить работу приложения.
8. Модернизировать приложение: вывод каждого вопроса должен сопровождаться отображением картинки, имя графического файла для каждого вопроса записать в строке, следующей за вопросом.
9. Результат показать преподавателю.
ПРАКТИЧЕСКАЯ РАБОТА № 15
Тема Разработка приложения для базы данных
Цель работы: Получить навыки создания приложения для базы данных.
Пояснения к работе
Для работы с базами в Delphi есть несколько наборов компонент, каждый из них подходит для решения определенного круга задач и использует разные технологии доступа к данным, отличаются по возможностям.
Краткий обзор средств доступа к базам данных
ВкладкаData Access |
Содержит основные компоненты доступа к данным, они общие для всех и могут использоваться совместно с другими группами компонентов |
|
ВкладкаData Controls |
Содержит компоненты для отображения и редактирования данных в таблицах, они испо... |
Подобные документы
Разработка головоломки на основе гравюры Альбрехта Дюрера "Магический квадрат". Главные составные части среды программирования Delphi, особенности ее стандартных компонентов и процесса сохранения программы. Компоненты и алгоритмы создаваемой программы.
курсовая работа [147,1 K], добавлен 05.02.2015Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.
курсовая работа [880,1 K], добавлен 21.04.2015Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012Особенности среды визуального проектирования Borland Delphi 7.0. Этапы разработки программы и составления блок-схемы алгоритмов. Способы вычисления кусочно-заданной функции одной переменной. Рассмотрение компонентов среды Delphi, ее предназначение.
контрольная работа [703,8 K], добавлен 24.09.2012Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.
дипломная работа [3,6 M], добавлен 13.07.2011Теоретические основы применения технологии ADO в среде Delphi. Основные понятия и определения теории баз данных. Компоненты Delphi для создания приложений, оперирующих с базами данных. Общий вид и основные особенности работы приложения "Аптека".
курсовая работа [1,4 M], добавлен 09.08.2012Разработка программы генератора звука в среде Borland Delphi с использованием стандартных классов TMemoryStream (для хранения звука в виде бинарных данных) и TStrings (для хранения характеристик конкретной частоты). Запись звука в файл (форматы).
курсовая работа [160,5 K], добавлен 22.11.2014Разработка программы для работы в операционных системах семейства Windows. Использование среды Delphi - современной технологии визуального проектирования. Создание пользовательского интерфейса, оконного приложения, меню; задание исходной матрицы.
курсовая работа [1,5 M], добавлен 12.01.2011Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.
курсовая работа [2,2 M], добавлен 20.09.2014Программа поиска в базе данных в среде Borland Delphi 7.0 Enterprise. Условия и блок-схемы задач. Ввод массива. Текст программ в Delphi, в Паскаль. Текст программы поиска в базе данных. Кодирование материала. Изготовление реляционной базы данных.
практическая работа [27,6 K], добавлен 11.10.2008Шифрование как метод защиты информации. История развития криптологии. Классификация алгоритмов шифрования, симметричные и асимметричные алгоритмы. Использование инструментов криптографии в Delphi-приложениях. Краткая характеристика среды Delphi 7.
курсовая работа [48,5 K], добавлен 19.12.2009Основы программирования, работа в консольном режиме Delphi. Правила оформления комментариев. Типы данных, используемые в консольном режиме. Текстовый редактор Delphi Memo. Пример загрузки текстового файла. Примеры решения и оформления простейших задач.
отчет по практике [2,1 M], добавлен 11.03.2014Интегрированная среда разработки Delphi и элементы, входящие в ее состав. Математическая модель, алгоритм решения и его свойства. Описание операторов, процедур, функций и методов. Создание приложений по аналитической геометрии и теоретической механике.
курсовая работа [1,8 M], добавлен 26.05.2010Рассмотрение теории и технологии работы со средой программирования Delphi. Описание Описание интерфейса программы, структуры данных, генерации точек. Разработка задания по выявлению всех квадратов, которые могут быть образованы точками на плоскости.
реферат [21,0 K], добавлен 13.01.2015Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016Среда для разработки приложений Borland Delphi 2007 с помощью Microsoft Visual Basic. Создание современной системы "Паспортный стол" на языке программирования Delphi. Состав объектов, обеспечивающих функциональность всего клиентского приложения.
курсовая работа [333,7 K], добавлен 03.03.2015Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.
отчет по практике [961,6 K], добавлен 21.04.2012Среда Borland Delphi и ее графические средства для построения фрактальных множеств. Разработка программы для построения изображения листа папоротника при помощи вероятностных распределений с использованием средств для отображения графической информации.
курсовая работа [1,3 M], добавлен 29.07.2013Разработка программы по оформлению заказов на билеты Оренбургского государственного областного драматического театра им. Горького. Использование объектно-ориентированного программирования и реализация проекта в среде визуального программирования Delphi 7.
курсовая работа [6,3 M], добавлен 12.11.2014Основные приемы работы в среде программирования Delphi. Особенности технологии создания простейших приложений. Работа с компонентами среды разработки приложений. Ввод, редактирование, выбор и вывод информации. Аспекты использования структуры ветвления.
методичка [619,9 K], добавлен 17.11.2011