DataGrid

Иерархия наследования

          IComponent

          IControl

          IDataGrid

          DataGrid

Описание

Компонент DataGrid предназначен для отображения каких-либо данных в виде таблицы.

Работа с компонентом

В таблице могут отображаться данные из какого-либо источника данных или временный набор пользовательских данных.

Для подключения источника данных необходимо определить свойство DataSource компонента. После этого в свойстве ColumnCount необходимо указать количество столбцов, в которых будут отображаться данные. Для каждого столбца в свойстве FieldName необходимо указать наименование поля источника данных, данные которого будут отображаться. Для работы со столбцом щелкните по его заголовку. При этом доступные свойства будут отображены в инспекторе объектов. При установленном источнике данных количество строк формируется автоматически и соответствует количеству доступных строк в источнике данных.

Примечание. Для ускорения работы при загрузке формы в компонент подгружаются только первые строки из источника данных. Количество подгружаемых строк рассчитывается таким образом, чтобы была занята вся доступная область компонента. Остальные строки будут подгружаться по мере прокрутки области строк в компоненте.

Если источник данных не подключен, то у разработчика есть возможность установить необходимое количество строк вручную, определив значение свойства AbsoluteRowCount.

Базовое свойство Color позволяет определить цвет области, не занятой ячейками.

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

Работа с группами

Таблица компонента DataGrid представляет собой коллекцию контейнеров, содержащих в себе коллекцию столбцов.

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

Для изменения положения какого-либо контейнера (колонки) необходимо навести курсор мыши на заголовок нужного объекта, зажать кнопку мыши и перетащить объект в нужную позицию. Необходимым условием для изменения положения контейнера (колонки) является установка свойствам AllowPress и Moveable значения True. Для изменения положения контейнера (колонки) в языке Fore используется метод SetParentBand.

Подсчет итогов

Для контейнеров и столбцов таблицы реализован расчет итогов. Для отображения рассчитанных данных необходимо свойству ShowTotals установить значение True. Вид рассчитываемых итогов определяется в свойстве TotalStyle выбранного контейнера (столбца).

Автоматический расчет итогов осуществляется только по числовым данным. Для контейнеров (столбцов), содержащих нечисловые данные, расчет итогов можно организовать самостоятельно в пользовательском макросе. Для вывода собственных значений необходимо свойству TotalStyle установить значение DataGridTotalStyle.Value, итоговое (отображаемое в таблице) значение установить в свойстве TotalValue.

Сортировка данных

Для сортировки данных по какому-либо столбцу необходимо щелкнуть по заголовку данного столбца. При этом все данные будут отсортированы по возрастанию значений. Повторные щелчки будут вызывать смену направления сортировки.

Если свойству MultipleSort установлено значение True, то в таблице будет доступна сортировка по нескольким столбцам. Для мультисортировки необходимо зажать клавишу CTRL и щелкнуть по заголовкам необходимых столбцов. Порядок сортировки будет определяться следующим образом: столбец, по заголовку которого был осуществлен последний щелчок, будет отсортирован в последнюю очередь.

Также осуществить настройку сортировки можно в специализированном окне «Сортировка»:

,

Данное окно появляется при выборе соответствующего пункта контекстного меню, вызываемого в области заголовков колонок. Колонки, по которым будет осуществляться сортировка, необходимо переместить в список выбранных. Кнопки и используются для изменения направления сортировки по выбранному столбцу. Кнопки и используются для изменения порядка сортировки. Колонки, расположенные вверху списка, будут сортироваться в первую очередь.

В языке Fore для установки сортировки надо изменить значение свойства SortIndex у необходимой колонки. Направление сортировки определяется в свойстве SortAscending. Для установки мультисортировки нужно изменить значение свойства SortIndex у необходимых столбцов. Необходимым условием для возможности изменения сортировки является установка свойству EnableSort значения True.

Выбор столбцов

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

