Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Делфи 2-3 / 3. Delphi-3.doc
Скачиваний:
55
Добавлен:
30.03.2015
Размер:
416.26 Кб
Скачать

Свойства, доступные во время выполнения программы

Свойство 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: TPoirtt) ;

end;

TPoint = record X: Longint; Y: Longint; end;

Получить номер столбца ACol и номер строки ARow по экранным координатам (X,Y) точки можно с помощью метода MouseToCell:

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

Например, если необходимо определить, по какой ячейке был произведен щелчок мышью, то можно воспользоваться обработчиком события OnMouseDown:

procedure TForral.DrawGridlMouseDown{Sender: TObject; Button:

TMouseButton; Shift: TShiftState; X, Y: Integer);

var ACol, Arow: Integer; {переменные для хранения номера столбца/строки}

begin

DrawGridl.MouseToCell (х, у, Acol, Arow);

{используя параметры события OnMouseDown, определяем номера строки и столбца} end;

События компонента DrawGrid

Событие OnColumnMoved возникает при перемещении столбца. Оно происходит только тогда, когда подсвойство goColMoving равно True. Заголовок обработчика этого события имеет вид:

procedure TForml.DrawGridlColumnMoved(Sender: TObject; FromIndex, ToIndex: Integer);

Параметр FromIndex содержит «старый» индекс столбца, а ToIndex — «новый» индекс перемещаемого столбца.

Событие OnRowMoved возникает при перемещении строки. Оно происходит только тогда, когда goRowMoving включено в свойство Options. Заголовок обработчика этого события имеет вид:

procedure TForml.StringGridlRowMoved(Sender: TObject; Fromlndex, Tolndex: Integer);

Событие OnTopLeftChanged происходит при изменении значения TopRow или LeftCol в результате прокрутки рабочей зоны:

procedure TForml.DrawGridlTopLeftChanged(Sender: TObject);

Событие OnSelectCell возникает при попытке выделить ячейку с табличными координатами (ACol, ARow). В параметре CanSelect обработчик сообщает о возможности выделения ячейки. Установите его значение равным False, чтобы пользователь не мог выделять ячейку. Событие описывается следующим образом:

procedure TForml.DrawGridlSelectCell (Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);

Событие OnSetEditText возникает по завершении редактирования ячейки с координатами (ACol, ARow). В параметре Value обработчик получает результат ввода или редактирования текста. Событие произойдет только в том случае, когда свойство Options содержит значение goEditing. Описывается событие так:

procedure TForml.DrawGridlSetEditText (Sender: TObject; ACol, ARow: Integer; const Value: String);

События OnGetMaskEdit и OnGetEditText возникают при редактировании текста в ячейке с табличными координатами (ACol, ARow). В параметре Value первого события обработчик должен вернуть шаблон для редактора TEditMask. Параметр Value для события OnGetEditText должен содержать текстовую информацию для редактора TEditMask. Описание событий выглядит следующим образом:

procedure TForml.DrawGridlGetEditMask(Sender: TObject; ACol, ARow: Integer; var Value: String);

procedure TForml.DrawGridlGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String);

Событие OnDrawCell происходит всякий раз, когда необходимо прорисовать ячейку таблицы. Обработчик данного события полностью берет на себя ответственность за размещение в каждой ячейке нужных данных. Описывается следующим образом:

procedure TForml.DrawGridlDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

Событие происходит в случае необходимости перерисовки ячейки с номером столбца ACol и номером строки ARow. Параметр Rect определяет прямоугольник прорисовки, a State — состояние ячейки (gdSelected — ячейка выделена, gdFocused — ячейка сфо­кусирована, gdFixed — ячейка принадлежит фиксированной зоне таблицы). Для прорисовки используется свойство Canvas.