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

Об’єтно-орієнтоване програмування

Лабораторна робота №6

ТЕМА: Розробка інтерфейсу користувача програми та кодування. Обробка інформації табличного характеру. Компонент StringGrid.

МЕТА: Навчитись використовувати стандартний компонент StringGrid – сітка рядків, знати його основні властивості, методи, створювати інтерфейс програми з викорстанням цього компоненту, вміти писати обробники подій (надання функціональності).

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

TStringGrid - слугує для представлення текстовых данних у вигляді таблиці. Доступ до кажного елемента таблиці відбувається через властивість Cell – клітинка. StringGrid є одним з універсальних компонентів Delphi. Це практично повноцінна електронна таблиця.

Кожна клінинка містить текстову інформацію, тобто має тип String. Розмір сітки визначають властивості: ColCount – кількість стовпців та RowCount – кількість рядків типу Longint.

Наприклад, додамо ще один стовпчик до сітки:

StringGrid1.ColCount := StringGrid1.ColCount + 1;

Розмір клітинок в пікселах визначають властивості DefaultColWidth та DefaultRowHeight типу Integer.

Властивості ColWidths [Index: Longint] та RowHeights [Index: Longint] типу Integer дозволяють відповідно задавати в пікселах ширину стовпця та висоту рядка з номером Index.

Властивість, що визначає наявність смуг прокрутки – ScrollBars.

Крайні ліві стовпці та верхні рядки можна фіксувати. Зазвичай в таких клітинках містяться заголовки (Січень, Лютий, ..., USD, DEM,…)

Кількість фіксованих стовпців та рядків сітки визначають властивості FixedCols та FixedRows. За замовчуванням властивості мають значення 1.

Для доступу до окремої клітинки сітки слугує властивість Cells [ACol, ARow: Integer] типу String. Індекс Acol визначає стовпець, а індекс Arow – рядок в сітці.

! Увага: першим індексом вказується номер стовпця, другим – номер рядка клітинки.

Нумерація починається з нуля. Тобто для сітки у якої RowCount дорівнює 5 рядки мають індекси : 0, 1, 2, 3, 4 (RowCount - 1).

Властивість Cells доступна тільки під час виконання програми.

Приклад: “Таблиця множення”.

Ось так виглядає обробник натискання кнопки “Заповнення”

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i, j: integer;

begin

// фіксовані 0-стовпчик та 0-рядок

for i:= 1 to StringGrid1.RowCount - 1 do

begin

StringGrid1.Cells[i, 0] := IntToStr(i);

StringGrid1.Cells[0, i] := StringGrid1.Cells[i, 0];

end;

with StringGrid1 do

for j := 1 to ColCount - 1 do

for i := 1 to RowCount - 1 do

Cells[j, i] := IntToStr(j*i);

end;

Властивості Color та FixedColor типу TColor задають колір сітки та її фіксованих елементів, відповідно. За замовчуванням властивість Color має значення clWindow (колір фону Windows), а властивість FixedColor – значення clBtnFace (колір кнопки).

Окремі клітинки сітки можна розділяти лініями. Товщину ліній сітки в пікселах задає властивість GridLineWidth типу Integer. За замовчуванням дорівнює 1.

Для доступу до бдь-якого стовпця або рядка використовуйте властивості Cols[Index], Rows[Index].

Наприклад:

// нульовий стовпець отримує значень із списка об’єкта

// ListBox1

StringGrid1.Rows[0] := ListBox1.Items;

Optionsвластивість – множина значень, які регулюють зовнішній вид сітки, можливість редагування, можливість змінювати ширину стовпців, висоту рядків, наявність горизонтальних та вертикальних ліній і таке інше.

Методи:

CellRect – повертає екранні координати клітинки типу TRect

CellRect(ACol, ARow: Longint): TRect;

MouseToCell – повертає номер стовпця та номер рядка клітинки позиція якої задана екранними координатами (X,Y):

MouseToCell(X, Y: Integer; var ACol, ARow: Longint);

Подіїї:

OnSelectCell – вибрано клітинку сітки. Обробник події може мати такий вигляд.

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);

begin

Label1.Caption := ('Вибрано клітинку'+ '[' + IntToStr(ACol) + ',' + IntToStr(ARow) + ']');

end;

Зверніть увагу на параметри, що передаються:

ACol, Arow – номери стовпця, рядка вибраної клітинки;

CanSelect – можливість вибору (регулюється значеннями True, False)

OnSetEditText, OnGetEditText – коли користувач редагує значення клітинки.

OnColumnMoved, OnRowMoved – коли переміщено стовпець (рядок).

З усіх подій найцікавішою є OnDrawCell.

Ця подія виникає під час перемальовки будь-якої клітинки сітки. Таким чином програмно можна керувати не тільки вмістом клітинки – текстом, але й її графічним вмістом. Обробник події OnDrawCell отримує такі параметри:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

ACol, ARow визначають відповідно стовпець та рядок, де знаходиться клітинка, що перемальовується. Параметр Rect містить координати прямокутника, що обмежує клітинку. Параметр State визначає стан клітинки і може отримувати комбінації наступних значень:

  • gdSelected – клітинка вибрана

  • gdFocused – клітинка має фокус вводу

  • gdFixed – клітинка знаходиться в фіксованому діапазоні