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

3. Методичні вказівки до лабораторної роботи №3

3.1. Етапи створення віконної прикладної програми роботи з таблицями рядків StringGrid

Створити проект роботи з масивами, який використовує стандартний об'єкт StringGrid, для обчислення суми векторів Х и У розмірністю n=6, m=4, відповідно. Результат обчислення – матриця розмірністю nm.

Рішення

1. Для створення нового проекту можна скористатися командою головного меню File  New  Application або, якщо ви тільки що завантажили середовище Delphi, можна, відразу приступати, до створення нового проекту.

2. Відмовтеся від можливості змінювати вікна програми. Змінить значення властивості форми BorderStyle на bsDilog. При запуску програми зверніть увагу на відсутність кнопок для мінімізації, максимізації вікна. Розглянете інші властивості і чим вони відрізняються.

3. Властивості Caption для Form1 задайте значення – Работа c массивами (Робота з масивами).

4. З вкладки Additional на Form1 помістимо три компоненти StringGrid.

У таблиці StringGrid може знаходитися довільне число рядків і стовпців. Якщо зафіксувати необхідна кількість перших рядків і стовпців, то можна задати заголовки рядків і стовпців, що постійно присутні у вікні компонента, у тому числі при горизонтальному і вертикальному скролінгу.

На перетинанні рядків і стовпців знаходяться комірки. Кожна комірка може містити символьний рядок або довільний об'єкт, асоційований з коміркою. Найчастіше таким об'єктом є деякий рисунок. Якщо для комірок задано режим редагування, то на етапі виконання програми дозволяється вводити і редагувати, дані які знаходяться в комірці.

Нумерація рядків і стовпців таблиці починається з нуля. Координати кожної комірки таблиці задаються парою чисел, перше з яких є номером стовпця, а друге – номером рядка. Наприклад, комірка Cells[3, 5] розташована в четвертому стовпці і шостому рядку.

Властивість

Опис властивості

Name

Ім'я компонента. Використовується в програмі для доступу до властивостей компонента

Cells

Відповідній таблиці двовимірний строковий масив. Якщо рядки і стовпці таблиці нумерувати з нуля, то комірці (Cells) таблиці, що знаходиться на перетинанні i-й стовпчика і j-й рядка відповідає Cells[i,j] елемент масиву

ColCount

Задає число стовпців у таблиці

RowCount

Задає число рядків у таблиці

FixedCols

Задає число фіксованих стовпців таблиці. За замовчуванням задається один фіксований стовпець

FixedRows

Задає число фіксованих рядків таблиці. За замовчуванням задається один фіксований рядок

Options

Властивість є множиною, що визначає багато властивостей таблиці

Options.goEditing

Ознака припустимого редагування вмісту комірок таблиці

Options.goColSizing,

Options.goRowSizing

Можливість для користувача змінювати за допомогою миші розміри стовпців і рядків

Задамо наступні значення

Властивість

Значення

StringGrid1

StringGrid2

StringGrid3

Name

SG1

SG2

SG3

ColCount

7

5

5

RowCount

2

2

7

FixedCols

1

1

1

FixedRows

1

1

1

DefaultColWidth

50

50

50

Options.goEditing

(можливість редагувати)

True

(мається)

True

(мається)

False

(відсутня)

Зауваження. Щоб відкрити список властивості Options (Параметри) об'єкта, треба двічі клацнути на цьому слові у вікні Object Inspector даного об'єкта.

5. З вкладки Standard на Form1 помістимо два компоненти Button. Властивості Caption для Button1 задайте значення – &Вычислить (&Обчислити). Властивості Caption для Button2 задайте значення – &Новое (&Нове).

Зауваження. Символ & у заголовку кнопки вказує на те, що цю кнопку можна натиснути також за допомогою «гарячої» комбінації клавіш Alt + Shift+ буква заголовка, перед якою стоїть цей символ (тобто, наприклад, Alt +Shift + В).

6. З вкладки Additional на Form1 перенесемо командну кнопку BitBtn.

Компонент BitBtn – кнопка з рисунком і визначеним типом дії. Стандартний набір файлів з малюнками для кнопок знаходиться в папці C:\Program Files\Borland\Images\Buttons. Цей компонент має такі властивості:

Властивість

Опис властивості

Приклади значень

Glyph

Рисунок з файлу на кнопці

Адреса файлу задається в діалоговому вікні

Kind

Тип стандартної дії

bkClose (закриває вікно), bkCancel (кнопка "Скасувати" діалогового вікна), bkYes (кнопка «Так»), bkNo (кнопка "Ні" діалогового вікна), bkHelp (кнопка «Допомога») і інші