Контекстное меню содержит список всех столбцов компонента. Для включения/отключения отображения столбца следует установить /снять флажок напротив него.

При выборе пункта «Выбрать столбцы» будет открыт диалог:

Для включения/отключения столбца следует установить/снять флажок напротив него. Для отметки/снятия всех установленных флажков следует использовать кнопку «Отметить все»/«Снять отметку». Для задания порядка столбцов в таблице следует использовать кнопки, расположенные в окне справа: вверх, вниз, на уровень вверх.

Автофильтр

Для облегчения поиска необходимых данных в таблице доступна настройка различных условий автофильтра. Для настройки автофильтра используется кнопка , отображаемая в заголовке колонки таблицы. При нажатии на которую будет выведен список, сформированный из элементов данного столбца и зарезервированных пунктов:

После установки параметров в выбранном столбце будет отображаться заданное количество элементов списка (количество задается явно либо в процентах от количества элементов).

Примечание. Если в списке содержится более 1000 записей, в  меню с командами управления автофильтром будут отображаться только первые 1000 значений и предупреждающее сообщение «Показаны первые 1000 элементов».

После выбора и настройки какого-либо условия фильтрации кнопка автофильтра будет подсвечена синим цветом. Необходимым условием для возможности установки автофильтра в колонках является установка свойству AutoFilter значения AutoFilterType.Inplace.

Если свойству AutoFilter установлено значение AutoFilterType.None, то кнопка для настройки автофильтра отображаться не будет, но будет возможность настроить фильтрацию с использованием языка Fore. Для установки автофильтра используется свойство TableFilter.

Настройка оформления

Оформление можно настроить как у компонента в целом, так и по отдельным столбцам и строкам. Настройка оформления компонента осуществляется за счет свойств, доступных в интерфейсе IDataGrid.

Для настройки оформления столбцов и строк используются стили. Коллекция стилей доступна в свойстве Styles. По умолчанию в коллекции создан один стиль, используемый для оформления всех столбцов и строк. После создания и настройки требуемых стилей индексы стилей необходимо указать в свойствах IDataGridColumn.StyleIndex - для оформления столбцов, либо IDataGridRow.StyleIndex - для оформления строк. Во время выполнения формы можно динамически изменять стиль оформления строк, используя события OnGetRowStyle и OnGetSelectedRowStyle. Стиль задается в свойстве StyleIndex аргумента этих событий. Если для компонента свойству CustomCellStyle установлено значение True, то также будут генерироваться события OnGetCellStyle и OnGetSelectedCellStyle. В данных событиях можно определить стиль оформления отдельных ячеек таблицы. Для изменения стиля также используется свойство StyleIndex аргумента событий.

Сохранение параметров

Настройки столбцов можно сохранять и загружать когда это необходимо. Для этого предназначены методы SaveColumns и LoadColumns. Сохраняются следующие параметры столбцов: размеры, видимость, расположение столбцов.

Параметры автофильтров, которые могут быть установлены по столбцам, также можно сохранять и загружать, используя методы SaveAutoFilters и LoadAutoFilters. Для автофильтров сохраняются установленные условия, а также параметры сортировки, установленной по столбцам.

Все указанные методы работают с XML-строкой.

Контекстное меню в компоненте

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

Пример

Свойства, унаследованные от IDataGrid

  Имя свойства Краткое описание
