StringGrid (TStringGrid) – компонент текстовой таблицы Delphi

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

Таблица состоит из двух частей – фиксированной и рабочей. В фиксированной части располагается заголовок колонок и рядов.

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

или полностью убрать эти  фиксированные части присвоив обоим этим свойствам значение 0.

Рабочая часть – это вся остальная часть таблицы. Именно в рабочей части вы будете располагать и работать с основными данными вашей программы. При прокрутке фиксированная часть не исчезает.

Главным свойство компонента StringGrid является свойство Cells – двухмерный массив ячеек в которых содержится произвольный текст. Координаты ячейки определяются всего парой чисел – номером колонки и номера ряда (нумерация начинается с 0). Пример кода:

StringGrid1.Cells[1,1]:=’Hello, Word!’;

Количество колонок таблице хранит свойство ColCount (количество колонок) и RowCount (количество рядов). При этом их значение должно быть на 1 больше чем значение FixedCols и FixedRows.

Как записать вычисленное число в ячейку StringGrid !?

Для целых чисел:  StringGrid1.Cells[1,1]:=inttostr(1);

Для дробных чисел:  StringGrid1.Cells[1,2]:=floattostr(1.22);

Как изменить цвет определенной ячейки StringGrid !?

Ответ на этот вопрос кроется в событии OnDrawCell.

Код:

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
i: Integer;
begin
if (ACol>0) and (ARow>0) then StringGrid1.Canvas.Brush.Color:=clRed;
StringGrid1.Canvas.FillRect(Rect);

for I := 1 to StringGrid1.ColCount do begin
if (ACol=i) and (ARow=i) then StringGrid1.Canvas.Brush.Color:=clBlue;
StringGrid1.Canvas.FillRect(Rect);
end;

for i:=StringGrid1.ColCount downto 1 do begin
if (ACol=i) and (ARow=StringGrid1.ColCount-i) then StringGrid1.Canvas.Brush.Color:=clGreen;
StringGrid1.Canvas.FillRect(Rect);
end;

end;

Если есть вопросы, спрашивайте в комментариях, вам всегда помогут!

Свойства StringGrid

Свойства

Описание

property BorderStyle: TBorderStyle;

Определяет рамку таблицы: bsNone - без рамки; bsSingle - рамка толщинной в один пиксель.

property Cells [ACol, ARow: Integer]: String;


Определяет содержимое ячейки таблицы с  координатами (ACol, ARow).

property Col: LongInt;

Номер колонки с ячейкой, имеющей фокус ввода.

property ColCount: LongInt;

Количество колонок таблицы

property Cols [Index: Integer]: TStrings;

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

property ColWidths [Index: LongInt]: Integer;

Ширина колонки с индексом Index.

property DefaultColWidth: Integer;

Значение ширины колонки, заданное по умолчанию.

property DefaultDrawing: Boolean;

Разрешает или запрещает автоматическую прорисовку служебных элементов таблицы.

property DefaultRowHeight: Integer;

Значение высоты рядов, заданное по умолчанию.

property EditorMode: Boolean;

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

property FixedColor: TColor;

Цвет фиксированной зоны.

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 Row: LongInt;

номер ряда ячейки, на которой находиться фокус.

property RowCount: LongInt;

Количество рядов таблицы.

property RowHeights [Index: LongInt]: Integer;

Значение высоты ряда с индексом Index.

property Rows [Index: Integer]: TStrings;

Все текстовые строки ряда с индексом Index.

type TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth);

property ScrollBars: TScrollStyle;

Полосы прокрутки: ssNone - нет полос; ssHorizontal - горизонтальная полоса; ssVertical - вставляется вертикальная полоса; ssBoth - вставляются обе полосы. 

TGridRect = record case Integer of 0: (Left, Top, Right, Bottom: longInt); 1 : (TopLeft, BottomRight: TGridCoord); end;

property Selection: TGridRect;

определяет группу выделенных ячеек в координатах левой верхней и правой нижней ячейки. 

property TabStops [Index: longInt]: Boolean;

Разрешаем или запрещает выбирать колонку с индексом Index при обходе ячеек с помощью клавиши Tab. Игнорируется, если свойство Options не содержит значения goTabs.

property TopRow: LongInt;

Номер самого верхнего ряда, видимого в прокручиваемой зоне.

property VisibleColCount: Integer;

Количество колонок, полностью видимых в зоне прокрутки.

property VisibleRowCount: Integer;

Количество рядов, полностью видимых в зоне прокрутки.

property Options: TGridOptions;

Параметры таблицы.

Свойства Options компонента StringGrid

Элемент

Описание

goFixedVertLine

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

goFixedHorzLine

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

goVertLine

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

goHorzLine

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

goRangeSelect

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

goDrawFocusSelected

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

goRowSizing

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

goColSizing

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

goRowMoving

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

goColMoving

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

goEditing

Разрешает ручное редактирование ячейки.

goTabs

Разрешает обходить ячейкт клавижей Tab.

goRowSelect

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

goAlwaysShowEditor

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

goThumbTracking

Разрешает обновление ячеек при прокрутке.

Пара методов StringGrid которые могут пригодиться:

Метод

Описание

function CellRect (ACol, ARow: LongInt): TRect;

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

procedure MouseToCell (X,Y: Integer; var ACol,ARow: LongInt);

Возвращает табличные координаты ячейки ACol и ARow по координантам точки (X, Y) на экране.

События StringGrid

Событие

Описание

TMovedEvent = procedure (Sender: TObject; FromIndex: ToIndex: LongInt) of object;

property OnColumnMoved: TMovedEvent;

Возникает при перемещении колонки с индексом FromIndex В положение, определяемое ToIndex. 

TGridDrawState = set of (gdSelected, gdFocused, gdFixed);

TGridCellEvent =procedure (Sender: TObject; Col, Row: LongInt; Rect: TRect; State: TFridDrawState) of object;

property OnDrawCell: TDrawCellEvect;

Возникает при необходимости перересовки ячейки с координатами (Col, Row): Rect - прямоугольник прорисовки; State - состояние ячейки (gdSelected - ячейка выделена; gdFocused - ячейка имеет фокус ввода; gdFixed - ячейка принадлежит фиксированной зоне таблицы). Для прорисовки используется свойство Canvas.

TGetEditEvent = procedure (Sender: TObject; ACol, ARow: LongInt; var Value: String) of object;

property OnGetEditText: TGetEditEvent;

Возникает при редактировании текста в ячейки с координатами (ACol, ARow). А в параметре Value обработчик должен вернуть шаблон для компонента TEditMask. 

property OnGetEditText: TGetEditEvent;

Возникает при редактировании текста в ячейки с координатами (ACol, ARow). А в параметре Value обработчик должен вернуть текст для компонента TEditMask. 

property OnRowMoved: TMovedEvent;

Возникает при перемещении ряда с индексом FromIndex В положение, определяемое ToIndex. 

SelectCellEvent = procedure (Sender: TObject; ACol, ARow: LongInt; var CanSelect: Boolean) of object;

property OnSelectCell: TSelectCellEvent; 

Возникает при попытки выделить ячейку с координатами (Col, Row). А параметр CAnSelect сообщает о возможности выделения ячейки. 

TSetEditEvent = procedure (Sender: TObject; ACol, ARow: LongInt; const Value: String) of object;

property OnSetEditText: TSetEditEvent;

Возникает при завершении редактирования ячейки с координатами (ACol, ARow). А параметр Value хранит результат ввода или редактирования текста. 

property OnTopLeftChanged: TNotifyEvent;

Возникает в результате измечений значений TopRow или LeftCol, после прокрутки рабочей зоны. 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии