Сетка для рисования – компонент TDrawGrid
Общее количество столбцов и строк задается в свойствах:
propertyColCount: Longint; //число столбцов
propertyRowCount: Longint; //число строк
Часть столбцов и строк сетки можно сделать фиксированными. Фиксированный ряд (колонка) на экране компьютера отображается другим цветом. Ячейки такого рода недоступны для редактирования пользователем, не перемещаются с помощью полос прокрутки и обычно используются для размещения заголовков и комментариев.
propertyFixedCols: Integer; //число фиксированных колонок
propertyFixedRows: Integer; //число фиксированных строк
Для того чтобы отказаться от фиксированных колонок или строк присвойте
соответствующему свойству значение 0. Еще одной особенностью фиксированного ряда (колонки) является то, что он может располагаться только на первых позициях сетки. Другими словами, если в сетке объявлен один фиксированный ряд, то его индекс aRow всегда равен 0. Для выделения фиксированных ячеек цветом используется свойство:
propertyFixedColor: TColor;
Ширина столбцов и высота строк сетки задается по умолчанию в свойствах:
propertyDefaultColWidth: Integer; //ширина колонки по умолчанию
propertyDefaultRowHeight: Integer; //высота строки по умолчанию
Присвоение перечисленным свойствам каких-то значений «причесывает»
все ячейки сетки под одну гребенку – они получают одинаковые размеры
высоты и ширины. Вместе с тем возможна и индивидуальная настройка размеров любой колонки или строки. Для этого надо знать их порядковый номер Index:
propertyColWidths[Index: Longint]: Integer; //ширина колонки
propertyRowHeights[Index: Longint]: Integer; //высота строки
Эти свойства недоступны в Инспекторе объектов и изменять их можно только в коде программы. Есть возможность настроить толщину линий, разделяющих ячейки:
propertyGridLineWidth: Integer; //по умолчанию 1 пиксел
Два свойства (только для чтения) хранят информацию о высоте и ширине
всей таблицы:
propertyGridHeight: Integer; //высота сетки
propertyGridWidth: Integer; //ширина сетки
Если в видимой области сетки все ячейки не помещаются, то по краям сетки
необходимо включить линии прокрутки:
propertyScrollBars: TScrollStyle;
typeTScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth);
Количество полностью видимых в данный момент столбцов или строк можно получить из свойств:
propertyVisibleColCount: Integer; //видимых колонок
propertyVisibleRowCount: Integer; //видимых рядов
При прокрутке сетки зачастую необходимо выяснить номера столбца и строки, соответствующих левой верхней видимой ячейке (не находящейся в фиксированной области).
propertyLeftCol: Longint; //индекс левой ячейки
propertyTopRow: Longint; //индекс верхней ячейки
С изменением координат видимой ячейки непосредственно связано событие:
propertyOnTopLeftChanged: TNotifyEvent;
Например:
procedureTForm1.DrawGrid1TopLeftChanged(Sender: TObject);
Begin
Label1.Caption:=Format('Колонка %d Строка %d', [DrawGrid1.LeftCol,DrawGrid1.TopRow]);
end;
Широкий спектр услуг по настройке сетки обеспечивает множество Options,
возможные значения которого представлены в табл. 8.6.
propertyOptions: TGridOptions;
TGridOptions = set ofTGridOption;
Таблица 8.6.Опции сетки TGridOption
Значение | Результат |
goFixedVertLine | Ячейки фиксированной области разделены вертикальными линиями. |
goFixedHorzLine | Ячейки фиксированной области разделены горизонтальными линиями. |
goVertLine | Колонки разделяются линиями. |
goHorzLine | Строки разделяются линиями. |
goRangeSelect | Одновременно может быть выделено несколько ячеек(опция не работает при включенной опции goEditing) |
goDrawFocusSelected | Сфокусированная ячейка выделяется цветом. |
goRowSizing | Разрешение на установку индивидуальных размеров для строки, колонки. |
goColSizing | Разрешение на перемещение мышью строк, колонок. |
goRowMoving | |
goColMoving | |
goEditing | Разрешает пользователю редактировать текст ячеек. |
goTabs | При включении переход между столбцами осуществляется при помощи клавиши Tab и Shift+Tab. |
goRowSelect | Запрещает выделение отдельной ячейки. Вместо этого выделяется весь ряд. При включении этой опции отключается goAlwaysShowEditor. |
goAlwaysShowEditor | Имеет значение при включенной опции goEditing. Если опция включена, то выбрав ячейку, пользователь сразу оказывается в режиме редактирования. В противном случае необходимо предварительное нажатие клавиш Enter или F2. |
goThanbTracking | Определяет порядок прорисовки содержимого ячеек при перемещении бегунка полосы прокрутки сетки. Если опции отключена прорисовка начинается после отпускания кнопки мыши, в противном случае прорисовка осуществляется при малейшем перемещении бегунка, а это требует дополнительного расхода ресурсов. |
Не забывайте, что отсчет столбцов и строк начинается с нуля, т. е. верхняя левая ячейка сетки располагается в нулевом столбце и нулевой строке.
Адрес каждой ячейки сетки однозначно задается номером столбца и строки.
Для того чтобы узнать координаты выделенной ячейки, обратитесь к свойствам:
propertyCol: Longint;
propertyRow: Longint;
На этом способы выяснения координат ячейки не заканчиваются. Экранные
координаты курсора мыши (X, Y) легко преобразуются в номера столбца
и строки ячейки (aCol, aRow) при помощи метода:
procedureMouseToCell(X, Y : Integer; varACol, ARow : Longint);
Существует и обратный метод, возвращающий координаты прямоугольной
области, соответствующей ячейке:
functionCellRect(ACol, ARow : Longint): TRect;
Дата добавления: 2016-03-15; просмотров: 735;