Використання компонента stringgrid, програмування - програмування c, delphi, c #

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






Мал. 5.3. Діалогове вікно програми Введення і обробка масиву

Додається компонент stringGrid в форму точно так же, як і інші компоненти. Після додавання компонента до форми потрібно виконати його настройку відповідно до табл. 5.2. Значення властивостей Height і width слід за допомогою миші встановити такими, щоб розмір компонента дорівнював розміру рядка.

Текст програми приведений в лістингу 5.2.

Таблиця 5.2. Значення властивостей компонента StringGrid1

Лістинг 5.2. Введення і обробка масиву цілих чисел

Windows, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;

procedure ButtonlClick (Sender: TObject); private

procedure TForml.ButtonlClick (Sender: TObject); var

a. array [1..5] of integer; // масив

summ: integer; // сума елементів

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

i: integer; // індекс

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

// їй елемент масиву дорівнює нулю

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

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

summ: = summ + a [i]; sr: = summ / 5;






У висновок результату Label2.Caption: =

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

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

Після пробних запусків програми виникає бажання внести зміни в процес введення масиву. Так, було б непогано, щоб курсор автоматично переходив в наступний елемент таблиці, наприклад, в результаті натискання клавіші . Зробити це можна за допомогою процедури обробки події onKeyPress. На цю ж процедуру можна покласти завдання фільтрації вводяться в елемент таблиці даних. У нашому випадку треба дозволити введення в осередок тільки цифр.

Текст процедури обробки події OnKeyPress приведений в лістингу 5.3. Слід звернути увагу на властивість Col, яке під час роботи програми містить номер колонки таблиці, в якій знаходиться курсор. Це властивість можна також використовувати для переміщення курсору в потрібну комірку таблиці. Однак потрібно враховувати, що колонки таблиці, втім, як і рядки, нумеруються з нуля.

Лістинг 5.3. Процедура обробки події OnKeyPress

procedure TForm1.StringGridlKeyPress (Sender: TObject;

# 8, '0' .. '9'. ; // цифри і клавіша

# 13: // клавіша

if StringGridl.Col

then StringGridl.Col: = StringGridl.Col + 1;

else key: = Chr (0); // інші символи заборонені

Якщо потрібно ввести масив дробових чисел (a: array [1. 5] of real), то процедура обробки події OnKeyPress дещо ускладниться, т. К. Крім цифр допустимими символами є символ-роздільник (кома або крапка - залежить від налаштування Windows) і мінус. З метою забезпечення деякої дружності програми по відношенню до користувача можна застосувати трюк: підмінити вводиться користувачем невірний роздільник вірним. Визначити, який символ-роздільник допустимо в установленою Windows, можна, звернувшись до глобальної змінної Decimaiseparator.

У лістингу 5.4 приведений текст модуля програми введення та обробки масиву дрібних чисел. Процедура обробки події OnKeyPress забезпечує введення в осередок таблиці тільки допустимих при записі дробового числа символів.

Лістинг 5.4. Введення і обробка масиву дрібних чисел

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;







Схожі статті