КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Характеристики сетки
Несмотря на то, что по своему виду сетка DBGrid похожа на сетку StringGrid, между ними имеются значительные различия. Так, у сетки StringGrid можно устанавливать через соответствующие свойства число ее строк и столбцов. У сетки DBGrid числом строк управлять нельзя, т. к. она отображает все записи, имеющиеся в наборе данных. Основным свойством сетки является свойство columns типа TDBGridColumns, которое представляет собой массив (коллекцию) объектов column типа TColumn, описывающих отдельные столбцы сетки. Свойство Selectedindex типа integer задает номер текущего столбца в массиве Columns, а свойство SelectedField указывает на объект типа TField, которому соответствует текущий столбец сетки. Свойство FieldCount типа integer, доступное во время выполнения программы, содержит число видимых столбцов сетки, а свойство Fields [Index: Integer] типа TField позволяет получить доступ к отдельным столбцам. Индекс определяет номер столбца в массиве столбцов и принимает значения в интервале от 0 до FieldCount - 1. Свойства color и FixedColor типа TColor задают цвета сетки и ее фиксированных элементов, соответственно. По умолчанию свойство color имеет значение clWindow (цвет фона Windows), а свойство FixedColor — значение clBtnFace (цвет кнопки). Свойство TitleFont типа TFont определяет шрифт, используемый для вывода заголовков столбцов. Доступ к параметрам сетки (например, для настройки) возможен через свойство Options типа TGridOptions. Это свойство представляет собой множество и принимает комбинации следующих значений: · dgEditing — пользователю разрешается редактирование данных в ячейках; · dgAlwaysShowEditor — сетка не блокирует режим редактирования; · dgTitles — отображаются заголовки столбцов;
· dgColumnResize — пользователь может с помощью мыши изменять размер столбцов и перемещать их; · dgColLins — между столбцами выводятся разделительные вертикальные линии;
игнорируются значения dgEditing и dgAlwaysShowEditor; · dgAlwaysShowSelection — ячейка остается выделенной, даже если сетка теряет фокус; · dgConfirmDelete— при удалении строки выдается запрос на подтверждение операции; · dgCancelOnExit — добавленные к сетке пустые строки (записи) при потере сеткой фокуса не сохраняются в наборе данных; · dgMuitiSelect — в сетке можно одновременно выделить несколько строк.
По умолчанию свойству Options устанавливается значение [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit]. При щелчке на ячейке с данными генерируется событие onceiiciick, а щелчок на заголовке столбца вызывает событие onTitieciick. Оба события имеют тип TDBGridciickEvent, описываемый следующим образом: type TDBGridclickEvent = procedure (Column: TColumn) of object;
Параметр Column представляет собой столбец, на котором был произведен щелчок. При перемещении фокуса между столбцами сетки инициируются события OnColEnter и OnColExit типа TNotifyEvent, первое из которых возникает при получении столбцом фокуса, а второе — при потере его. Если свойство options содержит значение dgColumnResize, то пользователь может с помощью мыши перемещать столбцы сетки. При таком перемещении генерируется событие OnColumnMoved типа TMovedEvent, описываемого как: type TMovedEvent = procedure (Sender: TObject; Fromlndex, Tolndex: Longint) of object;
Параметры Fromlndex и ToIndex указывают индексы в массиве столбцов сетки, соответствующие предыдущему и новому положению перемещенного столбца, соответственно. Сетка DBGrid способна автоматически отображать в своих ячейках информацию, но при необходимости программист может выполнить и собственное отображение сетки. Это может понадобиться в случае, когда желательно выделить ячейку или столбец с помощью цвета или шрифта, а также вывести в ячейке, кроме текстовой, и графическую информацию, например, небольшой рисунок. Для программной реализации отображения сетки используется обработчик события OnDrawColumnCell типа TDrawColumnCellEvent, которое возникает при прорисовке любой ячейки. Тип события OnDrawColumnCell описан следующим образом: type TDrawColumnCellEvent = procedure (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState) of object;
Параметр Rect содержит координаты ограничивающего ячейку прямоугольника, параметр DataCol определяет номер прорисовываемой колонки в массиве столбцов сетки, а параметр column является объектом прорисовываемого столбца. Параметр state задает состояние ячейки и принимает комбинации следующих значений: · gdSelected — ячейка находится в выбранном диапазоне; · gdFocused — ячейка имеет фокус ввода;
Порядок вызова события OnDrawColumnCell зависит от значения свойства DefaultDrawing типа Boolean. Если свойство имеет значение True (по умолчанию), то перед генерацией события OnDrawColumnCell в ячейке отображается фон и выводится информация. Затем вокруг выбранной ячейки рисуется прямоугольник выбора. Если свойство DefaultDrawing имеет значение False, то сразу вызывается событие OnDrawColumnCell, в обработчике которого следует разместить операции по прорисовке области сетки. Рассмотрим следующий пример, в котором программно осуществляется прорисовка сетки: // Свойству DefaultDrawing должно быть установлено значение True procedure TForml.DBGridlDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var r:TRect; s:string;
Дата добавления: 2014-01-11; Просмотров: 421; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |