Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 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; |
|
|
|