Свойство AbsoluteFocusedRow определяет абсолютный индекс сфокусированной строки таблицы.
Свойство AbsoluteRowCount определяет абсолютное количество строк, присутствующих в таблице.
Свойство AllowAppend определяет возможность добавления записей.
Свойство AllowDelete определяет возможность удаления записей в таблице.
Свойство AllowEdit определяет возможность редактирования записей в таблице.
Свойство AutoFilter определяет признак использования автофильтра в столбцах.
Свойство BandCount определяет количество пользовательских контейнеров, присутствующих в таблице.
Свойство Bands возвращает коллекцию контейнеров таблицы.
Свойство BorderStyle определяет стиль границы компонента.
Свойство CellValue определяет значение ячейки, координаты которой передаются в качестве входных параметров.
Свойство ColumnCount определяет количество столбцов компонента DataGrid.
Свойство Соlumns возвращает коллекцию столбцов компонента DataGrid.
Свойство CurentColumn определяет номер столбца, на котором установлен фокус.
Свойство CustomCellStyle определяет признак генерации событий для отрисовки отдельных ячеек.
Свойство DataSource указывает  источник данных, с которым связан компонент.
Свойство DrawFocus определяет признак отображения рамки фокуса в ячейке таблицы.
Свойство EnableSort определяет возможность сортировки данных щелчком мыши по заголовку столбца.
Свойство FixedBorderColor определяет цвет линий, разделяющих фиксированные области таблицы.
Свойство FixedBorderWidth определяет толщину границы между фиксированными областями.
Свойство FocusedColumn возвращает сфокусированный столбец таблицы.
Свойство GridLinesColor определяет цвет вертикальных и горизонтальных линий сетки таблицы.
Свойство HeaderHeight определяет высоту заголовков столбцов и контейнеров компонента.
Свойство HeaderMenu определяет контекстное меню, вызываемое в области заголовков контейнеров/колонок компонента.
Свойство HideSelection определяет видимость установленной отметки при потере фокуса компонентом.
Свойство Images определяет компонент, изображения которого будут использоваться в ячейках таблицы.
Свойство MultipleSort определяет возможность учитывать более одной колонки при сортировке.
Свойство MultiSelect определяет возможность множественной отметки строк компонента DataGrid.
Свойство ReadOnly определяет, будет ли пользователь иметь возможность изменять значение поля текущей записи.
Свойство RootBands возвращает коллекцию корневых контейнеров таблицы
Свойство RowHeight определяет базовую высоту строк компонента.
Свойство Rows возвращает коллекцию строк таблицы.
Свойство RowSizing определяет возможность изменения высоты строк компонента с помощью мыши.
Свойство RowSizingMode определяет, в каком режиме будет изменяться высота строк.
Свойство Selection определяет отметку элементов в компоненте.
Свойство ShowBands определяет признак отображения заголовков контейнеров.
Свойство ShowFocusedCell определяет признак отображения сфокусированной ячейки.
Свойство ShowHeaders определяет признак отображения заголовков контейнеров и столбцов таблицы.
Свойство ShowHorizontalGridLines определяет признак отображения горизонтальных линий сетки таблицы.
Свойство ShowTotals определяет признак отображения итоговых значений столбцов.
Свойство ShowVerticalGridLines определяет признак отображения вертикальных линий сетки таблицы.
Свойство SortType определяет тип сортировки для компонента.
Свойство Styles определяет коллекцию стилей, используемых в компоненте DataGrid.
Свойство TableFilter определяет настройки автофильтрации компонента DataGrid.
Свойство TotalScope определяет, по каким данным будут считаться итоги.
Свойство VisualFocusedRow определяет индекс видимой сфокусированной строки таблицы.
Свойство VisualRowCount возвращает количество строк, фактически отображаемых в таблице.

Свойства, унаследованные от IControl

  Имя свойства Краткое описание

Align

Свойство Align определяет выравнивание компонента в рамках содержащего его родительского компонента.

AllowDrag

Свойство AllowDrag определяет возможность взять у компонента перетаскиваемый объект.

AllowDrop

Свойство AllowDrop определяет, будет ли возможность у компонента принять перетаскиваемый объект.

Anchors

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

Brush

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

ClientHeight

Свойство ClientHeight определяет высоту клиентской области компонента.

ClientWidth

Свойство ClientWidth определяет ширину клиентской области компонента.

Color

Свойство Color определяет цвет фона компонента.

