
- •Delphi. Визуальное программирование – 3 Классы tStringList и tIniFile Динамическое помещение компонентов на форму
- •Динамическое создание компонента типа tTabSet
- •Выбор элемента в ColorPropertyRg
- •Изменение значения в полосе прокрутки
- •Активация кнопкиУстановить(Set)
- •Сохранение текущих цветовых значений вIni-файле
- •Задания для самостоятельного выполнения
- •Класс tDrawGrid
- •Свойства компонента DrawGrid
- •Основные свойства, доступные во время разработки
- •Свойство Options
- •Свойства, доступные во время выполнения программы
- •Методы компонента DrawGrid
- •События компонента DrawGrid
- •Задание. Символы системных шрифтов
- •Класс tStringGrid
- •Новые свойства
- •Задание. Игра «Жизнь»
Свойства, доступные во время выполнения программы
Свойство 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.