Методы компонента 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;