
Лабораторная работа №1 Вычисление значений функции на отрезке. Построение графика функции
Задание: Построить график функции y=sinx на отрезке [0;3π] с шагом 0,5. Значения функции поместить в таблицу.
Таблица StringGrid
Основные характеристики таблицы StringGrid
Страница палитры компонентов: Additional.
Таблица StringGrid является экземпляром класса TStringGrid и предназначена для отображения двумерной информации (например элементов матрицы). В таблице может находиться произвольное количество строк и столбцов.На пересечении строк и столбцов находятся ячейки. Каждая ячейка может содержать символьную строку и произвольный объект, ассоциированный с ячейкой (например, рисунок). Если для ячеек задан режим редактирования, то на этапе выполнения программы разрешается вводить и редактировать данные, находящиеся в ячейке. Нумерация строк и столбцов таблицы начинается с нуля. Координаты каждой ячейки таблицы задаются парой чисел, первое из которых является номером столбца, а второе - номером строки. Например, ячейка с координатами (3,5) расположена в четвертом столбце и шестой строке.
Основные свойства класса tStringGrid.
property Col: Longint;
Задает столбец, в котором находится активная ячейка. Свойство доступно только на этапе выполнения программы.
property CoICount: Longint;
Задает число столбцов в таблице.
property ColWidths [Index: Longint]: Integer;
Задает ширину каждого столбца в таблице. Доступно только на этапе выполнения программы.
property DefaultColWidth: Integer;
Задает исходную ширину всех столбцов. Для задания ширины отдельного столбца следует использовать свойство ColWidths.
property DefaultDrawing: Boolean;
Если свойство имеет значение True, то прорисовка ячеек при рисовании таблицы будет происходить автоматически, в противном случае необходимо создать свои средства отображения.
property DefaultRowHeight: Integer;
Задает исходную высоту всех строк. Для задания высоты отдельной строки следует использовать свойство RowHeights.
property FixedColor: TColor;
Задает цвет фиксированных ячеек.
property FixedCoIs: Integer;
Задает число фиксированных столбцов. По умолчанию задается один фиксированный столбец.
property FixedRows: Integer;
Задает число фиксированных строк. По умолчанию задается одна фиксированная строка.
property GridLineWidth: Integer;
Задает толщину линий между ячейками в пикселях.
property Row: Longint;
Задает строку, в которой находится активная ячейка. Доступно только на этапе выполнения программы.
property RowCount: Longint;
Задает число строк таблицы.
property RowHeights[Index: Longint]: Integer;
Задает высоту каждой строки таблицы. Доступно только на этапе выполнения программы.
type TGridCoord = record
X: Longint;
Y: Longint;
end;
type TGridRect = record
case Integer of
0: (Left, Top, Right, Bottom: Longint);
1: (TopLeft, BottomRight: TGridCoord);
end;
property Selection: TGridRect;
Указывает область текущего выделения. При выделении указываются номера строк и столбцов. Доступно только на этапе выполнения программы.
Для определения поведения таблицы используется свойство Options. Каждая ячейка таблицы может находится в одном из пяти состояний: пассивном, выделенном (выделена особым цветом), активном (выделена рамкой из точек), фиксированном (выделена особым цветом) и в состоянии редактирования (значение флага goEditing свойства Options равно True).
typeTGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSeiect, goAlwaysShowEditor, goThumbTracking);
TGridOptions = set of TGridOption;
property Options: TGridOptions;
Задает флаги, определяющие поведение таблицы.
goFixedVertLine - фиксированные ячейки разделяются вертикальными линиями;
goFixedHorzLine - фиксированные ячейки разделяются горизонтальными линиями;
goVertLine - остальные ячейки разделяются вертикальными линиями;
goHorzLine - остальные ячейки разделяются горизонтальными линиями;
goRangeSelect - допустимо выделение нескольких ячеек;
goDrawFocusSelected - активная ячейка закрашивается тем же цветом, которым закрашивается и выделенная, в противном случае закрашивается цветом нейтральных ячеек;
goRowSizing - высота строк таблицы может изменяться;
goColSizing - ширина столбцов таблицы может изменяться;
goRowMoving - строки таблицы могут перемещаться;
goColMoving - столбцы таблицы могут перемещаться;
goEditing - ячейки могут редактироваться;
goTabs - переход от ячейки к ячейке возможен с помощью клавиши Tab (клавиш Shift+Tab);
goRowSelect - выделение только целых строк таблицы;
goAIwaysShowEditor - при выделении ячейки она сразу же становится и активной (в противном случае активизируется либо клавишей F2, либо двойным нажатием клавиши мыши, либо нажатием какой-либо символьной клавиши);
goThumbTracking - перемещение подвижной части таблицы синхронно с перемещением ползунка линейки скролинга (в противном случае перемещение осуществляется только после того, как ползунок будет отпущен).
Свойства класса TStringGrid, позволяющие осуществлять доступ к данным, находящимся в ячейках таблицы. Все свойства доступны только на этапе выполнения программы.
property CelIs [ACol, ARow: Integer]: string;
Содержит двумерный массив символьных строк, каждая из которых принадлежит ячейке, находящейся в столбце ACol, и строке ARow.
property Cols[Index: Integer]: TStrings;
Содержит список строк, принадлежащих ячейкам столбца с индексом Index.
property Objects|ACol, ARow: Integer]: TObject;
Содержит двумерный массив, элементами которого являются указатели на объекты, каждый из которых ассоциирован с соответствующей ему ячейкой, находящейся в столбце ACol и строке ARow.
property Rows [Index: Integer]: TStrings;
Содержит список строк, принадлежащих ячейкам строки с индексом Index.
Событием по умолчанию для таблицы StringGrid является событие OnClick.
Пример
В целочисленной матрице А(4,4) поменять местами первую и последнюю строки.
1. Создадим новый проект.
2. Из страниц Standard и Additional на Form1 поместим два компонента TStringGrid и три компонента TButton.
3. С помощью инспектора объектов свойствам компонентов StringGrid1 и StringGrid2 зададим следующие значения:
FixedCols - 0,
FixedRows - 0,
ColCount - 4,
RowCount - 4.
4. Изменим размеры компонентов StringGrid1 и StringGrid2 таким образом, чтобы в них умещалось 4 строки и 4 столбца.
5. Изменим свойство Options, значение флага goEditing сделаем равным True.
6. Для компонентов Button1, Button2 и Button3 зададим значение свойства Caption равным: «Решение 1», «Решение 2» и «Очистить» соответственно.
7. Для кнопки «Решение 1» и создадим следующий обработчик события OnClick:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:= 0 to 3 do
begin
StringGrid2.Cells[i,0]:=StringGrid1.Cells[i,3];
StringGrid2.Cells[i,3]:=StringGrid1.Cells[i,0];
StringGrid2.Cells[i,1]:=StringGrid1.Cells[i,1];
StringGrid2.Cells[i,2]:=StringGrid1.Cells[i,2];
end
end;
8. Исходная задача может быть решена при помощи свойства Rows. Создадим обработчик события OnClick кнопки «Решение 2»:
procedure TForm1.Button2Click(Sender: TObject);
begin
StringGrid2.Rows[0]:=StringGrid1.Rows[3];
StringGrid2.Rows[1]:=StringGrid1.Rows[1];
StringGrid2.Rows[2]:=StringGrid1.Rows[2];
StringGrid2.Rows[3]:=StringGrid1.Rows[0];
end;
9. Для очистки второй таблицы создадим обработчик события OnClick для кнопки «Очистить»:
procedure TForm1.Button3Click(Sender: TObject);
var i, j : Integer;
begin
for i:= 0 to 3 do
for j:= 0 to 3 do
StringGrid2.
Cells[ j, I ]:=’’;
end;
Рис.1 Пример выполнения программы.