Класс TDBCtrlGrid - единственный компонент страницы Data Controls с неподдающимся дословному переводу названием. Несмотря на наличие grid в названии, компонент лишь отдаленно напоминает сетку. Объясняется это тем, что его непосредственный предок, класс TWinControl, не имеет о сетках никакого представления. Поэтому корректнее о TDBCtrlGrid говорить как о наборе динамически создаваемых панелей. Как и все элементы управления, предназначенные для работы с набором данных, этот компонент требует подключения к источнику данных TData-Source. После открытия связанного с ним набора данных компонент самостоятельно создает несколько панелей. Каждая панель ассоциируется с отдельной записью из набора данных. Главная черта компонента TDBCtrlGrid состоит в том, что этот элемент управления может являться владельцем других компонентов, предназначенных для работы с данными, и не только их. Например, в период разработки проекта программист имеет право разместить на поверхности TDBCtrlGrid строки ввода TDBText и поясняющие текстовые метки TStaticText. После запуска приложения наша «сетка» самым чудесным образом размножит доверенные ей элементы управления. Существует ряд ограничений, препятствующих размещению на TDBCtrlGrid элементов управления. К числу персон NON GRATA относятся TDBGrid, TDBCtrlGrid, TDBLookupListBox, TDBLookupComboBox и TDBChart. Признаком лояльности служит наличие стиля csReplicatable в свойстве ControlStyle размещаемого на панели компонента. Этот стиль указывает, что компонент может копироваться для каждой панели. Допустимо, но нежелательно размещать элементы, потребляющие много системных ресурсов: TDBMemo, TDBRichEdit и TDBImage. Порядок следования записей в компоненте TDBCtrlGrid определен свойством: property Orientation: TDBCtrlGridOrientation; type TDBCtrlGridOrientation = (goVertical, goHorizontal); По умолчанию свойство принимает значение goVertical, что соответствует последовательности сверху вниз. В этом случае сетка снабжается вертикальной полосой прокрутки. Второе возможное состояние, goHorizontal, укажет компоненту о необходимости располагать записи слева направо и включит горизонтальную полосу прокрутки. По умолчанию панели компонента размещаются в одном столбце. Для изменения этой традиции требуется настроить свойство: property ColCount: Integer; Количество рядов, видимых в клиентской области элемента управления, определяется свойством: property RowCount: Integer; За геометрические размеры панелей отвечают свойства: property PanelHeight: Integer; property PanelWidth: Integer; Общее число одновременно видимых панелей доступно из свойства: property PanelCount: Integer; //только для чтения Свойство попросту перемножает значения свойств ColCount и RowCount. Индекс панели текущей записи хранится в свойстве: property PanelIndex: Integer; Это же свойство можно использовать при необходимости переместиться к панели с заданным номером. Будьте внимательны: Panellndex - это номер панели среди панелей, расположившихся в видимой клиентской области сетки. К панелям, оставшимся в невидимой области, свойство ни имеет никакого отношения. Другими словами, диапазон допустимых значений PanelIndex ограничен 0 (первая видимая панель) и PanelCount-1 (последняя видимая панель). Имитацию фокуса ввода для выбранной панели обеспечивает свойство: property ShowFocus: Boolean; Если оно включено, визуально запись выделяется прямоугольником. Кроме того, выбранную запись можно подчеркнуть отдельным цветом: property SelectedColor: TColor; Еще более тонкие возможности определения особенностей вывода панели на экран предоставляет событие: property OnPaintPanel: TPaintPanelEvent; type TPaintPanelEvent = procedure(DBCtrlGrid: TDBCtrlGrid; Index: Integer) of object; Для рисования на поверхности панели воспользуйтесь ее свойством Canvas. Параметр Index информирует программиста о том, какую именно панель в данный момент выводит на экран обработчик события. Пока свойство AllowDelete установлено в true, пользователь может удалить текущую запись, нажав комбинацию клавиш Ctrl+Del. property AllowDelete: Boolean; //по умолчанию true Для вставки новой записи достаточно нажать комбинацию Ctrl+Ins, но при условии, что свойство AllowInsert также находится в состоянии true. property AllowInsert: Boolean; //по умолчанию true Если свойство EditMode содержит значение true, то перевод компонента в режим редактирования осуществляется автоматически при нажатии клавиши F2. property EditMode: Boolean; Для выполнения операции, определенной параметром Key, вызовите процедуру: procedure DoKey(Key: TDBCtrlGridKey); type TDBCtrlGridKey = (gkNull, gkEditMode, gkPriorTab, gkNextTab, gkLeft, gkRight, gkUp, gkDown, gkScrollUp, gkScrollDown, gkPageUp, gkPageDown, gkHome, gkEnd, gkInsert, gkAppend, gkDelete, gkCancel); Это перемещение по панелям, а также перевод в режимы редактирования, вставки, удаления и отмены.
Понравилась новость Компонент TDBCtrlGrid? Не пропусти похожие записи: