Лабораторна робота № 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;
|