Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сетка для рисования – компонент TDrawGrid






Общее количество столбцов и строк задается в свойствах:

property ColCount: Longint; //число столбцов

property RowCount: Longint; //число строк

 

Часть столбцов и строк сетки можно сделать фиксированными. Фиксированный ряд (колонка) на экране компьютера отображается другим цветом. Ячейки такого рода недоступны для редактирования пользователем, не перемещаются с помощью полос прокрутки и обычно используются для размещения заголовков и комментариев.

property FixedCols: Integer; //число фиксированных колонок

property FixedRows: Integer; //число фиксированных строк

 

Для того чтобы отказаться от фиксированных колонок или строк присвойте

соответствующему свойству значение 0. Еще одной особенностью фиксированного ряда (колонки) является то, что он может располагаться только на первых позициях сетки. Другими словами, если в сетке объявлен один фиксированный ряд, то его индекс aRow всегда равен 0. Для выделения фиксированных ячеек цветом используется свойство:

property FixedColor: TColor;

 

Ширина столбцов и высота строк сетки задается по умолчанию в свойствах:

property DefaultColWidth: Integer; //ширина колонки по умолчанию

property DefaultRowHeight: Integer; //высота строки по умолчанию

 

Присвоение перечисленным свойствам каких-то значений «причесывает»

все ячейки сетки под одну гребенку – они получают одинаковые размеры

высоты и ширины. Вместе с тем возможна и индивидуальная настройка размеров любой колонки или строки. Для этого надо знать их порядковый номер Index:

property ColWidths[Index: Longint]: Integer; //ширина колонки

property RowHeights[Index: Longint]: Integer; //высота строки

 

Эти свойства недоступны в Инспекторе объектов и изменять их можно только в коде программы. Есть возможность настроить толщину линий, разделяющих ячейки:

property GridLineWidth: Integer; //по умолчанию 1 пиксел

 

Два свойства (только для чтения) хранят информацию о высоте и ширине

всей таблицы:

property GridHeight: Integer; //высота сетки

property GridWidth: Integer; //ширина сетки

 

Если в видимой области сетки все ячейки не помещаются, то по краям сетки

необходимо включить линии прокрутки:

property ScrollBars: TScrollStyle;

type TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth);

 

Количество полностью видимых в данный момент столбцов или строк можно получить из свойств:

property VisibleColCount: Integer; //видимых колонок

property VisibleRowCount: Integer; //видимых рядов

 

При прокрутке сетки зачастую необходимо выяснить номера столбца и строки, соответствующих левой верхней видимой ячейке (не находящейся в фиксированной области).

property LeftCol: Longint; //индекс левой ячейки

property TopRow: Longint; //индекс верхней ячейки

 

С изменением координат видимой ячейки непосредственно связано событие:

property OnTopLeftChanged: TNotifyEvent;

 

Например:

procedure TForm1.DrawGrid1TopLeftChanged(Sender: TObject);

Begin

Label1.Caption: =Format('Колонка %d Строка %d', [DrawGrid1.LeftCol, DrawGrid1.TopRow]);

end;

 

Широкий спектр услуг по настройке сетки обеспечивает множество Options,

возможные значения которого представлены в табл. 8.6.

property Options: TGridOptions;

TGridOptions = set of TGridOption;

 

Таблица 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 Определяет порядок прорисовки содержимого ячеек при перемещении бегунка полосы прокрутки сетки. Если опции отключена прорисовка начинается после отпускания кнопки мыши, в противном случае прорисовка осуществляется при малейшем перемещении бегунка, а это требует дополнительного расхода ресурсов.

 

Не забывайте, что отсчет столбцов и строк начинается с нуля, т. е. верхняя левая ячейка сетки располагается в нулевом столбце и нулевой строке.

Адрес каждой ячейки сетки однозначно задается номером столбца и строки.

Для того чтобы узнать координаты выделенной ячейки, обратитесь к свойствам:

property Col: Longint;

property Row: Longint;

 

На этом способы выяснения координат ячейки не заканчиваются. Экранные

координаты курсора мыши (X, Y) легко преобразуются в номера столбца

и строки ячейки (aCol, aRow) при помощи метода:

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

Существует и обратный метод, возвращающий координаты прямоугольной

области, соответствующей ячейке:

function CellRect(ACol, ARow: Longint): TRect;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.