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

Лабораторна робота № 4. Тема: Обробка даних одновимірних та двовимірних масивів з використанням об’єктів Delphi.

Мета роботи. Навчитися використовувати таблицю текстових рядків StringGrid для обробки числових даних, а також кнопки BitBtn та SpeedButton .

Теоретичні відомості.

Об'єкт BitBtn

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

Таблиця 4.1 Властивості кнопки BitBtn

Властивість

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

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

Glyph

Малюнок з файлу на кнопці

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

Kind

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

bkClose (закриває вікно), bkCancel (кнопка "Відмінити" діалогового вікна), bkNo (кнопка

Об'єкт SpeedButton

Об'єкт SpeedButton використовують для створення кнопки панелі інструментів. Основні властивості об'єкта SpeedButton представлені в табл. 4.2.

Таблиця 4.2. Властивості кнопки SpeedButton

Властивість

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

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

Layout

Взаємне розташування малюнка і тексту на кнопці

blGlyphLeft (малюнок біля лівої межі, текст справа), blGlyphRight (навпаки)

Spacing

Відстань у пікселях між малюнком і текстом

6 - шість пікселів між малюнком і текстом на кнопці

Margin

Відстань у пікселях між малюнком і найближчим до нього краєм кнопки

-1 - малюнок з текстом центрується, 8 - вісім пікселів між краєм

Об'єкт StringGrid

Об'єкт StringGrid призначений для створення у формі двовимірної таблиці, комірки якої містять рядки символів. Піктограма компоненти StringGrid знаходиться на вкладці Additional (рис. 4.1). Об'єкт StringGrid зручно використовувати для введення і виведення елементів масиву. Кожен елемент масиву записується у окрему комірку компоненти StringGrid. Для того щоб змінити вміст комірки чи виконати будь-яку дію над значенням комірки потрібно записати ім’я цієї комірки. Наприклад, вказавши ім’я StringGrid1.Cells[j,i] ми звертаємось до комірки першої таблиці форми, яка знаходиться на перетині j-го стовпця та i-го рядка . Слід запам’ятати, що колонки і рядки таблиці нумеруються з нуля.

Рис .4.1. Компонент StringGrid

У табл. 4.3 перераховані деякі властивості компоненти StringGrid.

Таблиця 4.3. Властивості компоненти StringGrid

Властивість

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

Name

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

ColCount

Кількість колонок таблиці

RowCount

Кількість рядків таблиці

Cells

Комірка таблиці, що знаходиться на перетині стовпця з номером col і рядка з номером row визначається як cells[col, row]

FixedCols

Кількість зафіксованих зліва колонок таблиці. Зафіксовані колонки виділяються кольором і при горизонтальній прокрутці таблиці залишаються на місці

FixedRows

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

Options.goEditing

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

Options.goTab

Дозволяє (True) або забороняє (False) використання клавіші <Таb> для переміщення курсора до наступної комірки таблиці

Options.GoAlways-ShowEditor

Ознака знаходження компоненти в режимі редагування. Якщо значення властивості False, то для того, щоб в комірці з'явився курсор, треба почати набирати текст, натиснути клавішу <F2> або зробити клацання мишею

DefaultColWidth

Задає ширину колонок таблиці

DefaultRowHeight

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

GridLineWidth

Задає ширину ліній, що обмежують елементи таблиці

Використання події комірки OnSelectCell для реалізації обчислень

Створили три поля edit7, edit8, edit9. В edit7 виводиться ціна вибраного товару , в edit8 вводимо кількість замовленого товару , в edit9 виводиться вартість замовленого товару.

Запрограмували подію OnSelectCell для таблиці StringGrid2

procedure TPagesDlg.StringGrid2SelectCell(Sender: TObject; ACol,

ARow: Integer; var CanSelect: Boolean);

var s,k:integer;

begin

label8.caption:=stringGrid2.Cells[ACol,ARow] ;

k:=strtoint(edit8.Text);

edit7.text:=stringGrid2.Cells[3,ARow];

s:=k*strtoint(stringGrid2.Cells[3,ARow] );

edit9.text:= inttostr(s);end;

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

procedure TPagesDlg.Button6Click(Sender: TObject);

var l,k,n:real; i,j:integer;

begin j:=stringGrid3.Row ;/ номер поточного рядка

for i:=1 to 100 do

if Edit2.text=stringgrid1.cells[2,i] then

begin

stringgrid3.Cells[0,j]:=stringgrid1.Cells[1,i];

stringgrid3.Cells[1,j]:=stringgrid1.Cells[2,i];

stringgrid3.Cells[2,j]:=Edit6.text;

l:=Strtofloat(Edit6.text);

k:=Strtofloat(Edit3.text);

n:=k*l;

stringgrid3.Cells[3,j]:=floattostr(n);

end;

stringGrid3.Row:= stringGrid3.Row+1 ;/ перехід на наступний /рядок

end;

. Використання компоненти StringGrid

Як приклад використання компоненти StringGrid для введення масиву розглянемо програму, яка обчислює середнє арифметичне значення елементів масиву. Діалогове вікно програми наведено на рис. 4.2. Компонента StringGrid використовується для введення масиву, компоненти Label1 і Label2 — для виведення тексту пояснення і результату розрахунку, Button1 — для запуску на виконання процесу обчислення середнього арифметичного значення.

Рис. 4.2. Форма програми Введення і обробка масиву

При натисканні кнопки Обчислити виконується процедура TForm1.ButtonlClick, повний текст якої наведено нижче.

procedure TForm1.ButtonlClick(Sender: TObject);

var

a : array[1..5] of integer; // масив, значеннями якого //будуть цілі числа

suram: real; // сума значень елементів масиву

sr: real; // середнє арифметичне елементів масиву

i:integer; // індекс елементів масиву

begin

// введення елементів масиву

// вважаємо, якщо комірка порожня, то відповідний елемент масиву

// дорівнює нулю

for i:= 1 to 5 do

if Length(StringGridl.Cells[i-l,0])<>0

then a[i] := StrToFloat(StringGridl.Cells[i-1, 0]) else a[i] := 0;

// обробка масиву

summ := 0;

for i :=1 to 5 do

summ := summ + a[i]; // обчислення суми значень //елементів масиву

sr := summ / 5; // та середнього арифметичного //елементів масиву

// виведення результату

Label2.Caption :=

'Сума елементів: ' + FloatToStr(summ)

+ #13+ 'Середнє арифметичне: ' + FloatToStr(sr); end;