
- •Лекція №5
- •1. Перелік компонентів введення і відображення текстової інформації
- •2. Відображення тексту із використанням компонентів Label, StaticText, Panel
- •3. Поля (вікна) редагування Edit, LabeledEdit і MaskEdit
- •4. Багаторядкові вікна редагування Memo і RichEdit
- •5. Компоненти вибору із списків — ListBox, CheckListBox, ValueListEditor, ComboBox, ComboBoxEx
- •6. Таблиця рядків — компонент StringGrid
6. Таблиця рядків — компонент StringGrid
Компонент StringGrid є таблицею, що містить рядки. Дані таблиці можуть бути тільки для читання або редагованими. Таблиця може мати смуги прокрутки, причому задане число перших рядків і стовпців може бути фіксованим і не прокручуватися. Таким чином, можна задати заголовки стовпців і рядків, які постійно присутні у вікні компоненту. Кожному елементу таблиці може бути поставлений у відповідність деякий об'єкт.
Основні властивості компоненту, які визначають текст, що відображається:
System:: AnsiString Cells[int ACol][int ARow] - рядок, що міститься в комірці з індексами стовпця і рядка ACol і ARow.
Classes::TStrings* Cols[int Index] - список рядків і пов'язаних з ними об'єктів, що містяться в стовпці з індексом Index.
Classes::TStrings* Rows [int Index] - список рядків і пов'язаних з ними об'єктів, що містяться в рядку з індексом Index.
System::TObject* Objects [int ACol][int ARow] - Об'єкт, пов'язаний з рядком, що міститься в комірці з індексами стовпця і рядка ACol і ARow.
Всі ці властивості доступні під час виконання програми. Задавати тексти можна програмно або по окремих коміркам, або відразу по стовпцях і рядках за допомогою методів класу TStrings. Наприклад, код:
Int i, j;
for (i=1; i < StringGrid1->ColCount; i++)
SrringGrid1->Cells[i] [0] = "стовпець " + IntToStr(i);
for (i=1; i < StringGrid1->RowCount; i++)
{
StringGrid1->Cells[0][i] - "рядок " + IntToStr(i);
for (j = 1; j < StringGridl->RowCount; j++)
StringGrid1->Cells[j][i] = IntToStr (i) + ':' + IntToStr(j);
}
Властивості ColCount і RowCount визначають відповідно число стовпців і рядків, властивості FixedCols і FixedRows — число фіксованих, не прокручуваних стовпців і рядків. Колір фону фіксованих комырок визначається властивістю FixedColor. Властивості LeftCol і TopRow визначають відповідно індекси першого видимого на екрані в даний момент прокручуваного стовпця і першого видимого прокручуваного рядка.
Властивість ScrolLBars визначає наявність в таблиці смуг прокрутки. Причому смуги прокрутки з'являються і зникають автоматично залежно від того, поміщається таблиця у відповідний розмір, чи ні.
Властивість Options є множинною, що визначає багато властивостей таблиці: наявність розділових вертикальних і горизонтальних ліній у фіксованих (goFixedVertLine і goFixedHorzLine) і не фіксованих (goVertLine і goHorzLine) комірок, можливість для користувача змінювати за допомогою миші розміри стовпців і рядків (goColSizing і goRowSizing), переміщати стовпці і рядки (goColMoving і goRowMoving) і багато що інше. Важливим елементом у властивості Options є goEditing —можливість редагувати вміст таблиці.
В основному компонент StringGrid використовується для вибору користувачем якихось значень, відображених в комірках.
Властивості Col і Row показують індекси стовпця і рядка виділеної комірки. Можливо також виділення користувачем декількох комірок, рядків і стовпців.
Серед подій компоненту StringGrid слід зазначити подія OnSelectCell, що виникає у момент вибору користувачем комірки. У обробник цієї події передаються цілі параметри ACol і ARow — стовпець і рядок виділеної комірки, і булевий параметр CanSelect — допустимість вибору. Параметр CanSelect можна використовувати для заборони виділення комірки, задавши його значення false. А параметри ACol і ARow можуть використовуватися для якоїсь реакції програми на дії користувача. Наприклад, оператор:
Label1->Caption = "Вибрана комірка "+intToStr(ARow) +
';' + IntToStr(ACol) + ". Текст: " +
StringGrid1->Cells[ACol][ARow];
виведе в мітку Label1 повідомлення про рядок, стовпець і текст вибраної комірки.
Контрольні питання:
-
Які властивості стандартних компонентів визначають текст, що відображується у них?
-
Яким чином можна відобразити текст надпису у декількох рядках?
-
Які властивості визначають місце розташування компонентів на формі?
-
Які властивості визначають тип вирівнювання тексту у компоненті?
-
Яким чином задається маска введення для компонента MaskEdit?
-
У чому полягає відмінність компонентів Memo та RichEdit?
-
Яка властивість визначає рядки списку для списочних компонентів?
-
Як зв’язати елементи списку ComboBoxEx із зображеннями?
-
Якими властивостями визначається кількість стовпчиків і рядків для компонента StringGrid?
-
Яка властивість містить текстову інформацію, яка розташована у комірці таблиці?