
18.2.4. TStringGrid - таблица строк
Компонент TStringGrid предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Он является прямым потомком TDrawGrid (см. ниже п. 18.2.5), от которого им унаследовано большинство свойств и методов.
Таблица делится на две части - фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и рядов (если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть - это остальная часть таблицы. Она может содержать произвольное количество столбцов и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое - заголовки строк и рядов.
Центральным свойством компонента является Cells - двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел - номером столбца и номером ряда, на пересечении которых она находится (нумерация начинается с нуля). Свойство cells имеет тип String, поэтому программа может легко прочитать или записать содержимое нужной ячейки. Например:
Cells [1,1] := 'Левая верхняя ячейка рабочей зоны';
Количество ячеек по каждому измерению хранит пара свойств Colcount (количество столбцов) и RowCount (количество рядов). Значения-этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойства FixedCois и FixedRows, определяющих размеры фиксированной зоны.
Содержимое ячеек можно редактировать. Для этого в таблице используется специализированный потомок редактора TMaskEdit.
Свойства компонента:
property BorderStyle: TBorderStyle; |
Определяет рамку компонента: bsNone нет рамки; bsSingle - рамка толщиной 1 пиксель |
property Cells[ACol, ARow: Integer] :String; |
Определяет содержимое ячейки с табличными координатами (ACol, ARow) |
property Col: Longint;
|
Содержит номер столбца сфокусированной ячейки |
property ColCount: Longing- |
Содержит количество столбцов таблицы |
property Cols[Index: Integer]: TStrings; |
Содержит все строки колонки с индексом Index |
property ColWidths[Index: Longint] : Integer; |
Содержит ширину столбца с индексом Index |
property DefaultColWidth: Integers; |
Содержит умалчиваемое значение ширины столбца |
property DefaultDrawing: Boolean;
|
Разрешает/запрещает автоматическую прорисовку служебных элементов таблицы - фиксированной зоны, фона и прямоугольника сфокусированной ячейки и т. п. |
property DefaultRowHeight: Integers; |
Содержит умалчиваемую высоту рядов |
property EditorMode: Boolean; |
Разрешает/запрещает редактирование ячеек. гнорируется, если свойство Options включает goAlwayseShowEditor или не включает goEditing |
property FixedColor: TColor; |
Определяет цвет фиксированной зоны |
property FixedCois: Integers; |
Определяет количество столбцов фиксированной зоны |
property FixedRows: Integers; |
Определяет количество рядов фиксированной зоны |
property GridHeight: Integers; |
Содержит высоту таблицы |
property GridLineWidth: Integers; |
Определяет толщину линий, расчерчивающих таблицу |
property GridWidth: Integers; |
Содержит ширину таблицы |
property LeftCol: Longint; |
Содержит номер самого левого столбца, видимого в зоне прокрутки |
property Objects [ACols ARow: Integer] : TObject; |
Обеспечивает доступ к объекту, связанному с ячейкой (ACol, ARow) |
property Options: TGridOptions; |
Содержит параметры таблицы (см. ниже) |
property Row: Longing; |
Содержит номер ряда сфокусированной ячейки |
property RowCount: Longint; |
Содержит количество рядов таблицы |
property RowHeights[Index: Long int] : Integer; |
Содержит высоту ряда с индексом index |
property Rows[Index: Integer]: TStrings; |
Содержит все строки ряда с индексом Index |
type TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth) ; |
Определяет полосы прокрутки: ssNone -нет полос; ssHorizontal - в таблицу вставляется горизонтальная полоса; |
property ScrollBars: TScroll Style; |
ssVertical - вставляется вертикальная полоса; ssBoth - вставляются обе полосы |
TGridRect = record case Integer of 0: (Left,Top,Right,Bottom: Long int) ; 1: (TopLeft, BottomRight: TGridCoord) ; end; |
Определяет группу выделенных ячеек в координатах левая верхняя и правая нижняя ячейки(нумерация столбцов и рядов идет от нуля, включая столбцы и ряды фиксированной зоны). После выделения сфокусированной окажется правая нижняя ячейка |
property Selection: TGridRect; property TabStops[Index: Long int] : Boolean; |
Разрешает/запрещает выбирать столбец с индексом index при обходе ячеек клавишей Tab. Игнорируется, если Options не содержит goTabs |
property TopRow: Longint; |
Содержит номер самого верхнего ряда, видимого в прокручиваемой зоне ячеек |
property VisibleColCount: Integer; |
Содержит количество столбцов, полностью видимых в зоне прокрутки |
property VisibleRowCount: Integer; |
Содержит количество рядов, полностью видимых в зоне прокрутки |
Для компонента определен тип TGridOptions:
type
TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);
TGridOptions = set of TGridOptions;