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

Як приклад використання компонента 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;

НОВИНИ ФОРУМУ
Лицарі теорії ефіру

Про це Корнілов написав на своїй сторінці в соцмережі.

За словами Корнілова, тоді його повідомлення було сприйнято з недовірою.

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

Серед безлічі питань, на які Корнілов, за його словами, хотів би отримати відповідь, наприклад, такі:

«Чому вони випадково розгулювали по Одесі з медичним спорядженням, в гумових рукавичках, звідки вони знали заздалегідь про те, що будуть поранені й убиті? Або чому цей боєць раптом різко забув англійську, коли зрозумів, що його записують? ».

Води озер, морів і океанів північного по --------- Лушар обертаються проти годинникової -з-т - р-е-л-к-і, а води південного полушарія- в-ра - ща-ють -ся- по- ч-асів стрілкою, - обра-зуя- -гіг-ант-скі-е вод-ово-роти.

Основною причиною обертання вирів є місцеві вітру.
І чим вище швидкість вітрів тим вище швидкість обертання вирів і як наслідок, вище відцентрова сила вирів, завдяки чому підвищується рівень вод морів і океанів.
А чим нижче відцентрова сила вирів, тим нижче рівень вод морів і океанів.

Швидкість течій, по периметру морів і океанів не скрізь однакова і залежить від глибини узбережжя. У мілководній частині моря швидкість течій збільшується, а в глибоководній частині моря зменшується.
Сезонні коливання рівня вод спостерігаю-ться не по всьому узбережжю морів і океан-ів, а тільки в тих узбережжях де висока кутова швидкість течій і як наслідок, висока відцентрова сила води. (Відцентрова сила F = v / r).
На прямолінійних узбережжях, де течії не мають кутовий швидкістю, рівень вод не підвищується.

Схожі статті