ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Розробка інтерактивного середовища навчання
         

     

    Інформатика, програмування
    Розробка інтерактивного середовища навчання роботі в 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
    750
    /: color
    цветУстанавлівает колір виведеного тексту. Підтримує основні кольори:
    red, blue, black, yellow, green, grey.
    Приклад:
    /: color
    red
    /: style
    стільУстанавлівает стиль виведеного тексту:
    1 - нормальний,
    2 - напівжирний,
    3 - підкреслений,
    4 - курсив,
    5 - перекреслений.
    Приклад:
    /: style
    5
    /: 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);
    s :='';< br /> 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), (x: 320; y: 320), (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)
    8518_1: 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 (r);
    frmmain.canvas.TextOut (x, 151, 'Ласкаво просимо до програми "Learn Delphi" !!!');< br /> 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 ,'');< br /> np: = 1;
    r.Left: = 0;
    r.Top: = 0;
    r.Right: = frmlesson.Width;
    r.Bottom: = frmlesson.Height-80;
    frmlesson.Canvas.FillRect (r);
    if not nopaint then begin
    npic: = @ frmlesson.pic1;
    frmlesson.pic1.hide;
    frmlesson.pic2.hide;
    frmlesson.pic3.hide
    end;
    frmlesson.canvas.fillrect (r);
    i: = 1;
    while i
    s: = strpage [i];
    inc (i);
    if 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 (r);
    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 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: = @ frmlesson.pic2;
    end else npic: = @ frmlesson.pic3;
    1:
    end else
    if s = '/: size' then begin
    n: = strtoint (strpage [i]);
    inc (i);
    frmlesson.canvas.Font.Size: = n
    end else
    if s = '/: font' then begin
    s: = strpage [i];
    inc (i);
    frmlesson.canvas.Font.Name: = s
    end else
    if s = '/: style' then begin
    n: = strtoint (strpage [i]);
    inc (i);
    case n of
    1: w :=[];< br /> 2: w: = [fsbold];
    4: w: = [fsitalic];
    3: w: = [fsunderline];
    5: w: = [fsstrikeout];
    end;
    frmlesson.canvas.Font.Style: = w
    end else
    if s = '/: color' then begin
    s: = strpage [i];
    inc (i);
    if s = 'black' then q: = clblack;
    if s = 'red' then q: = clred;
    if s = 'blue' then q: = clblue;
    if s = 'green' then q: = clgreen;
    if s = 'gray' then q: = clgray;
    if s = 'yellow' then q: = clyellow;
    frmlesson.canvas.font.Color: = q
    end else
    if 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 s = '/: question' then inc (nq)
    end;
    closefile (f);
    reset (f);
    readln (f, name);
    frmlesson.Caption: = name;
    textY: = 2;
    loadpage;
    frmlesson.Canvas.textout (20,20 ,'');< br /> 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 s = '/: color' then begin
    readln (f, s);
    if s = 'black' then q: = clblack;
    if s = 'red' then q: = clred;
    if s = 'blue' then q: = clblue;
    if s = 'green' then q: = clgreen;
    if s = 'gray' then q: = clgray;
    if s = 'yellow' then q: = clyellow;
    frmlesson.canvas.font.Color: = q
    end;
    if s = '/: name' then begin
    readln (f, s);
    canvas.Font.Name: = s
    end;
    if s = '/: size' then begin
    readln (f, q);
    canvas.Font.Size: = q
    end;
    if 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.
     



         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status