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

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;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: