Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по информатике. Часть 2.doc
Скачиваний:
53
Добавлен:
27.03.2016
Размер:
10.52 Mб
Скачать

Изучение управляющего элемента StringGrid

Компонент StringGridпредставляет собой таблицу, содержащую строки. Данные таблицы могут быть только для чтения или редактируемыми. Таблица может иметь полосы прокрутки, причем заданное число первых строк и столбцов может быть фиксированным и не прокручиваться. Таким образом, можно задать заголовки столбцов и строк, постоянно присутствующие в окне компонента. Каждой ячейке таблицы может быть поставлен в соответствие некоторый объект.

Компонент StringGrid находится на вкладкеAdditionalпанели компонентов.

Таблица StringGridсостоит из выделенных серымFixedColsиFixedRows - зафиксированных ячеек-заголовков, и обычных, белых ячеек. СодержимоеFixed ячеек недоступно для редактирования, и меняется только программно. Для установки количества фиксированных ячеек можно изменить значение свойствFixedCols и FixedRowsв окне свойствObject Inspector. Или поменять количество фиксированных строк и столбцов программно, написав в коде программы следующие команды:

StringGrid1-> FixedCols=1; // устанавливает 1 фиксированный столбец

StringGrid1-> FixedRows=1; // устанавливает 1 фиксированную строку

Общее количество строк и столбцов в таблице можно установить вручную в окне Object Inspector, отредактировав свойстваRowCountиColCount, а можно изменить программно в ходе выполнения программного кода, написав следующие команды:

StringGrid1->RowCount=5 //устанавливаем общее кол-во строк равное 5

StringGrid1->ColCount=7 //устанавливаем общее кол-во столбцов равное 7

Эти свойства доступны как для записи (при установке количества строк и столбцов), так и для чтения (при проверке размер таблицы).

За многие свойства компонента StringGridотвечает свойствоOptions. В Инспекторе ОбъектовOptions– это раскрывающийся список, представляющий собой элементы данного множества. Если значение элемента равноTrue, то он присутствует в множестве, еслиFalse– то нет (рис. 5).

Рисунок 5 – Панель Object Inspector

Таблица 1. Свойства компонента StringGrid

Свойство

Назначение

goFixedVertLine

Наличие вертикальных разделительных линий между "фиксированными" ячейками

goFixedHorzLine

Наличие горизонтальных разделительных линий между "фиксированными" ячейками

goVertLine

Наличие вертикальных разделительных линий между "обычными" ячейками

goHorzLine

Наличие горизонтальных разделительных линий между "обычными" ячейками

goRangeSelect

Возможность выделить диапазон ячеек

goDrawFocusSelected 

Закрашивание ячейки с фокусом ввода

goRowSizing

Возможность менять высоту строк мышкой

goColSizing

Возможность менять ширину столбцов мышкой

goRowMoving

Возможность менять номер строки, то есть перемещать её, мышкой

goColMoving

Возможность менять номер столбца, то есть перемещать его, мышкой

goEditing

Возможность редактировать содержимое ячейки с клавиатуры

goTabs

При значении True фокус смещается на следующую ячейку в таблице,False- на следующий компонент

goRowSelect

Выделяется вся строка с "фокусированной" ячейкой

goAlwaysShowEditor

При значении Trueсодержимое ячейки при получении фокуса сразу доступно редактированию,False- сначала необходимо щёлкнуть по ней мышкой (прим.: не действует приgoRowSelect=True)

goThumbTracking

При значении True перемещение "бегунка" прокрутки мышкой вызывает немедленное перемещение ячеек,False- ячейки перемещаются только при отпускании "бегунка"

Как следует из таблицы, за возможность редактирования содержимого ячеек с клавиатуры отвечает элемент goEditingсвойства-множестваOptions. В Инспекторе Объектов установите его значение вTrue. Чтобы управлять этой возможностью программно, нужно включить или исключить из множества данный элемент:

StringGrid1->Options<<goEditing; /*Включаем редактирование, другие

элементы не трогаем*/

StringGrid1->Options>>goEditing; /*Выключаем редактирование, другие

элементы не трогаем*/

Компонент StringGrid имеет возможность адресации каждой отдельной ячейки по номеру столбца и строки (рис. 6).

Рисунок 6 – Компонент StringGrid

Содержимое ячейки (i, j), где гдеi- номер столбца,j- номер строки, имеет вид:StringGrid1->Cells[i][j] и доступно как для чтения, так и для записи.

Например:

StringGrid1->Cells[i][j]=”Hello”;- записывает слово в ячейку с координатамиiиj.

a=StringGrid1->Cells[i][j];- считывает содержимое ячейки с координатамиiиjв переменнуюa.

Номера столбцов (i) и строк (j) отсчитываются от нуля.

Выделенная ячейка таблицы имеет:

номер столбца: StringGrid1->Col

номер строки: StringGrid1->Row,

поэтому содержимое выделенной ячейки будет адресоваться так:

S=StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row];

У таблицы StringGridтакже есть свойство и для управления размером ячеек. Для всех ячеек:

DefaultRowHeight- высота строк по умолчанию

DefaultColWidth- ширина столбцов по умолчанию

Эти значения ширины и высоты принимают все новые ячейки. При необходимости индивидуально установить ширину и высоту столбцов и строк соответственно, пользуемся свойствами:

RowHeights[i] - массив, содержащий высоты строк с номеромi;

ColWidths[i] - массив, содержащий ширины столбцов с номеромi.

Ширину, а также надписи заголовков, располагающиеся в строках и столбцах "фиксированной" зоны таблицы можно настроить в обработчике события OnCreateформы или в функции:

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

В результате таблица появляется уже в "настроенном" виде.

Задание 2.

Написать программу перемножения двух матриц размерностью 4х4. Защитить программу.