Cursor

Свойство Cursor определяет вид курсора, отображаемого при наведении курсора мыши на компонент, во время выполнения формы.

Enabled

Свойство Enabled определяет доступность компонента для пользователя.

Focused

Свойство Focused возвращает True, если фокус установлен на данном компоненте.

Font

Свойство Font определяет параметры шрифта, используемого при отображении текста в компоненте.

Height

Свойство Height определяет высоту компонента в пикселях.

HelpContext

Свойство HelpContext определяет уникальный индекс раздела контекстно-зависимой справки для данного компонента.

Hint

Свойство Hint определяет текст подсказки, появляющийся при задержке указателя мыши над компонентом.

HintTimeout

Свойство HintTimeout определяет время отображения всплывающей подсказки.

Left

Свойство Left определяет координату левого края компонента в пикселях.

Parent

Свойство Parent определяет родительский компонент.

ParentColor

Свойство ParentColor определяет, будет ли для компонента заимствован цвет родительского компонента.

ParentFont

Свойство ParentFont определяет, будет ли для компонента использоваться шрифт родительского компонента.

ParentShowHint

Свойство ParentShowHint определяет условие отображения всплывающей подсказки.

PopupMenu

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

Scrolls

Свойство Scrolls возвращает параметры полос прокрутки компонента.

ShowHint

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

TabOrder

Свойство TabOrder определяет позицию компонента в последовательности табуляции.

TabStop

Свойство TabStop определяет признак необходимости компоненту получать фокус при нажатии кнопки «Tab».

Text

Свойство Text определяет строку, идентифицирующую компонент для пользователя.

Top

Свойство Top определяет координату верхнего края компонента в пикселях.

Visible

Свойство Visible определяет видимость компонента во время выполнения формы.

Width

Свойство Width определяет горизонтальный размер компонента в пикселях.

Методы, унаследованные от IComponent

  Имя свойства Краткое описание
ComponentCount Свойство ComponentCount возвращает количество дочерних компонентов, расположенных на родительском компоненте.
Components Свойство Components возвращает дочерний компонент, индекс которого передается посредством входного параметра.
Data Свойство Data предназначено для хранения любых пользовательских данных.
Name Свойство Name определяет наименование компонента.
Tag Свойство Tag не используется компилятором. Пользователь может изменить значение данного свойства и использовать его по своему усмотрению.

Методы, унаследованные от IDataGrid

   Имя метода Краткое описание
Метод BeginUpdate запрещает перерисовку компонента DataGrid.
Метод EndUpdate отключает режим запрета перерисовки компонента DataGrid.
Метод GetCellCoordAt возвращает преобразованные координаты мыши в координаты ячейки, над которой находился курсор.
Метод LoadAutoFilters загружает параметры автофильтров таблицы.
Метод LoadColumns загружает параметры столбцов таблицы.
Метод ParametersOfColumnsDialog вызывает диалог настройки сортировки колонок.
Метод RealToVisual возвращает индекс видимой строки по абсолютному индексу строки в таблице.
Метод SaveAutoFilters осуществляет сохранение параметров автофильтров, установленных для столбцов таблицы.
Метод SaveColumns осуществляет сохранение параметров столбцов таблицы.
Метод SelectColumnsDialog вызывает диалог выбора контейнеров/колонок, отображаемых в компоненте.
Метод VisualToReal возвращает абсолютный индекс строки по индексу строки среди фактически отображаемых строк.

Методы, унаследованные от IControl

  Имя метода Краткое описание
Метод ClientToScreen преобразовывает координаты точки, указанные относительно системы координат компонента, в экранные координаты.
Метод DoDragDrop позволяет начать операцию перетаскивания.
Метод GetImage возвращает графическое изображение компонента со всеми дочерними компонентами.
Метод ScreenToClient преобразовывает экранные координаты точки в координаты, указываемые относительно системы координат компонента.
Метод SetFocus устанавливает фокус на данный компонент.