Якщо задати стандартну дію, то дану кнопку програмувати не потрібно. Задайте наступні властивості для вставленого об'єкта:

Властивість

Значення

Kind

bkClose

Caption

& Завершить (& 3авершити)

7. Збережемо проект в окремій папці.

8. Комірки першого, зафіксованого, рядка і першого, зафіксованого, стовпця таблиці використовуються як заголовки колонок і рядків таблиць. Під час створення (проектування) форми додатка установити значення елементів масиву Cells не можна, тому що елементи масиву доступні тільки під час роботи програми. Тому значення елементів масиву Cells, що відповідають першому рядкові і першому стовпцеві таблиць, установлює процедура обробки події onActivate, що відбувається під час обробки форми додатка. Крім цього процедура вписує в перші рядки і перші стовпці таблиць їхні заголовки. Запрограмуємо процедуру onActivate.

Для того щоб запрограмувати процедуру обробки події onActivate необхідно щоб у Object Inspector у списку компонентів поточної форми стояв напис:

Form1

TForm1

Тоді на вкладці Events у стовпці назв подій знаходимо подію onActivate (див Рис. 10). Цій стандартній події відповідає назва методу (FormActivate), що з'явиться після подвійного щиглика миші в правому стовпці (стовпець назв оброблювачів подій). У цей момент у вікно тексту програми додається шаблон базового коду (процедури) для цього методу. Шаблон необхідно заповнити відповідними командами.

procedure TForm1.FormActivate(Sender: TObject);

var i:byte;

begin

//Для SG1

//Записуємо символ X у комірку що знаходиться

//у першому стовпчику і першому рядку – Cells [0,0]

SG1.Cells[0,0]:=' X ';

//Комірка Cells[0,l] указує на кількість рядків,

//таким чином масив одновимірний

SG1.Cells[0,1]:='Row N 1';

//Заповнюються заголовки стовпців

For і:=1 to SG1.ColCount-1 do

SG1.Cells[і,0]:='Col N'+IntToStr(і);

//Для SG2

SG2.Cells[0,0]:=' Y ';

SG2.Cells[0,1]:='Row N 1';

For i:=1 to SG2.ColCount-1 do

SG2.Cells[і,0]:='Col N'+IntToStr(і);

//Для SG3

SG3.Cells[0,0]:=' X+Y ';

//Заповнюються заголовки стовпців

For і:=1 to SG3.ColCount-1 do

SG3.Cells[і,0]:='Col N'+IntToStr(і);

//Заповнюються заголовки рядків

For i:=1 to SG3.RowCount-1 do

SG3.Cells[0,i]:='Row N'+IntToStr(i);

end;

9. Запрограмуємо кнопку «Вычислить» («Обчислити»).

procedure TForm1.Button1Click(Sender: TObject);

Const N=6;M=4;

var i,j:byte;

x:array [1..N]of integer;

y:array [1..M]of integer;

z:array [1..N,1..M]of integer;

begin

//Заповнюємо першу таблицю SG1 - масив Х

For і:=1 to SG1.ColCount-1 do

x[і]:=StrToInt(SG1.Cells[і,1]);

//Заповнюємо другу таблицю SG2 – масив У

For j:=1 to SG2.ColCount-1 do

y[j]:=StrToInt(SG2.Cells[j,1]);

//Обчислюємо суму двох векторів

For i:=1 to N do

For j:=1 to M do

begin

z[i,j]:=x[i]+y[j];

SG3.Cells[j,i]:=IntToStr(z[i,j]);

end;

end;

Для рішення цієї задачі можна було не використовувати проміжні масиви, а працювати прямо з комірками таблиць:

For i:=1 to SG1.ColCount-1 do

For j:=1 to SG2.ColCount-1 do

SG3.Cells[j,i]:=IntToStr(StrToInt(SG1.Cells[i,1])+

+StrToInt(SG2.Cells[j,1]));

10. Запрограмуємо кнопку «Новое» («Нове»). Необхідно очистити комірки всіх трьох таблиць.

procedure TForm1.Button2Click(Sender: TObject);

var i,j:byte;

begin

with SG1 do

for i:=1 to ColCount-1 do Cells[i,1]:=' ';

with SG2 do

for i:=1 to ColCount-1 do Cells[i,1]:=' ';

with SG3 do

for i:=1 to RowCount-1 do

for j:=1 to ColCount-1 do Cells[j,i]:=' ';end;

Результат роботи проекту приведений на рис. 11.

Рис. 11. Результат роботи проекту «Робота з масивами»

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