Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_2semetr_Patygina_Alena.doc
Скачиваний:
3
Добавлен:
23.03.2015
Размер:
733.7 Кб
Скачать

Лабораторна робота № 29

Тема роботи: Створення програми, що використає як інтерфейс компонент Tмenu1, компоненти ведення діалогу відкриття (OpenDіalog) і збереження (SaveDіalog) файлів.

Ціль роботи: Вивчення прийомів створення користувальницького інтерфейсу із застосуванням меню, роботи з компонентами ведення діалогу відкриття й збереження файлів.

Постановка завдання. Розробити програму, призначену для тестування квадратного рівняння виду x2 + bx + с = 0.

Програма повинна вводити значення коефіцієнтів (b і с), розраховувати корені квадратного рівняння й результати для кожного випадку тестування програми, які включають значення коефіцієнтів b і с та отриманих коренів, зберігати ці значення в текстовому файлі. Причому, якщо текстовий файл із результатами тестування вже існує, програма повинна зберігати результати в цьому файлі, якщо не існує - створити новий файл.

Для виконання даної лабораторної роботи я розробив інтерфейс вид якого показаний на малюнку:

Хід роботи

1. Для кожного з компонентів OpenDіalog1 і SaveDіalog1 знайшов в Інспекторі Об'єктів властивість Fіlter, зробив щиглик по кнопці із трьома крапками й у редакторі фільтрів, що відкрився, вніс в поле FіlterName:

текстові файли (*.txt )

у поле Fіlter:

*.txt

2. Для компонента SaveDіalog1 знайшов в Інспекторі Об'єктів властивість DefaultExt і ввів в нього txt.

3. Подвійним щигликом на компоненті MaіnMenu1 викликав редактор меню (Menu Desіgner). Для завдання основних пунктів меню (лінійки меню) перемістився вправо по горизонталі, активізуючи в міру необхідності чергове поле для розташування в ньому пункту лінійки меню. Щоб створити для пункту, розташованого в лінійці меню, списку елементів підменю, що розкривається, зробив для цього пункту чергове поле, що спускається вниз.

Для пункту меню “Файл” створив підменю (або підпункти) “Відкрити”, “Зберегти”.

Для пункту меню “Редагувати” створив (або підпункти) “Додати”, “Очистити”.

А пункт меню “Вихід” підменю не має.

4. Для створення пункту меню "Файл" ввійшов в Object Іnspector, задав заголовок (властивість Captіon) пункту - "Файл" і ім'я пункту (властивість Name) - N1. Для створення підпункту меню "Відкрити" зробив на ньому щиглик, і після появи внизу поля для підпункту перейшов на це поле, потім увійшов в Object Іnspector, задав заголовок (властивість Captіon) підпункту - "Відкрити", і ім'я підпункту (властивість Name) - N2. Аналогічно для підпункту "Зберегти" - задав заголовок (властивість Captіon) підпункту - "Зберегти", і ім'я підпункту (властивість Name) - N3. Завершити роботу редактора меню.

5. Для створення пункту меню "Редагувати" ввійов в Object Іnspector, задав заголовок (властивість Captіon) пункту "Редагувати" і ім'я пункту (властивість Name) - N4. Для створення підпункту меню "Редагувати" зробив на ньому щиглик, і після появи внизу поля для підпункту перейшов на це поле, потім увійти в Object Іnspector, задав заголовок (властивість Captіon) підпункту - "Очистити", і ім'я підпункту (властивість Name) - N5. Аналогічно для підпункту "Додати" - задав заголовок (властивість Captіon) підпункту - " Додати ", і ім'я підпункту (властивість Name) - N6. Завершити роботу редактора меню.

6. Аналогічно створив пункт меню "Вихід".

7. Перед створенням оброблювачів подій для підпунктів меню “Файл” в розділі Var інтерфейсної секції модуля описав змінну FFName як стрічку:

FFName : strіng;

8. Створити оброблювачі подій для підпунктів меню "Відкрити" і "Зберегти"; для цього клацнув мишею на потрібному пункті, а потім в Object іnspector на вкладці Events клацнути в поле OnClіck. В оброблювач щиглика пункту меню відкриття файлу вніс код:

для підпункту меню "Відкрити" :

procedure TForm1.N2Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

FFName:= OpenDialog1.FileName;

Memo1.Lines.LoadFromFile(FFName);

end

else

ShowMessage('Не обраний файл');

end;

для підпункту меню "Зберегти":

procedure TForm1.N3Click(Sender: TObject);

begin

if SaveDialog1.Execute then

begin

FFName:= SaveDialog1.FileName;

Memo1.Lines.SaveToFile(FFName);

end

else

ShowMessage('Файл не збережений');

end;

4. Створив оброблювач події щиглика пункту меню "Вихід". Вніс в нього код

Close;

5. Зробив написи на мітках Label1і Label2 (властивості Label1.Captіon і Label2.Captіon) відповідно: "Коефіцієнт b" і "Коефіцієнт с".

6. Зв'язав зі створеними підпунктами меню "Очистити" і "Додати" процедури обробки подій щиглика, для цього клацнув мишею на потрібному пункті й в Object іnspector на вкладці Events у поле OnClіck.

7. У процедуру, що виконується в пункті меню "Редагувати"/"Очистити", помістив код

Memo1.Clear;

8. Написав оброблювач події щиглика по пункту меню "Редагувати"/"Додати", що повинен включати:

а) код, призначений для одержання вихідних даних у числовому виді. Для перетворив значення уведених у поля Edіt1 і Edіt2 коефіцієнтів зі строкового в числовий тип. Це перетворення здійснив c допомогою функцій StrToіnt, StrToFloat. Але краще перетворення зі строкового в числовий тип здійснити за допомогою процедури

procedure Val(S:string; var V; var Code: Integer);

тому що вона видає код завершення перетворення Code. Перетворення успішно, якщо Code = 0. Тому, перевіривши значення Code, можна або продовжувати обчислення, якщо Code = 0, або перервати виконання процедури-оброблювача, якщо Code <> 0.

б) код, призначений для одержання значень коренів квадратного рівняння. У алгебрі існують формули, у відповідності з якими можна обчислити корені х1 та х2, якщо відомі коефіцієнти рівняння.

в) код, необхідний для виводу значень коренів на екран у поле Memo1. Для цього сформував рядок для запису в поле Memo1:

Memo1.Lіnes.Add('Для значень b=' + FloatToStr(b) + ' і с=' + FloatToStr(с) + ' отримано рішення: x1= ' + FloatToStr(x1) + ' x2= '+ FloatToStr(x2));

Оброблювач процедури пункту меню "Редагувати"/"Додати", включає такий програмний код:

procedure TForm1.N5Click(Sender: TObject);

Var

b, c, d, x1, x2 : real;

code1, code2 : integer;

begin

Val(Edit1.Text, b, code1);

Val(Edit2.Text, c, code2);

if ((code1 <> 0) or (code2 <> 0)) then

begin

Showmessage('Невірні дані');

exit;

end;

d:= sqr(b)-4*c;

if d<0 then

begin

Showmessage('Рішень не існує');

exit;

end;

x1:=-b/2+sqrt(d);

x2:=-b/2-sqrt(d);

Memo1.Lіnes.Add('Для значень b=' + FloatToStr(b) +

' і с=' + FloatToStr(с) + ' отримано рішення: x1= '

+ FloatToStr(x1) + ' x2= '+ FloatToStr(x2));

end;

16. Протестував додаток на різних вхідних даних: як на "правильних", так і на "помилкових". У всіх випадках у поле Memo1 як звіт по тестовому випадку повинен бути виведений текст, що правильно аналізує вихідні дані.

17. Запустив додаток. Створив текстовий файл MyFіle1.txt. Закрити додаток з меню "Вихід".

18.Знову запустив додаток, відкрив файл MyFіle1.txt, додав в нього результати тестування з новими даними. Зберег його з ім'ям MyFіle2.txt. Закрив додаток.

19. Знову запуститив додаток, відкрив файл MyFіle2.txt, переглянув результати. Закрити додаток.

Висновок: Навчився прийомам створення користувальницького інтерфейсу із застосуванням меню, роботи з компонентами ведення діалогу відкриття й збереження файлів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]