События

   Имя события Краткое описание
Событие OnAfterEdit происходит после попытки изменить значение ячейки.
Событие OnBandBaseClick наступает после щелчка мыши по заголовку столбца или контейнера.
Событие OnBandBaseMove наступает при перемещении столбца или контейнера.
Событие OnBandBaseResize наступает при изменении ширины столбца или контейнера.
Событие OnBeforeCellChange наступает перед присвоением ячейке нового значения.
Событие OnBeforeEdit наступает перед началом редактирования ячейки.
Событие OnCellChange наступает после изменения значения ячейки.
Событие OnChangeBandVisible наступает при изменении видимости у какого-либо контейнера/колонки компонента.
Событие OnCompareItems наступает при сравнении значений колонки во время пользовательской сортировки компонента DataGrid.
Событие OnFilter наступает после установки фильтра в каком-либо столбце таблицы.
Событие OnFocusedChange наступает при передаче фокуса другой ячейке компонента.
Событие OnGetCellStyle наступает при отрисовке ячейки.
Событие OnGetRowStyle наступает при отрисовке строки.
Событие OnGetSelectedCellStyle наступает при отрисовке выделенной ячейки.
Событие OnGetSelectedRowStyle наступает при отрисовке выделенной строки.
Событие OnSort наступает после сортировки столбца.

События, унаследованные от IControl

   Имя события Краткое описание

OnBeginDrag

Событие OnBeginDrag для компонента наступает, когда пользователь начинает перетаскивать объект от компонента.

OnClick

Событие OnClick наступает, если пользователь щёлкнул в области компонента.

OnControlMove

Событие OnControlMove наступает при перемещении компонента.

OnControlResize

Событие OnControlResize наступает при изменении размеров у компонента.

OnDblClick

Событие OnDblClick наступает, если пользователь дважды щёлкнул в области компонента.

OnDragDrop

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

OnDragEnter

Событие OnDragEnter наступает, когда перетаскиваемый объект входит в область данного компонента.

OnDragLeave

Событие OnDragLeave наступает, когда перетаскиваемый объект выходит за границы данного компонента.

OnDragOver

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

OnEnter

Событие OnEnter наступает в момент получения фокуса компонентом.

OnExit

Событие OnExit наступает в момент потери фокуса компонентом.

OnHScroll

Событие OnHScroll наступает при изменении положения ползунка горизонтальной полосы прокрутки.

OnKeyDown

Событие OnKeyDown наступает, если компонент находится в фокусе и производится нажатие на клавиатуру.

OnKeyPress

Событие OnKeyPress наступает, если компонент находится в фокусе, при нажатии пользователем символьной клавиши.

OnKeyPreview

Событие OnKeyPreview наступает перед каждым событием, связанным с нажатием клавиш.

OnKeyUp

Событие OnKeyUp наступает, если компонент находится в фокусе, при отпускании пользователем любой, ранее нажатой клавиши.

OnMouseDown

Событие OnMouseDown наступает, если указатель находится в области компонента и была нажата любая кнопка мыши.

OnMouseEnter

Событие OnMouseEnter наступает в момент входа курсора мыши в область компонента.

OnMouseHover

Событие OnMouseHover наступает при задержке курсора мыши в области компонента.

OnMouseLeave

Событие OnMouseLeave наступает в момент выхода курсора мыши за пределы области компонента.

OnMouseMove

Событие OnMouseMove наступает при перемещении курсора мыши над компонентом.

OnMouseUp

Событие OnMouseUp наступает при отпускании кнопки мыши, когда указатель находится в области компонента.

OnMouseWheel

Событие OnMouseWheel наступает, если компонент находится в фокусе при вращении колеса мыши.

OnVScroll

Событие OnVScroll наступает при изменении положения ползунка вертикальной полосы прокрутки.

См. также:

Компоненты доступа к данным