Разработка інтерактивною середовища обучения
Усі константы-массивы що неспроможні утримувати файлових змінних будь-якому уровне. Користувач вибирає потрібний йому урок і натискає кнопку «Завантажити». Після цього. Для завдання константы-записи необхідно заповнити її поля відповідно до синтаксису: Для визначення процедурної константи потрібна процедура з підходящими параметрами. Усі константы-записи що неспроможні утримувати файлових змінних… Читати ще >
Разработка інтерактивною середовища обучения (реферат, курсова, диплом, контрольна)
Разработка інтерактивною середовища навчання роботі у Borland Delphi.
Введение
.
На Землі щогодини зростає кількість комп’ютерів. Вони з.
програмами, кількість які також зростає. Написані все програми з.
використанням різних мов програмування — З++, Delphi, Assembler. Вивчення.
таких мов мало поступається за складністю вивченню звичайних, людських. Це.
дуже складний і трудомісткий процес.
На його полегшення і спрощення створюються різні навчальні програми.
Комп’ютер вчить людини. Такий «вчитель» будь-коли втомлюється, завжди об'єктивний,.
не обижается…
У цьому роботі представлена подібна програми, здатна (на мою думку),.
навчити початківця програміста основам візуальної середовища Delphi й мови.
Паскаль.
1 Опис программы.
1. 1 Основні характеристики.
Вже згадана програма має зокрема можливість використання уроків, які у.
файлах, що дозволяє створювати уроки, не змінюючи коду программы.
Файл уроку є текстовий файл з розширенням .LES; у ньому стримається.
текст уроку і спеціальні команди, змушують програму, виконувати деякі.
дії, наприклад, виводити текст таким-то кольором, змінювати розмір шрифту,.
вставляти картинки. Опис команд буде наведено ниже.
1. 2 Керівництво для пользователя.
Що Здійснюється файл називається LD. EXE. Після його запуску на екрані з’являється.
окно.
У ньому «повзе» напис: «Ласкаво просимо до програму Learn Delphi!!!». Для.
входу у програмі треба натиснути кнопку «ОК». Наступне вікно показано на рис. 1. 2:
Малюнок 1. 2 — Вікно вибору потрібного урока.
Користувач вибирає потрібний йому урок і натискає кнопку «Завантажити». Після цього.
він бачить основне вікно, у якому завантажена перша сторінка уроку. Це вікно.
представлене рис. 1. 3 (стор. 8).
1. 3 Опис команд формату .LES.
Як було вказано вище, ця програма має спеціальну систему команд.
Вони діляться втричі типа:
Текстовые.
Графические.
Логические.
Усі команди предваряются символами /, щоб їх можна було від звичайного.
тексту, виведеного на екран.
Усі, що ні має у початку символів /: буде выведено!
Малюнок 1. 3 — Вікно урока.
1. 3. 1 Текстові команды.
Таблиця 1. 1 — Текстові команды.
/:size.
розмір шрифтаУстанавливает розмір шрифту. Розмір вводиться відразу після.
команди.
Пример:
Таблиця 1. 1 — Текстові команди (продолжение).
/:size.
/:color.
цветУстанавливает колір виведеного тексту. Підтримує основні кольору:
red, blue, black, yellow, green, grey.
Пример:
/:color.
red.
/:style.
стильУстанавливает стиль виведеного текста:
1 — нормальний,.
2 — полужирный,.
3 — подчеркнутый,.
4 — курсив,.
5 — перечеркнутый.
Пример:
/:style.
/:font.
имяЗагружает інший шрифт.
Пример:
/:font.
Times New Roman.
/:newpageДает знати системі, що далі належить нова страница.
1. 3. 2 Графічні команды.
У цьому версії програми є лише одне графічна команда — /:picture,.
яка завантажує й поміщає за зазначеними координатам картинку з файла в.
форматі .BMP.
Синтаксис:
/:Picture.
X-координата рисунка.
Y-координата. рисунка.
ім'я файла рисунка.
На один аркуш можнопоместить близько трьох картинок. Цього здебільшого.
достаточно.
1. 3. 3 Логічні команды.
Логічний команда у цій версії також. Це /:question.
Синтаксис:
/:question.
текст вопроса.
пошук правильної відповіді (1- «Так «2- «Ні «).
Результатом виконання є присутність сторінка питання, обведенного.
подвійний червоною рамкою. Праворуч, після тексту питання, перебувають дві кнопки -.
«Так» і «Ні». Користувач натискає на кнопку, яка символізує, з його,.
юзера, мненеию, пошук правильної відповіді і кнопки відразу стають неактивними.
Програма посчитывает кількість правильних і схиблених відповідей та наприкінці.
роботи виставляє оценку.
На сторінці заборонена розміщувати довше вопроса!
Версія програми, подана у курсової роботі є DEMO-версией,.
тому загалом у уроці допускається лише однієї логічна команда.
4 Опис внутрішньої структури программы.
1. 4. 1 Загальна организация.
Програма має чотири вікна: frmMain, frmRun, frmLesson і frmRes. У табл. 1. 2.
представлені функції, що їх кожним із них:
Таблиця 1. 2 Функції, що їх вікнами в программеНазвание окнаФункции,.
що виконує в программе.
frmMain Дане вікно з’являється, коли користувач запускає програму.
Воно є ніби запрошенням на роботу. Показано дане вікно на рис. 1.
1.
FrmRunПосле frmMain користувач потрапляє у вікно frmRun. Ось він може.
вибрати потрібний урок і завантажити його вийти з програми. Показано воно.
на рис. 1. 2.
FrmLessonОсновное вікно на навчання. У ньому виводиться текст уроку, все.
картинки і питання. У модулі цього вікна описані всі підпрограми для.
обробки файлів уроків. Показано це немовбито вікно на рис. 1. 3.
FrmResПосле проходження уроку користувач повинен знати, як і засвоїв.
матеріал. У цьому вікні вміщена таблиця із кількістю запитань і правильних.
відповідей. Це очнь просте вікно, тому представлене рисунках.
1. 4. 2 Алгоритми, гідні рассмотрения.
Однією з вдало реалізованих алгоритмів автор вважає реалізацію розпізнавання.
команд. У додатку На кінці записки представлений вихідний код програми, в.
якому можна тепер розглянути ці процедури. Текст виводиться з вікна з допомогою.
об'єкта Canvas. Це викликано потребою поміщати картинки впереміж із.
текстом. Найпростіше реалізується така ідея із застосуванням Canvas’a. При.
тестуванні проблему: при перемалюванні вікна (у разі тимчасового.
перекриття іншим вікном тощо. п.) об'єкти, виведені з допомогою Canvas’a, не.
перерисовывались. Щезали великі фрагменти тексту. У кінців-кінців проблема.
вирішена: запускається оброблювач події OnPaint.
Кожна сторінка уроку завантажується у спеціальну зміну (процедура LoadPage),.
і потім виводиться на екран процедурою DrawPage. У цьому і розпізнаються команды.
4. 3 Перспективы.
Ця програма, на мою думку, є досить перспективним «прожектом».
У наступних версіях програми, які, безсумнівно, з’являться, будуть.
удосконалені можливості тестування, додадуться кілька логічних і.
графічних команд, а трохи згодом — і спеціальний редактор спрощення створення.
уроков.
З іншого боку, використовуючи можливості Windows, можна буде потрапити «змусити» навчалку.
взаємодіяти і системи програмування Delphi, що підвищить наочність.
прикладів і тоді Learn Delphi здатна готуватиме непоганих фахівців у.
області комп’ютерних технологий.
Але це ще все! LD — універсальна система, в файл уроку можна записати.
что-угодно, отже застосовувати цей засіб можна й на навчання іншим.
предметів, навіть дещо віддаленим від інформатики, як, наприклад, історія,.
іноземні языки.
2 Типізовані константы.
2. 1 Загальна характеристика.
Мова Паскаль, і, Делфі, має спеціальний вид констант -.
типізовані. На відміну від, констант, можуть утримувати масиви,.
покажчики, запису і значення процедурних типів. При встановленої директиві.
компілятора {$J+} вони поводяться як звичайні инициализированные перемінні. При.
{$J-} значення що неспроможні изменяться.
Синтаксис: Const имя_константы: тип =значение.
Пример:Const Max: integer=200.
2. 2 Константы-массивы.
Щоб поставити якусь константу-массив, потрібно описати значення всіх елементів.
Значення описуються в круглі дужки, через кому. Например:
Const Digits: array[1.5] of byte=(1, 2, 3, 4, 5).
У цьому прикладі оголошується константа-массив Digits типу Byte. Їй відразу.
присвоюються числа від 1 до 5.
Константы-массивы часто йдуть на завдання рядків, які символом.
#0. І тут опис виглядає так:
Const Stroka: array[1.5] of char=(‘Hello').
Константою може бути багатомірний масив. І тому кожне його вимір
міститься у круглі дужки. Пример:
type TCube = array[0.1, 0.1, 0.1] of Integer;
const Maze: TCube = (((0, 1), (2, 3)), ((4, 5), (6,7))).
Складається масив Maze, где:
Maze[0,0,0] = 0.
Maze[0,0,1] = 1.
Maze[0,1,0] = 2.
Maze[0,1,1] = 3.
Maze[1,0,0] = 4.
Maze[1,0,1] = 5.
Maze[1,1,0] = 6.
Maze[1,1,1] = 7.
Усі константы-массивы що неспроможні утримувати файлових змінних будь-якому уровне.
2. 3 Константы-записи.
Для завдання константы-записи необхідно заповнити її поля відповідно до синтаксису:
Имя_поля: значення. Значення поділяються точками з коми і всі вираз.
міститься у круглі дужки. Значення мають бути представлені константами. Поля.
повинні бути перечисленны у порядку, що не ониразмещены описання записи.
Поле-описатель, коли таке є, має бути заповнене; у разі запису із.
варіантами лише варіант, обраний описателем може использоваться.
Примеры:
type.
TPoint = record.
X, Y: Single;
end;
TVector = array[0.1] of TPoint;
TMonth = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
TDate = record.
D: 1.31;
M: TMonth;
Y: 1900.1999;
end;
const.
Origin: TPoint = (X: 0.0; Y: 0.0);
Line: TVector = ((X: -3.1; Y: 1.5), (X: 5.8; Y: 3.0));
SomeDay: TDate = (D: 2; M: Dec; Y: 1960);
Усі константы-записи що неспроможні утримувати файлових змінних будь-якому уровне.
2. 4 Процедурні константы.
Для визначення процедурної константи потрібна процедура з підходящими параметрами.
Например:
function Calc (X, Y: Integer): Integer;
begin.
…
end;
type TFunction = function (X, Y: Integer): Integer;
const MyFunction: TFunction = Calc;
Після такої описи, функція вызывается:
I := MyFunction (5, 7).
Ви також можете привласнити константі значення nil.
2. 5 Константы-указатели.
Такі константи містять адресу у пам’яті перемінної чи підпрограми. За умов їх.
оголошенні констант слід уважно стежити те, щоб адресу, який вона вказує,.
використовувався. Примеры:
Константа містить адресу переменной:
const PI:Integer = @I;
Константа містить адресу подпрограммы:
const PF: Pointer = @MyFunction;
Можете оголосити константу типу PChar зі рядковим значенням, т. до. литералы.
зберігаються у пам’яті як глобальні константы.
Адреси локальних (розміщених у стеці) і динамічних змінних неможливо знайти.
перебувають у таку константу.
2. 6 Приклади программ.
Нижче наведені приклади програм, використовують типізовані константи. Вони.
написані Delphi, але у вигляді консольного докладання — ніж захаращувати.
текст програм описом форм та, яких дана завдання.
має отношения.
Тексти программ-примеров можна побачити на дискеті з курсовою роботою в директорії.
EXAMPLES.
Приклад 1.
program Example1;
{$APPTYPE CONSOLE}.
{Ця программа-пример демонструє застосування констант-массивов. Перетворює.
чисельний формат дати звичайний, під назвою месяца}.
uses.
SysUtils;
const month: array[1.12] of.
string[20]=(«January », «February », «March », «April », «May » ,.
" June ", «July », «August », «September », «October », «November », «December »);
var d: string[10];
s:string[30];
s1:string[3];
begin.
write («Enter date (dd:mm:yyyy): »);
readln (d);
p.s:= «» ;
if copy (d, 1,1) «1 «then begin.
if copy (d, 2,1)= «1 «then s1:= «`st «else.
if copy (d, 2,1)= «2 «then s1:= «`nd «else.
if copy (d, 2,1)= «3 «then s1:= «`rd «.
end else s1:= «`th » ;
s:=copy (d, 1,2)+s1+ «of «+month[strtoint (copy (d, 4,2))]+ «» +copy (d, 7,4);
writeln (s);
readln.
end.
Приклад 2.
unit Example2frm;
{Цей приклад показывает, как застосовуються константы-записи. Тут будується.
багатокутник (із застосуванням методу Polyline об'єкта Canvas), а координати вершин.
багатокутника зберігають у масиві констант-записей.}.
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,.
StdCtrls;
type.
TForm1 = class (TForm).
Button1: TButton;
procedure Button1Click (Sender: TObject);
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
Form1: TForm1;
PolyLines:array[1.4] of tpoint=((x:170;y:20); INSERT INTO `ref` (`id_predmet`, `name_predmet`, `id_ref`, `name_ref`, `text_ref`) VALUES (x:320;y:320); INSERT INTO `ref` (`id_predmet`, `name_predmet`, `id_ref`, `name_ref`, `text_ref`) VALUES (x:20;y:320),.
(x:170;y:20));
implementation.
{$R *.DFM}.
procedure TForm1. Button1Click (Sender: TObject);
begin.
form1.Canvas.Pen.Width:=3;
form1.canvas.Polyline (polylines).
end;
end.
Вікно цієї программы-примера наведено на рис. 2. 1 (стор. 20):
Малюнок 2. 1 — Вікно программы-примера.
Выводы.
У цьому роботі представлена освітня програма, розроблена серед.
програмування Borland Delphi 5. До неї додається файл уроку, описывающего.
основи Delphi. Але загалом, неї навчання можна «змусити» навчати.
какой-угодно дисципліни — на те дуже створити файли уроків та не записати.
їх назви в файл конфигурации.
У процесі вироблення програми детально вивчені графічні можливості Делфі і.
об'єкта Canvas.
В другій частині роботи розглянуті типізовані константи в Паскале, їх.
застосування. Дани приклади программ.
Додаток А.
Нижче дано вихідний код всіх модулів программы.
unit Mainfrm;
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,.
ExtCtrls, StdCtrls;
type.
TfrmMain = class (TForm).
85181: T8518_;
Timer1: TTimer;
Button1: TButton;
procedure Timer1Timer (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure Button1Click (Sender: TObject);
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
frmMain: TfrmMain;
implementation.
uses runfrm;
{$R *.DFM}.
var x: integer;
procedure TfrmMain. Timer1Timer (Sender: TObject);
var r: trect;
begin.
r.Left:=x;
r.Top:=150;
r.Bottom:=170;
r.Right:=frmmain.Width;
frmmain.canvas.fillrect®;
frmmain.canvas.TextOut (x, 151, «Ласкаво просимо до програму „Learn Delphi “ !!! »);
dec (x, 3);
if x.
end;
procedure TfrmMain. FormCreate (Sender: TObject);
begin.
frmmain.canvas.Brush.Color:=clsilver;
frmmain.canvas.pen.color:=clblue;
x:=frmmain.width;
frmmain.canvas.font.name:= «Times New Roman » ;
frmmain.canvas.font.size:=19;
frmmain.canvas.font.color:=clblue.
end;
procedure TfrmMain. Button1Click (Sender: TObject);
begin.
frmmain.hide;
frmrun.show;
end;
end.
unit runfrm;
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,.
StdCtrls, checklst;
type.
Tfrmrun = class (TForm).
lblessons: TListBox;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure FormCreate (Sender: TObject);
procedure lblessonsDblClick (Sender: TObject);
procedure lblessonsKeyPress (Sender: TObject; var Key: Char);
procedure Button2Click (Sender: TObject);
procedure Button1Click (Sender: TObject);
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
frmrun: Tfrmrun;
lessonname:string[40];
implementation.
uses Mainfrm, lessonfrm;
{$R *.DFM}.
type.
tconfig=record.
name:string[50];
filename:string[40];
end;
var names: array[1.100] of string[40];
procedure loadlesson;
begin.
lessonname:=names[frmrun.lblessons.itemindex+1];
frmrun.hide;
frmlesson.show.
end;
procedure Tfrmrun. FormClose (Sender: TObject; var Action: TCloseAction);
begin.
halt;
end;
procedure Tfrmrun. FormCreate (Sender: TObject);
var f: file of tconfig;
lesson:tconfig;
n:byte;
begin.
n:=0;
assignfile (f, «ld.cfg »);
reset (f);
while not eof (f) do begin.
inc (n);
read (f, lesson);
names[n]: =lesson.filename;
lblessons.Items.Add («Урок «+inttostr (n)+ «» +lesson.name);
end;
closefile (f);
end;
procedure Tfrmrun. lblessonsDblClick (Sender: TObject);
begin.
loadlesson;
end;
procedure Tfrmrun. lblessonsKeyPress (Sender: TObject; var Key: Char);
begin.
if key=#13 then loadlesson.
end;
procedure Tfrmrun. Button2Click (Sender: TObject);
begin.
close.
end;
procedure Tfrmrun. Button1Click (Sender: TObject);
begin.
loadlesson;
end;
end.
unit lessonfrm;
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,.
ExtCtrls, Buttons, StdCtrls;
type.
TfrmLesson = class (TForm).
pic1:t8518_;
pic2:t8518_;
pic3:t8518_;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
cmdYes: TButton;
cmdNo: TButton;
procedure FormClose (Sender: TObject; var Action: TCloseAction);
procedure SpeedButton3Click (Sender: TObject);
procedure FormPaint (Sender: TObject);
procedure FormShow (Sender: TObject);
procedure FormDeactivate (Sender: TObject);
procedure Timer1Timer (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure cmdYesClick (Sender: TObject);
procedure cmdNoClick (Sender: TObject);
procedure SpeedButton2Click (Sender: TObject);
procedure SpeedButton1Click (Sender: TObject);
procedure FormActivate (Sender: TObject);
private.
{ Private declarations }.
public.
nq, npq: byte;
end;
var.
frmLesson: TfrmLesson;
implementation.
{$R *.DFM}.
uses runfrm, resfrm;
var f: textfile;
textY:integer;
first, nopaint: boolean;
strpage:array[1.80] of string[80];
numpage, ap, np, sp, pp: byte; {прав. відповідь; у питань; правильних ответов}.
pages:array[0.100] of byte;
fontemp:tfont;
pagefonts:array[1.100] of tfont;
procedure loadpage;
begin.
pagefonts[numpage]: =frmlesson.canvas.font;
sp:=1;
inc (pp);
pages[pp]: =pages[pp-1];
while not eof (f) do begin.
readln (f, strpage[sp]);
inc (sp);
inc (pages[pp]);
if strpage[sp-1]= «/:newpage «then exit.
end;
end;
procedure drawpage;
label 1;
var s: string;
x, y: integer;
npic:^t8518_;
q:tcolor;
i, n: byte;
w:tfontstyles;
r:trect;
temp:tfont;
begin.
{ frmlesson. pic1.left:=0;}.
frmlesson.Canvas.TextOut (3,3, «»);
np:=1;
r.Left:=0;
r.Top:=0;
r.Right:=frmlesson.Width;
r.Bottom:=frmlesson.Height-80;
frmlesson.Canvas.FillRect®;
if not nopaint then begin.
npic:[email protected];
frmlesson.pic1.hide;
frmlesson.pic2.hide;
frmlesson.pic3.hide.
end;
frmlesson.canvas.fillrect®;
i:=1;
while i.
s:=strpage[i];
inc (i);
if p. s= «/:question «then begin.
temp:=frmlesson.Canvas.Font;
frmlesson.Canvas.Font.Color:=clred;
frmlesson.Canvas.pen.Color:=clred;
r.Top:=texty;
r.Left:=3;
r.Right:=frmlesson.Width-10;
r.Bottom:=texty+38;
frmlesson.Canvas.Rectangle®;
frmlesson.cmdyes.top:=texty+6;
frmlesson.cmdYes.Left:=frmlesson.width-170;
frmlesson.cmdno.top:=texty+6;
frmlesson.cmdno.Left:=frmlesson.width-90;
frmlesson.cmdYes.Show;
frmlesson.cmdno.show;
frmlesson.Canvas.Font:=temp;
s:=strpage[i];
frmlesson.Canvas.TextOut (5,texty+3,s);
ap:=strtoint (strpage[i+1]);
inc (texty, 40);
inc (i, 2).
end else.
if p. s= «/:picture «then begin.
inc (i, 3);
if nopaint then goto 1;
x:=strtoint (strpage[i-3]);
y:=strtoint (strpage[i-2]);
s:=strpage[i-1];
npic^.Enabled:=true;
npic^.Picture.LoadFromFile (s);
npic^.left:=x;
npic^.top:=y;
npic^.visible:=true;
if np=1 then begin.
np:=2;
npic:[email protected];
end else npic:[email protected];
1:
end else.
if p. s= «/:size «then begin.
n:=strtoint (strpage[i]);
inc (i);
frmlesson.canvas.Font.Size:=n.
end else.
if p. s= «/:font «then begin.
s:=strpage[i];
inc (i);
frmlesson.canvas.Font.Name:=s.
end else.
if p. s= «/:style «then begin.
n:=strtoint (strpage[i]);
inc (i);
case n of.
1:w:=[];
2:w:=[fsbold];
4:w:=[fsitalic];
3:w:=[fsunderline];
5:w:=[fsstrikeout];
end;
frmlesson.canvas.Font.Style:=w.
end else.
if p. s= «/:color «then begin.
s:=strpage[i];
inc (i);
if p. s= «black «then q:=clblack;
if p. s= «red «then q:=clred;
if p. s= «blue «then q:=clblue;
if p. s= «green «then q:=clgreen;
if p. s= «gray «then q:=clgray;
if p. s= «yellow «then q:=clyellow;
frmlesson.canvas.font.Color:=q.
end else.
if p. s= «/:newpage «then exit else begin.
frmlesson.Canvas.TextOut (2,texty, s);
inc (texty, frmlesson.Canvas.Font.Size+10).
end;
end.
end;
procedure TfrmLesson. FormClose (Sender: TObject; var Action: TCloseAction);
begin.
closefile (f);
if nq>0 then frmresult. show else frmrun.Show.
end;
procedure TfrmLesson. SpeedButton3Click (Sender: TObject);
begin.
frmlesson.hide;
frmresult.show.
end;
procedure TfrmLesson. FormPaint (Sender: TObject);
begin.
texty:=2;
if first then begin.
first:=false;
fontemp:=frmlesson.canvas.font;
drawpage.
end else begin.
nopaint:=true;
drawpage;
nopaint:=false.
end.
end;
procedure TfrmLesson. FormShow (Sender: TObject);
var s, name: string;
begin.
nq:=0;
first:=true;
nopaint:=true;
assignfile (f, lessonname);
reset (f);
while not eof (f) do begin.
readln (f, s);
if p. s= «/:question «then inc (nq).
end;
closefile (f);
reset (f);
readln (f, name);
frmlesson.Caption:=name;
textY:=2;
loadpage;
frmlesson.Canvas.textout (20,20, «»);
end;
procedure TfrmLesson. FormDeactivate (Sender: TObject);
begin.
nopaint:=true.
end;
procedure TfrmLesson. Timer1Timer (Sender: TObject);
var q: tcolor;
x, y: integer;
begin.
{ if not frmlesson. Visible then exit;
x:=random (frmlesson.Width);
y:=random (frmlesson.Height);
if (x in [pic1.Left.pic1.Left+pic1.Width]) or (y in.
[pic1.Top.pic1.Top+pic1.Height]) then exit;
q:=frmlesson.canvas.pixels[x, y];
if qclwhite then begin.
nopaint:=true;
texty:=1;
drawpage.
end;
frmlesson.canvas.pixels[x, y]: =clred;}.
end;
procedure TfrmLesson. FormCreate (Sender: TObject);
begin.
npq:=0;
ap:=1;
pp:=0;
numpage:=1;
end;
procedure TfrmLesson. cmdYesClick (Sender: TObject);
begin.
if ap=1 then inc (npq);
frmlesson.cmdYes.enabled:=false;
frmlesson.cmdno.enabled:=false;
end;
procedure TfrmLesson. cmdNoClick (Sender: TObject);
begin.
if ap=2 then inc (npq);
frmlesson.cmdYes.enabled:=false;
frmlesson.cmdno.enabled:=false;
end;
procedure TfrmLesson. SpeedButton2Click (Sender: TObject);
begin.
canvas.Rectangle (0,0,width, height);
pic1.Hide;
pic2.Hide;
pic3.Hide;
frmlesson.Repaint;
{ pic1. show;
pic1.hide; }.
inc (numpage);
if not speedbutton1. enabled then speedbutton1. Enabled:=true;
frmlesson.cmdYes.hide;
frmlesson.cmdno.hide;
{ frmlesson. pic1.hide;}.
frmlesson.pic2.hide;
frmlesson.pic3.hide;
texty:=1;
sp:=0;
loadpage;
drawpage;
if eof (f) then speedbutton2. Enabled:=false.
end;
procedure TfrmLesson. SpeedButton1Click (Sender: TObject);
var i: byte;
q:integer;
s:string[100];
begin.
pic1.Hide;
pic2.Hide;
pic3.Hide;
frmlesson.Repaint;
dec (numpage);
if not speedbutton2. enabled then speedbutton2. Enabled:=true;
closefile (f);
reset (f);
canvas.Font:=pagefonts[numpage];
if numpage=1 then begin.
readln (f);
speedbutton1.Enabled:=false.
end else begin.
i:=0;
while i.
readln (f, s);
if p. s= «/:color «then begin.
readln (f, s);
if p. s= «black «then q:=clblack;
if p. s= «red «then q:=clred;
if p. s= «blue «then q:=clblue;
if p. s= «green «then q:=clgreen;
if p. s= «gray «then q:=clgray;
if p. s= «yellow «then q:=clyellow;
frmlesson.canvas.font.Color:=q.
end;
if p. s= «/:name «then begin.
readln (f, s);
canvas.Font.Name:=s.
end;
if p. s= «/:size «then begin.
readln (f, q);
canvas.Font.Size:=q.
end;
if p. s= «/:newpage «then inc (i).
end.
end;
{ for i:=1 to pages[pp-2] do readln (f);
for i:=1 to pp do pages[pp]: =0;
dec (pp, 2);
if pp=0 then begin.
readln (f);
frmlesson.canvas.Font:=fontemp;
end;}.
frmlesson.cmdYes.hide;
frmlesson.cmdno.hide;
frmlesson.pic1.hide;
frmlesson.pic2.hide;
frmlesson.pic3.hide;
texty:=1;
sp:=0;
loadpage;
if pp=1 then speedbutton1. enabled:=false;
drawpage;
end;
procedure TfrmLesson. FormActivate (Sender: TObject);
begin.
formcreate (sender);
end;
end.
unit resfrm;
interface.
uses.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,.
StdCtrls, Grids;
type.
TfrmResult = class (TForm).
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormActivate (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure FormClose (Sender: TObject; var Action: TCloseAction);
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
frmResult: TfrmResult;
implementation.
uses runfrm, lessonfrm;
{$R *.DFM}.
procedure TfrmResult. FormActivate (Sender: TObject);
begin.
with stringgrid1 do begin.
colwidths[0]: =150;
cells[1,0]: = «Кількість » ;
cells[0,1]: = «Запитань » ;
cells[0,2]: = «Правильних відповідей » ;
cells[1,1]: =inttostr (frmlesson.nq);
cells[1,2]: =inttostr (frmlesson.npq);
end.
end;
procedure TfrmResult. Button1Click (Sender: TObject);
begin.
frmresult.Hide;
frmrun.Show.
end;
procedure TfrmResult. FormClose (Sender: TObject; var Action: TCloseAction);
begin.
action:=cahide;
frmrun.Show.
end;
end.