рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

TDBGridEh и вертикальный scrollbar.

TDBGridEh и вертикальный scrollbar. - раздел Программирование, Библиотека компонент EhLib - Руководство разработчика При Работе Разными Типами Dataset'ов Можно Обратить Внимание, Что Для Одних Т...

При работе разными типами dataset'ов можно обратить внимание, что для одних типов dataset'ов DBGrid отображает вертикальный scrollbar правильно, а для других имеет только 3 позиции независимо от числа записей в dataset'е. Для согласования scrollbar'а DBGrid использует свойства RecordCount и RecNo компонента DataSet. Некоторые dataset'ы и даже некоторые dataset'ы при определенных условиях возвращают -1 в качестве значения RecordCount и RecNo. Функция DataSet IsSequenced показывает, использует ли таблица базы данных номера записей для отображения порядка записей. Когда IsSequenced возвращает True приложения могут использовать свойство RecNo для перемещения по записям dataset'а и DBGrid использует свойство RecNo для отображения положения ползунка на вертикальном scrollbar'е. Но когда IsSequenced возвращает False, DBGrid не может определить позицию текущей записи и отображает ползунок scrollbar'а в 3-х позициях. Компонент DBGridEh имеет возможность показывать пропорциональный scrollbar даже для неупорядоченных dataset'ов. Для этого нужно активизировать свойство SumList. Установите SumList.Active в True и SumList.VirtualRecords в True. SumList создаст список bookmar'ов записей. Если вы используете технологию клиент-сервер для доступа к базе данных, SumList вынудит dataset вернуть все записи, и эта операция займет некоторое время. Обратите внимание, что VirtualRecords будут работать только с full relationship bookmarks, т.е. DataSet.ComapreBookmark должен возвращать > 0 если bookmark1 > bookmark2 (т.е. запись, на которую указывает bookmark1 идет после записи, на которую указывает bookmark2), = 0 если bookmark1 = bookmark2, < 0 если bookmark1< bookmark2. TBDEDataSet в большинстве случаев поддерживает full relationship bookmarks.

Настройка линеек прокрутки.

Для настройки линеек прокрутки используюйте подсвойства свойств HorzScrollBar и VertScrollBar для настройки вертикальной и горизонтальной линейки прокрутки соответсвенно.

Tracking: Boolean Свойство определяет обновлять ли положение грида до того как кнопка мышки над бегунком линейки прокрутки будет отпущена.

SmoothStep: Boolean Задает плавную прокрутку бегунка линейки прокрутки, так что грид будет прокручиваться не по границам ячеек по попиксельно. Для HorzScrollBar SmoothStep по умолчанию True.

ExtScrollBar: TScrollBar; Задает внешнюю линейку прокрутки. Для управления позиции прокручиваемой области грида вы можете задать внешнюю линейку прокрутки.

Visible: Boolean; Свойство задает видимость линейки прокуртки.

VisibleMode: TScrollBarVisibleModeEh; Свойство задает, в каком режиме отображения работает линейка прокрутки и может содержать следующие значения:

sbAlwaysShowEh Выводить всегда.

sbNeverShowEh Не выводить никогда.

sbAutoShowEh Выводить или скрывать в зависисмости от видимой области грида.

Когда грид подключен к DataSet’у типа TMemTableEh, то при вертиакльной прокрутки грид не сдвигает текущую запись, а только видимую область записей.

Использование DBGridEh для сортировки ифильтрацииданных в DataSet.

