![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сетка для рисования – компонент 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
Не забывайте, что отсчет столбцов и строк начинается с нуля, т. е. верхняя левая ячейка сетки располагается в нулевом столбце и нулевой строке. Адрес каждой ячейки сетки однозначно задается номером столбца и строки. Для того чтобы узнать координаты выделенной ячейки, обратитесь к свойствам: 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;
|