Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №21.pdf
Скачиваний:
17
Добавлен:
16.03.2015
Размер:
1 Mб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Рисунок 5 – Вид окна программы SplitterDemo

Запустите программу, проверьте, что размеры панелей изменяются с помощью мыши.

TStringGrid

Компонент TStringGrid предназначен для создания таблиц, в ячейках которых

располагаются произвольные текстовые строки. Он является прямым потомком класса TDrawGrid, от которого им унаследовано большинство свойств и методов. Находится этот компонент на вкладке Additional палитры компонентов (рисунок 6).

Рисунок 6 – Компонент TStringGrid в палитре компонентов

Таблица делится на две части – фиксированную и рабочую.

Фиксированная часть служит для показа заголовков колонок и строк, а также для ручного управления их размерами. Обычно фиксированная часть, занимает левую колонку и верхнюю строку таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных колонок и строк (если эти свойства имеют значение 0, таблица не содержит фиксированной зоны).

Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество колонок и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое – заголовки колонок и строк (рисунок 7).

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Фиксированная часть таблицы

Рабочая часть таблицы

Рисунок 7 – Структура таблицы

Основным свойством компонента является свойство Cells – двумерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел – номером колонки и номером ряда, на пересечении которых она находится (нумерация начинается с нуля). Свойство Cells имеет тип string, поэтому программа может прочитать или записать содержимое нужной ячейки.

Количество ячеек по каждому измерению хранит пара свойств ColCount (количество колонок) и RowCount (количество строк). Значения этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойствах FixedCols и FixedRows, определяющих размеры фиксированной зоны. Содержимое ячеек можно редактировать. Для этого в таблице используется специализированный потомок поля с маской ввода TMaskEdit. Свойства компонента TStringGrid перечислены в таблице 3.

Таблица 3 – Свойства компонента TStringGrid

Свойство

Описание

 

 

property BorderStyle: TBorderStyle;

Определяет рамку компонента:

 

bsNone – нет рамки;

 

bsSingle – рамка толщиной 1 пиксел.

property Cells[ACol, ARow: Integer]:

Определяет содержимое ячейки с табличными

String;

координатами (ACol, ARow)

property Col: LongInt;

Содержит номер колонки с ячейкой, имеющей

 

фокус ввода

property ColCount: LongInt;

Содержит количество колонок таблицы

property Cols[Index: Integer]: TStrings;

Содержит все строки колонки с индексом Index

property ColWidths[Index: LongInt]:

Содержит ширину колонки с индексом Index

Integer;

 

property DefaultColWidth: Integer;

Содержит значение ширины колонки, заданное по

 

умолчанию

property DefaultDrawing:

Разрешает/запрещает автоматическую прорисовку

 

Boolean;

служебных элементов таблицы – фиксированной

 

зоны, фона и прямоугольника ячейки, имеющей

 

фокус ввода, и т. п.

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Свойство

Описание

 

 

property DefaultRowHeight:

Содержит значение высоты рядов, заданное по

Integer;

умолчанию

property EditorMode: Boolean;

Разрешает/запрещает редактирование ячеек.

 

 

Игнорируется, если свойство Options включает

 

значение goAlwayseShowEditor или не включает

property FixedColor: TColor;

значение goEditing

Определяет цвет фиксированной зоны

 

property FixedCols: Integer;

Определяет количество колонок фиксированной

 

 

зоны

property FixedRows: Integer;

Определяет количество рядов фиксированной

 

 

зоны

property GridHeight: Integer;

Содержит значение высоты таблицы

 

property GridLineWidth: Integer;

Определяет толщину линий, расчерчивающих

 

 

таблицу

property GridWidth: Integer;

Содержит значение ширины таблицы

 

property LeftCol: LongInt;

Содержит номер самого левого столбца, видимого

 

 

в зоне прокрутки

property Objects [ACol, ARow:

Обеспечивает доступ к объекту, связанному с

Integer]: TObject;

ячейкой (ACol, ARow)

 

property Options: TGridOptions;

Содержит параметры таблицы (см. далее)

 

property Row: LongInt;

Содержит номер ряда ячейки, имеющей фокус

 

 

ввода

property RowCount: LongInt;

Содержит количество строк таблицы

 

property RowHeightstIndex[Index:

Содержит значение высоты ряда с индексом

LongInt]: Integer;

Index

 

property Rows[Index: Integer]:

Содержит все текстовые строки ряда с индексом

TStrings;

Index

 