DBGridEh не может сортировать или фильтровать данные самостоятельно. Но он может послать команду для сортировки или фильтрации специальному объекту, который сделает это в DataSet'е. Вы можете выбрать 2 типа сортировки (локальная и серверная) используя свойство SortLocal и два типа фильтрации (также локальная и серверная), но реальная возможность применения каждого типа операции зависит от типа DataSet'а. Например TBDEDataSet - не поддерживает локальную сортировку (внутри DataSet'а), так что вы не сможете сортировать данные локально, когда grid присоединен к TQuery или TTable. Библиотека имеет набор специальные объекты для сортировки/фильтрации стандартных типов DataSet'ов постовляемых вместе с Delphi.

Ниже вы можете видеть таблицу специальных объектов и DataSet'ов в которых объекты могут сортировать или фильтровать данные.

 

Unit DataSet Local sorting Server sorting Local filtering Server filtering
EhLibBDE TQuery, TTable N Y Y Y
EhLibADO TADOQuery, TADODataSet Y Y Y Y
EhLibCDS TClientDataSet Y Y Y Y
EhLibDBX TSQLQuery, TSQLDataSet N Y N Y
EhLibIBX TIBQuery, TIBDataSet N Y Y Y

 

Когда grid настроен для сортировки на Сервере, специальный объект строит SQL-выражение ORDER BY и заменяет строку ORDER BY в свойстве Command или SQL DataSet'а и переоткрывает его.

Когда grid настроен для локальной сортировки специальный объект производит сортировку учитывая специфику конкретного типа DataSet'а.

Когда grid настроен для Локальной фильтрации, специальный объект строит выражение и присваивает его свойству Filter DataSet'а. Перед этим нужно заранее выставить значение Filtered в True.

Когда grid настроен для фильтрации на сервере, специальный объект строит выражение для предложения 'WHERE' SQL-строки DataSet'а. Он пытается найти строку, начинющуюся с ключевого выражения '/*Filter*/' (Вы можете изменять это ключевое выражение используя глобальную переменную SQLFilterMarker) в SQL-выражении и добавляет выражение для фильтрации после ключа в той же строке. Так что, SQL-запрос должен содержать строку, начинающуюся с '/*Filter*/' . Например:

' select *

from table1

where

/*Filter*/ 1=1 '

Для автоматической фильтрации/сортировки данных в dataset'е требуется добавить один из модулей EhLibXXX (EhLibADO, EhLibBDE, EhLibCDS ... в зависимости от dataset'а, подключенного к grid') в раздел 'uses' любого модуля вашего проекта. Эти EhLibXXX модули содержат код для регистрации класса который наследуется от TDatasetFeaturesEh (специальный объект) и осуществляет фильтрацию/сортировку в DataSet'е. Для DataSet'ов сторонних разработчиков можно написать и зарегестрировать свой собственный класс или написать обработчики событий OnApplyFilter и/или OnSortMarkingChanged для каждого требуемого grid'а. Кроме того можно написать OnApplyFilter и/или OnSortMarkingChanged для глобальной переменной DBGridEhDataService. Эти события имеют тип TNotifyEvent, где в качестве Sender'а выступает TCustomDBGridEh.

Настройка сетки для сортировки данных:

TDBGridEh позволяет отображать специальные sortmarking bitmaps (маленькие треугольники) в правой части заголовков столбцов. Для отображения sortmarking bitmaps добавьте dghAutoSortMarking в свойство OptionsEh. Добавьте также dghMultiSortMarking в OptionsEh для обеспечения одновременной пометки сортировки по нескольким столбцам. Установите Column.Title.TitleButton в True для заголовков, у которых вы хотите изменять sortmarkers в run-time. Вы можете установить свойство сетки ColumnDefValues.Title.TitleButton чтобы позволить метки сортировки для всех столбцов, у которых не менялось свойство Column.Title.TitleButton. В run-time клик на заголовке изменяет порядок сортировки. При нажатом Ctrl можно отметить насколько столбцов одновременно. После клика на заголовке, если событие OnSortMarkingChanged не пусто то оно вызывается, иначе дейсвие передается на выполнение специальному объекту, если тот зарегистрирован. Специальный объект использует свойство Grid.SortLocal для определения типа сортировки данных: локально либо на сервере. Если вы пишете обработчик события OnSortMarkingChanged вы можете использовать свойство TDBGrid.SortMarkedColumns для доступа к сортируемым столбцам и свойство TColumnEh.Title.SortMarker для получения состояния маркера сортировки.

Настройка grid'а для фильтрации данных:

TDBGridEh позволяет отображать специальную строку под заголовком, где пользователь вводит в ячейки текст для фильтрации записей в dataset'е.

 

(Значения в ячейке могут выглядеть как: "1", ">=1", ">1 AND <=5", "%TestStr%"). Установите STFilter.Visible в True для отображения специальной строки. Во run-time, когда курсор находится в ячейке фильтрации, пользователь может нажать ENTER для применения фильтра. Grid проанализирует выражения в каждой непустой ячейке фильтрации и вызовет метод TDBGridEh.ApplyFilter, далее вызывается событие OnApplyFilter либо осуществляется передача действия специальному объекту, если тот зарегистрирован.

Текст выражения в ячейке фильтра должен иметь следующий формат:

[Operator1] Operand1 [)] [AND|OR Operator2 Operand2 [)] ]

Где OperatorX - один из [ = | <> | != | > | < | >= | <= | ~ | !~ | in ( ]

OperandX - число, дата, строковое выражение, либо, для оператора 'IN', - список значений, разделенных запятыми.

Например:

'1'

'>=1'

'>1 AND <=5'

'~ TestStr%'

'!~ TestStr_'

'in (1,2,3,4,5,6) and >100'

'in (Str1,Str2,Str3)'

 

Грид также позволяет отображать выпадающий список STFilter’а в ячейках заголовка. Для активизации этого режима уставовите свойство STFilter.Location в stflInTitleFilterEh. Чтобы сформировать строку фильтрации используйте пункт меню выпадающего списка ‘(Custom…)’ или отметьте галочками необходимые значения. Глобальная переменная DBGridEhShowInTitleFilterBox содержит комбинацию клавиш для открытия выпадающего списка значений фильтрации. По умолчанию оно содержит комбинацию клавишь 'Ctrl-T'.

 

Когда грид поключен к MemTableEh, то список уникальных значений в столбе формируется автоматически. Кроме того, список формируется с учетом наложенного фильтра в других колонках. Чтобы сформировать список значений и команд для фильтрации для других типов DataSet’ов используйте следующие события и методы: События - TDBGridEh.OnFillSTFilterListValues, TColumnEh.OnFillSTFilterListValues, TDBGridEhCenter.OnFillSTFilterListValues или перепешите медот TDatasetFeaturesEh.FillSTFilterListDataValues и зарегистрируйте новый класс зваимодействия грида и датасета TMyDatasetFeaturesEh.

 

Каждый раз при необходимости заполнить выпадающий список StFilter’а грид вызыват событие OnFillSTFilterListValues, которое имеет тип

TDBGridEhFillSTFilterListValuesEvent = procedure(Sender: TCustomDBGridEh; Column: TColumnEh; Items: TStrings; var Processed: Boolean) of object;

Это событие обявленно в классах TDBGridEh, TColumnEh, TDBGridEhCenter.

Каждый элемент списка Items должен состоять из двух значений: Строки Items[i] и объекта Items.Objects[i]. Элементы объектного типа должны наследоваться от типа TPopupListboxItemEh и должны быть созданы глобально. В модуле DBGridEh уже предопределены следующие глобальные переменные

PopupListboxItemEhSortAsc: TPopupListboxItemEhSort;

// Элемент списка отображает значок сортировки Asc и выполняет сортировку по возрастанию.

PopupListboxItemEhSortDes: TPopupListboxItemEhSort;

// Элемент списка отображает значок сортировки Des и выполняет сортировку по убыванию.

PopupListboxItemEhLine: TPopupListboxItemEhLine;

// Элемент списка отображает горизонтальную линию. При выборе не выполняет никаких действий.

 

PopupListboxItemEhClearFilter: TPopupListboxItemEhSpec;

PopupListboxItemEhAll: TPopupListboxItemEhSpec;

PopupListboxItemEhEmpties: TPopupListboxItemEhSpec;

PopupListboxItemEhNotEmties: TPopupListboxItemEhSpec;

PopupListboxItemEhDialog: TPopupListboxItemEhSpec;

PopupListboxItemEhApplyFilter: TPopupListboxItemEhSpec;

 

PopupListboxItemEhData: TPopupListboxItemEhData;

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

 

В событии вы можете вызвать обработчик события по умолчанию TDBGridEh.DefaultFillSTFilterListValues(Column: TColumnEh; Items: TStrings)

TDBGridEh.DefaultFillSTFilterListCommandValues(Column: TColumnEh; Items: TStrings)

TDBGridEh.DefaultFillSTFilterListDataValues (Column: TColumnEh; Items: TStrings)

В следующем примере в коде события грида OnSTFilterListValues удаляются элементы выпадающего списка, выполняющие сортировку:

procedure TForm1.DBGridEh1FillSTFilterListValues(Sender: TCustomDBGridEh;

Column: TColumnEh; Items: TStrings; var Processed: Boolean);

var

Index: Integer;

begin

Sender.DefaultFillSTFilterListValues(Column, Items);

Index := Items.IndexOfObject(PopupListboxItemEhSortAsc);

if Index >= 0 then

Items.Delete(Index);

Index := Items.IndexOfObject(PopupListboxItemEhSortDes);

if Index >= 0 then

Items.Delete(Index);

Processed := True;

end;

 

На текущий момент библиотека умеет заполнять список уникальных значений колонки только для датасета типа TMemTableEh. Для заполнения уникальных значений при подключении грида к другокму датасету перепишите функцию TDatasetFeaturesEh.FillSTFilterListDataValues и по необходимости зарегистрируйте новый класс, наследуемый от TDatasetFeaturesEh. Читайте про класс TDatasetFeaturesEh в документации к EhLib и EhLibMTE.Pas.

 

В TDBGridEhCenter добавлены свойства STFilterDefaultStringOperator, STFilterDefaultNumberOperator, STFilterDefaultDateTimeOperator, STFilterDefaultBooleanOperator. Используйте эти свойства, чтобы задать оператор по умолчанию, который будет использоваться, когда в строке фильтрации STFilter явно не прописывается оператор. Операторы можно задать отдельно для строковых полей, числовых полей, полей типа DateTime и логических полей.

Настройка заголовков grid'а.

– Конец работы –

Эта тема принадлежит разделу:

Библиотека компонент EhLib - Руководство разработчика

На сайте allrefs.net читайте: "Библиотека компонент EhLib - Руководство разработчика"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: TDBGridEh и вертикальный scrollbar.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Редакция: 1.52
(Изменения и дополнения по сравнению с редакцией 1.5 отчечена красным цветом) Оглавление Введение. 4 Установка. 8 Распаков

Объект TPrinterPreview
Объект TPrinterPreview (невизуальный) позволяет записывать данные для печати в буфер для последующего вывода их на экран либо на принтер. TPrinterPreview имеет все функции и свойства объекта TPrint

TPropStorageEh, TIniPropStorageManEh, TRegPropStorageManEh Использование TPropStorageEh
Компоненты реализуют технологию сохранения свойств компонент формы в/из хранилища, такого как, например, ini-файл или реестр.   TMemTableEh

Распаковкаархива
Распакуйте архив EhLib. После распаковки вы получите следующие папки: Папки 'EhLib - source include' версии: BCB4 Содержит фа

Наиболее часто встречающиеся проблемы при инсталляции и методы их решения.
Проблема: Решение: Во время компиляции Delphi выдает следующую ошибку: "Unit AAA compiled with different version of unit BBB"

Использование компоненты TDBGridEh
Общие понятия о TDBGridEh, TDataLink и TDataSet. Следующий раздел распространяется как на компонент TDBGridEh так и на TDBGrid. Компонент TDBGrid

Работа с TDBGridEh в режиме разработки.
TDBGridEh состоит из строк и столбцов. Каждая строка это запись TDataSet’а. Каждый столбец это поле TDataS

Панель детальной информации для записи – RowDetailPanel.
Подствойства свойства RowDetailPanel позволяют вам создавать и настраивать панель детальной информации для

Published
Active: Boolean; позволяет активизоровать панель детальной информации. При активизации панели, напротив каждой записи появляется значок '+', нажимая на которую можно раскрывать/скрывать панель дета

Режим RowPanel
Грид поддерживает режим, когда ячейки записи грида могут быть расположены друг под другом и иметь индивиду

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

Комплексные заголовки.
TDBGridEh позволяет создавать заголововок над несколькими столбцами. See Figure: Для этого надо установить свойство DBGridEh.UseMultiTitle в True и заполнить заголовки полей (TFie

Колонтитулы и итоговые значения.
TDBGridEh позволяет отображать специальную строку (колонтитул) либо строки в нижней части grid'а. Используйте свойство FooterRowCount для определения числа строк колонтитулов в grid'е и свойства Fo

Отображение картинок в ячейках данных, в зависимости от значений полей.
TDBGridEh позволяет отображать картинки из компонента TImageList, в зависимости от значений полей. Для этого нужно заполнить список значений полей в свойстве Column.KeyList (каждое значение в отдел

Индивидуальная высота каждой записи.
TDBGridEh может работать в режиме, когда он автоматически выставляет высоту каждой строки в зависимости от количества текста в ячейке или размера графического изображения (Если включен режим DrawGr

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

Значения по умолчанию для свойств столбцов.
Для установки значений по умолчанию для свойств столбцов используйте свойство TDBGridEh.ColumnDefValues. Вновь создаваемые столбцы получат свойства из ColumnDefValues и будут хранить их до первого

Столбец с простыми lookup-значениями.
Вы можете отображать в столбце другой текст, зависящий от значения поля. Используйте свойства KeyList и PickList. KeyList содержит значения, которые сохраняются в поле, а PickList - в соответствующ

Цвет и фонт текстового редактора по месту.
Редактор получает цвет и фонт из цвета и фонта ячейки. Ячейка получает цвет и фонт из столбца и в событии OnGetCellParams. Редактор автоматически устанавливает многострочный режим если высота строк

Инкрементный поиск
TDBGridEh позволяет пользователям совершать специальный "инкрементный" поиск в столбце grid'а. Когда пользователь входит в режим инкрементного поиска, он может набирать символы и grid буд

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

Сохранение и восстановление макета сетки и колонок в/из реестра либо ini-файл.
В TDBGridEh есть набор методов для сохранения и восстановления макета сетки и колонок в/из реестра либо ini-файл: RestoreColumnsLayout - Восстановление порядка следования столбцов, ширины

Мастер/дитэил отношения.
Мастер/дитэил отношение – это режим работы двух датасетов при котором все видимые записи одного датасета (DetailDataSet) всегда соответствуют одной записи другого датасета (MasterDataSet). При движ

Режим хранения записей в виде дерева (TreeView).
В режиме дерева TMemTableEh создает объекты-узлы (типа TMemRecViewEh) для каждой записи внутреннего массива записей. Объект-узел имеет ссылку на запись (свойство Rec) и ссылку на список подузлов (N

Работа с полями типа AutoIncrement
TMemTableEh имеет объект AutoIncrement со свойствами InitValue и Step для работы с полями у которых значения генерируется автоматической последовательностью чисел. У таких полей свойство TFIeld. Au

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

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

Создание/удаление таблиц в памяти в режиме ‘stand-alone’.
MemTableEh позволяет создавать внутренний массив записей в режиме Design-time и в режиме Run-time. Прежде, чем создавать массив, Вы должны задать свойства компонента, для определения структуры поле

Работа с компонентом в режиме ‘with datadriver’.
Режим ‘with datadriver’ работает, когда присвоено свойство TMemTableEh.DataDriver. При активизации датасета внутренний массив данных создается автоматически при активизации MemTableEh’а. Структура

Отложенные обновления (CachedUpdates).
TMemTableEh может работать в режиме оперативных или отложенных обновлений. Режим обновления определяет, когда будет посылаться информация об измененных записях в компонент TDataDriverEh (при этом T

Поиск в TMemTableEh
Вы можете осуществлять поиск в TMemTableEh используя следующие методы:   Locate Метод locate перемещает курсор на первую строку, удовлетв

With CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver','P']), loPartialKey);   Locate использует самый быстрый из возможных методов поиска. Если столбцы в поиске проиндекс

Быстрый доступ к значениям записи.
Для доступа к значениям полей конкретной записи в стандартном DataSet’е необходимо вначале перейти на нужную запись. Это не всегда удобно т.к. переход на запись методами MoveBy, RecNo, Bookmark акт

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

Работа с TMemTableEh в период разработки.
В период разработки двойной щелчок на компоненте открывает окно управлением компонентом – TMemTableFieldsEditor. В нем можно: Создавать поля (компоненты TField) для TMemTableEh. З

Компонент TDataDriverEh.
TDataDriverEh - это поставщик данных в TMemTableEh и обработчик изменений от TMemTableEh. TDataDriverEh это простейший поставщик данных, он является посредником между TMemTableEh и другим DataSet’о

Компонент TSQLDataDriverEh.
TSQLDataDriverEh это универсальный драйвер обработки данных, взаимодействующих с сервером посредствам языка SQL. TSQLDataDriverEh содержит пять объектов типа TSQLCommandEh: SelectCommand, DeleteCom

Свойство TXXXDataDriverEh.SpecParams.
Cвойство SpecParams содержит список параметров и значений. TXXXDataDriverEh используют их при выполнении SQL выражений. Значение каждого параметра должно храниться в отдельной строке в формате ‘ИМЯ

Динамическое формирование SQL выражений при обновлении данных.
TSQLDataDriverEh позволяет формировать Insert, Update и Delete выражения динамически перед посылкой запроса на сервер. Это полезно когда таблица содержит много записей а изменения были только в нес

TSQLDataDriverEh или TXXXDataDriverEh, что выбрать для работы.
Как TSQLDataDriverEh так и один из компонентов TBDEDataDriverEh, TIBXDataDriverEh, TDBXDataDriverEh и TADODataDriverEh (будем в дальнейшем называть их TXXXDataDriverEh) позволяют работать с БД без

Работа с TSQLDataDriverEh и TXXXDataDriverEh в период разработки.
Двойной щелчок на компоненте TSQLDataDriverEh и TXXXDataDriverEh открывает окно диалога редактирования TSQLDataEditWin. В период разработки TSQLDataDriverEh или TXXXDataDriverEh независимо от того

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги