Методы компонента DrawGrid
ЛАБОРАТОРНАЯ РАБОТА № 7 Часть 3
Цель занятия
Познакомиться с возможностями использования компонента DrawGrid.
KлaccTDrawGrid
Компонент DrawGrid предназначен для создания таблицы, в ячейках которой расположены данные. Компонент обеспечивает двумерное представление данных, упорядоченных по строкам и столбцам.
Таблица делится на две части — фиксированную и рабочую.
Фиксированная часть служит для показа заголовков столбцов/строк и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы. Она может содержать произвольное количество столбцов и рядов, причем эти величины можно изменять как в процессе разработки, так и программно. Рабочая часть состоит из ячеек, в которых находятся данные. Если рабочая часть не помещается целиком в пределах окна компонента, то у компонента автоматически появляются полосы прокрутки. При прокрутке рабочей области фиксированная часть не исчезает, но меняется ее содержимое — заголовки строк и рядов.
Заносить данные в ячейки таблицы можно только в ходе работы программы.
Свойства компонента DrawGrid
У компонента есть множество свойств, некоторые из них доступны уже в процессе разработки программы, остальные - только в ходе ее выполнения.
Рассмотрим основные свойства, доступные во время разработки.
Вorder Style | определяет наличие или отсутствие внешней рамки таблицы; |
Col Count | устанавливает количество столбцов таблицы, включая столбцы фиксированной части; |
Defaulted Width | определяет ширину столбца по умолчанию; |
DefaultDrawing | при значении, равном True, происходит автоматическая прорисовка служебных элементов таблицы (фиксированной зоны, фона и прямоугольника сфокусированной ячейки и т. д.). Если свойство установлено в False, то прорисовки этих элементов необходимо определять в обработчике события OnDrawCell; |
DefaultRowHeight | содержит значение высоты строки по умолчанию; |
FixedColor | устанавливает цвет фиксированной зоны; |
FixedCols | определяет количество столбцов фиксированной зоны; |
FixedRows | определяет количество строк фиксированной зоны; |
RowCount | устанавливает количество строк таблицы. |
Дополнительно к перечисленным в таблице свойствам необходимо обратить особое внимание на свойство Options, определяющее некоторые особенности поведения компонента DrawGrid. Свойство Options определяется следующим образом:
Type
TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);
TGridOptions = set ofTGridOption;
property Options : TGridOptions;
Каждое значение характеризует особенности поведения таблицы в процессе работы приложения:
goAlwaysShowEditor | значение, равное True, позволяет редактировать сфокусированную (выделенную) ячейку. Редактирование возможно после выбора ячейки клавишей Tab (Tab+Shift). Подсвойство игнорируется, если goEditing установлено в False; |
goColMoving | значение, равное True, позволяет перемещать столбцы (для этого нужно нажать левую клавишу мыши на фиксированной ячейке перемещаемого столбца и, удерживая клавишу нажатой, переместить столбец на новое место); |
goColSizing | контролирует изменение ширины |
goDrawFocusSelected | включение этого свойства приводит к выделению ячейки, в которой находится фокус. Если же свойство равно False, то ячейка, имеющая фокус, не выделяется никаким цветом; |
goEditing | значение True свойства позволяет редактировать содержимое ячейки (свойство игнорируется, если значение goRowSelect равно True). Редактирование начинается после щелчка на ячейке клавишей мыши или нажатия клавиши F2 и завершается при щелчке на другой ячейке или нажатии Enter; |
goFixedHorzLine | включение свойства заставляет прорисовывать горизонтальные полосы для разделения строк в фиксированной области; |
goFixedVertLine | установление значения в True заставляет отображать вертикальные полосы для разделения столбцов в фиксированной области; |
goHorzLine | при значении False будут отсутствовать горизонтальные линии в рабочей области; |
goRangeSelect | для того чтобы пользователь мог выбирать насколько ячеек одновременно, данное свойство следует установить в True (значение свойства будет игнорироваться, если свойство goEditing равно True); |
goRowMoving | свойство аналогично goColMoving, разрешает перемещение строки; |
goRowSelect | значение True этого свойства позволяет выделять все (а не отдельные) ячейки строки, в этом случае будет игнорироваться свойство goAlways ShowEditor; |
goRowSizing | включение свойства позволяет вручную (мышью) изменять высоту строк; |
goTabs | если свойство установлено в True, то можно выбирать ячейки клавишей Tab (Shift+Tab); |
goThumbTracking | ячейки таблицы будут обновляться в процессе использования полосы прокрутки. Если значение равно False, то обновление ячеек произойдет только после окончания прокрутки; |
goVertLine | при значении свойства, равном False, в рабочей области отсутствуют вертикальные линии. |
Кроме перечисленных свойств, во время выполнения программы становятся доступными еще некоторые свойства.
Свойство Col/Row определяет номер столбца/строки сфокусированной (выделенной) ячейки. Нумерация и строк и столбцов начинается с нуля, включая строки и столбцы фиксированной зоны.
Номер самого левого столбца, видимого в прокручиваемой зоне ячеек, содержится в LeftCol, а номер самого верхнего ряда — в свойстве TopRow.
Свойство EditorModeотвечает за возможность редактирования ячеек (свойство будет игнорироваться, если goAlwaysShowEditor равно True или goEditing равно False). Когда во время работы программы пользователь нажимает клавишу F2, EditorMode устанавливается в True автоматически. После того как пользователь нажимает клавишу ввода, свойство принимает значение False.
Свойство Selection позволяет определить координаты текущего выделения.
Описывается свойство следующим образом:
Type
TGridCoord = record
X: Longint;
Y: Longint;
end;
TGridRect = record
case Integer of
0:(Left, Top, Right, Bottom: Longint);
1:(TopLeft, BottomRight: TGridCoord);
end;
property Selection: TGridRect;
Свойство Selection определяет группу выделенных ячеек в координатах левая верхняя и правая нижняя ячейки. После выделения сфокусированной окажется правая нижняя ячейка.
Методы компонента DrawGrid
Экранные координаты прямоугольника ячейки можно получить по номерам столбца ACol и ряда ARow с помощью метода CellRect:
function CellRect (ACol, ARow: Longint): TRect;
где тип TRect — это
Type
TRect = record
case Integer of
0:(Left, Top, Right, Bottom:Integer);
1:(TopLeft, BottomRight:TPoint);
end;
TPoint = record
X:Longint;
Y:Longint;
end;
Получить номер столбца ACol и номер строки ARow по экранным координатам (X,Y) точки можно с помощью метода MouseToCell:
procedure MouseToCell (X, Y: Integer; var ACol, ARow:Longint);
Например, если необходимо определить, по какой ячейке был произведен щелчок мышью, то можно воспользоваться обработчиком события OnMouseDown:
procedure TForml.DrawGridlMouseDown(Sender: TObject; Button:
TMouseButton; Shift: TShiftState;X, Y: Integer);
var ACol, Arow:Integer;
{переменные для хранения номера столбца/строки}
Begin
DrawGridl.MouseToCell(х, у, Acol, Arow);
{используя параметры события OnMouseDown,
определяем номера строки и столбца}
end;