type TScrollStyle = (ssNone,

Определяет полосы прокрутки:

ssHorizontal, ssVertical, ssBoth);

ssNone – нет полос;

property ScrollBars: TScrollStyle;

ssHorizontal – в таблицу вставляется

 

горизонтальная полоса;

 

ssVertical – вставляется вертикальная полоса;

 

ssBoth – вставляются обе полосы

 

 

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Свойство

Описание

 

 

TGridRect = record

Определяет группу выделенных ячеек в

case Integer of

координатах левой верхней и правой нижней

0: (Left,fop,Right,Bottom: LongInt);

ячейки (нумерация колонок и рядов идет с нуля,

1: (TopLeft, BottoraRight: TGridCoord);

включая колонки и ряды фиксированной зоны).

end;

После выделения фокус ввода окажется в правой

property Selection: TGridRect;

нижней ячейке.

property TabStops[Index: LongInt] :

Разрешает/запрещает выбирать колонку с

Boolean;

индексом Index при обходе ячеек с помощью

 

property TopRow: LongInt;

Содержит номер самого верхнего ряда, видимого

 

property VisibleColCount: Integer;

в прокручиваемой зоне ячеек

Содержит количество колонок, полностью

 

 

видимых в зоне прокрутки

property VisibleRowCount: Integer;

Содержит количество рядов, полностью видимых

 

 

в зоне прокрутки

 

 

Для компонента определен тип TGridOptions:

type TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, gQRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);

TGridOptions = set of TGridOptions;

Назначение элементов множества TGridOptions представлено в таблице 4.

Таблица 4 – Назначение элементов множества TGridOptions.

Элемент

Описание

 

 

goFixedVertLine

Колонки фиксированной зоны разделяются вертикальными

 

линиями

goFixedHorzLine

Ряды фиксированной зоны разделяются горизонтальными

 

линиями

goVertLine

Колонки рабочей зоны разделяются вертикальными линиями

 

 

goHorzLine

Колонки рабочей зоны разделяются горизонтальными линиями

goRangeSelect

Разрешено выделение нескольких ячеек. Игнорируется, если во

 

множество включен элемент goEditing

goDrawFocusSelected

Разрешено показывать ячейку, имеющую фокус ввода, так же,

 

как выделенную ячейку

goRowSizing

Разрешено ручное (мышью) изменение высоты строк

goColSizing

Разрешено ручное изменение ширины колонок

 

 

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

Элемент

Описание

 

 

goRowMoving

Разрешено ручное перемещение строк (нажать левую кнопку

 

Мыши на фиксированной ячейке перемещаемого ряда и,

 

удерживая кнопку нажатой, перетащить ряд на новое, место)

goColMoving

Разрешено ручное перемещение колонок

goEditing

Разрешено редактирование ячейки. Игнорируется, если включен

 

элемент goRowSelect. Редактирование начинается после щелчка

 

мышью или нажатия клавиши <F2> и завершается при щелчке на

 

другой ячейке или нажатии клавиши <Enter>.

goTabs

Разрешено обходить ячейки клавишей <Tab> (<Shift> + <Tab>)

goRowSelect

Обязывает выделять сразу все ячейки ряда и запрещает

 

редактирование ячеек

goAlwaysShowEditor

Разрешено редактировать ячейку, имеющую фокус ввода:

 

редактирование возможно после выделения ячейки клавишей

 

<Tab> (<Shift>+<Tab>). Игнорируется, если не включен элемент

 

goEditing

goThumbTracking

Разрешено обновление при прокрутке. Если этот элемент

 

отсутствует, обновление ячеек произойдет только после

 

окончания прокрутки

Два метода класса могут оказаться полезными для процедуры прорисовки таблицы.

Таблица 5 – Некоторые методы компонента TStringGrid.

Метод

Описание

 

 

function CellRect(ACol, ARow:

Возвращает прямоугольник ячейки по номерам

колонки ACol и ряда ARow

LongInt): TRect;

Возвращает табличные координаты ячейки ACol и

procedure MouseToCell(x, y: Integer;

var ACol, ARow: LongInt);

ARow по экранным координатам (x,y) точки

 

Для компонента доступны следующие события, перечисленные в таблице 6.

Таблица 6 – События доступные компоненту TStringGrid

Событие

Описание

 

 

TMovedEvent = procedure (Sender:

Возникает при перемещении колонки с

TObject; FromIndex, ToIndex: LongInt) of

индексом FromIndex в положение,

object;

определяемое индексом ToIndex

property OnColumnMoved: TMovedEvent;