Реферат Курсовая Конспект
Библиотека компонент EhLib - Руководство разработчика - раздел Программирование, Библиотека Компонент Ehlib...
|
Библиотека компонент EhLib 5.
Руководство разработчика.
EhLib Team
Год
Введение
Библиотека EhLib включает в себя компоненты и классы для Borland Delphi версии 5, 6, 7, 8, 2005, 2006, 2007 и Borland C++ Builder версии 5, 6 и предназначена для расширения функциональности клиентской части приложений, работающей с БД: вывод, печать и занесения данных конечным пользователем.
TDBGridEh Использование TDBGridEh
Компонент TDBGridEh обеспечивает полную функциональность TDBGrid и добавляет некоторые новые возможности, такие как:
Позволяет выделять записи, столбцы и прямоугольные области.
Копировать/вставлять выделенные области в/из буфера обмена.
Позволяет выводить специальные заголовки столбцов, которые могут объединяться над несколькими/всеми столбцами.
Позволяет выводить нижний колонтитул (footer), для отображения сумм/количеств/др. значений полей.
Позволяет автоматически подгонять размеры столбцов, чтобы ширина всего грида равнялась ширине видимой области окна грида.
Позволяет изменять высоту строк данных и заголовков.
Позволяет автоматически переносить текст и увеличивать высоту заголовке столбца чтобы уместить весь текст заголовка.
Заголовок столбца может вести себя как кнопка и, опционально, иметь маркер сортировки.
Позволяет автоматически менять маркеры сортировки и сортировать данные в наборе данных (DataSet'е).
Позволяет отсекать длинный текст с отображением многоточия.
Позволяет в выпадающем Lookup списке отображать несколько полей.
Позволяет инкрементный поиск в lookup-полях.
Позволяет закреплять для прокрутки несколько первых столбцов сетки (FrozenCols).
Позволяет выводить выпадающий календарь (поддерживается для полей типа TDateField и TDateTimeField).
Позволяет отображать картинки из TImageList зависящие от значения поля.
Позволяет прятать и отслеживать положение вертикальных и горизонтальных полос прокрутки.
Позволяет скрывать столбцы.
Позволяет отображать 3D-рамку для закрепленных разных типов столбцов (строк).
Позволяет отображать memo-поля.
Позволяет иметь многострочный редактор по месту.
Позволяет выводить пропорциональную полосу прокрутки для dataset'ов не поддерживающих IsSequenced режим.
Позволяет автоматическое отображение checkbox'ов для boolean-полей. Позволяет отображать checkbox'ы для других типов полей.
Имеет процедуры для сохранения/восстановления свойств (видимые столбцы, порядок следования столбцов, их ширины, порядок сортировки, высоту столбца) в/из реестра или INI-файла.
Позволяет отображать подсказки (ToolTips) для текста, не помещающегося в ячейку.
Позволяет экспортировать данные в Text, Csv, HTML, RTF, XLS и внутренний форматы.
Позволяет импортировать данные из Text и внутреннего форматов.
Позволяет выводить под заголовком специальную строку для ввода выражения, применяемое для фильтрации данных.
Может сортировать данные в различных dataset'ах.
Может фильтровать данные в различных dataset'ах.
TDBLookupComboboxEh Использование edit-контролов
Обеспечивает полную функциональность TDBLookupCombobox и добавляет несколько новых возможностей, таких как:
Может иметь flat-стиль.
Позволяет присваивать значения как свойству KeyValue так и свойству Text.
Позволяет присваивать данные свойству Text, не содержащится в списке данных (когда Style = csDropDownEh).
Позволяет хранить данные в KeyValue и Text как не влияющее друг на друга значения. Работает когда свойства KeyField, ListField, ListSource, DataField и DataSource пусты.
Выпадающий список может:
Отображать заголовки,
Изменять размеры,
Автоматически устанавливать ширину как сумму DisplayWidth полей в списке (Width = -1),
Автоматически выпадать при нажатии текстовую клавишу.
Кнопка редактирования может:
Отображать изображения типа DropDown, Многоточие либо произвольную картинку.
Имеет указанную ширину.
Добавлены события: OnKeyValueChanged, OnButtonClick.
TDBSumList Использование TDBSumList
Предназначен для общего суммирования и подсчета общего количества записей в TDataSet'е с динамическим отслеживанием изменений. Компонент хранит список объектов TDBSum, которые содержат типы групповых операций (goSum, goCount, ...) и имя суммируемого поля.
TPrintDBGridEh Использование TPrintDBGridEh
Компонент TPrintDBGridEh содержит свойства и функции для предварительного просмотра и печати компонента TDBGridEh, и обеспечивает следующие возможности:
Может расширять высоту строки по вертикали при печати, чтобы умещать весь текст.
Может масштабировать grid чтобы уместить его по ширине одной страницы.
Может печатать заголовок grid'а.
Может печатать колонтитулы, в которых вы можете размещать макросы для текущей страницы, текущей даты, текущего времени и/или статичный текст.
Печатать выделенную область grid'а.
Печатать Rich-текст перед и после grid'а.
TPreviewBox
TPreviewBox позволяет создавать настраиваемое в run-time окно предварительного просмотра.
Установка
Нижеследующее описывает установку EhLib под Delphi 6.
Удалите предыдущую или evaluation версию EhLib из Delphi 6 IDE.
Удалите либо перенесите в другую папку следующие файлы для предупреждения пересечения этой и новой версии EhLib (файлы EhLib.bpl, EhLib.dcp либо EhLibXX.bpl, EhLibXX.dcp (если версия 3.X и выше)).
Public
Visible: Boolean Свойство определяет текущее состояние видимости RowDetailPanel. Свойство доступно для чтения и записи.
Для управления отображением панели в гриде существует событие OnCheckRowHaveDetailPanel. Установите параметр события RowHaveDetailPanel чтобы разрешитьзапретить отображение RowDetailPanel для нужной записи.
Для выполнения дополнительных действий перед открытием или после закрытия панели в гриде присутсвуют события OnRowDetailPanelHide и OnRowDetailPanelShow, которые срабатывают при скрытии и отображении панели соответственно.
Чтобы поместить контрол на панель дательной информации в RunTime используйте свойство TDBGridEh.RowDetailPanelControl. Для добавления контролов используйте следующий код:
MyControl.Parent := DBGridEh1.RowDetailPanelControl;
Заголовок как кнопка.
Для того, чтобы заголовки работали как кнопки установите свойство Column.Title.TitleButton в True. Напишите обработчик события OnTitleBtnClick для пределения действия на клик пользователя на ячейке заголовка.
Отображение картинок в заголовках.
Для отображения картинок в заголовках вместо текста, нужно использовать свойство TitleImages TDBGridEh'а и свойство ImageIndex TColumnTitleEh'а.
Значения по умолчанию для свойств заголовков.
Для установки значенией по умолчанию для свойств заголовков используйте свойство TDBGridEh.ColumnDefValues.Title. Эти свойсва будут действовать для свойств всех заголовков до момента изменения аналогичного свойства в заголовке Column.Title.
Настройка колонтитулов grid'а.
Отображение картинок в ячейках данных хранящихся в полях DataSet’а.
TDBGridEh позволяет выводить значение полей TBlobField с типом BlobType = ftGraphic в графическом виде. Для отображения графических данных установите свойство DrawGraphicData в True.
Checkbox'ы для boolean и не-boolean полей.
Grid автоматически отображает checkbox'ы для boolean-полей. Для отображения checkbox'ов для не-boolean полей заполните первую строку свойства Column.KeyList, которая соответствует значению 'checked' checkbox'а, вторая строка - значению 'non checked' и установите свойство Column.Checkboxes в True. Cтрока в KeyList может содержать более одного значения, разделенных точкой с запятой.
Высота строк данных.
Используйте свойства RowHeight и RowLines для определения высоты строк данных. Полная высота строки данных в пикселях равна (RowLines * высота одной строки текста) + RowHeight. Установка RowSizingAllowed в True позволяет менять мышкой высоту строк в run-time.
Для разбивки длинного текста на несколько строк установите Column.WordWrap в True. Текст будет перенесен, если высота строки (Row) больше высоты одной строки текста.
Отображение memo-полей.
Для отображение memo-полей установите DrawMemoText в True.
Изменение настроек шрифта в ячейке и ее цвета.
Свойства TDBGridEh Font и Color описывают шрифт и цвет, используемый для отображения ячейки grid'а.
Свойства Font и Color объекта TColumnEh описывают шрифт и цвет, используемый для отображения ячейки в определенном столбце.
Запрет отображения текстового редактора ячейки.
Используйте свойство колонки TextEditing, чтобы запретить/разрешить отображение текстового редактора в ячейке колонки грида. Запрет/разрешение можно выставлять динамически в зависимости от номера записи в DataSet’е. Для этого используйте событие OnGetCellParams и меняйте свойство параметра Params.TextEditing.
Несколько полей в выпадающем lookup-списке.
Для отображнения нескольких полей в выпадающем lookup-списке для lookup-полей установите в Column.LookupDisplayFields список полей. Точки с запятыми должны разделять множество имен полей. Имя Column.Field.LookupResultField должно присутствовать в списке LookupDisplayFields. Lookup-список с несколькими полями может быть назначен только lookup-полям. Это свойство работает только для полей DataSet'а типа Lookup (TField.FieldKind = fkLookup).
Выпадающий календарь.
Для полей TDateField и TDateTimeField редактор отображает dropdown-кнопку для отбражения выпадающего календаря. Установите Column.ButtonStyle в cbsNone для отключения отображения dropdown-кнопки.
Закрепленная зона.
Закрепленная зона - это набор столбцов в левой части grid'а, который не прокручивается. В отличие от зафиксированных (fixed) столбцов, закрепленные (frozen) столбцы могут получать фокус ввода. Для определения числа непрокручиваемых столбцов задайте свойство FrozenCols.
Горизонтальная и вертикальная полосы прокрутки.
Используйте свойства VertSctollbar и HorzSctollbar для отображения/скрытия вертикальной и горизонтальной полос прокрутки.
Введение в технологию MemTable + DataDriver.
Данная технология предназначена для обеспечения унифицированного способа загрузки табличной информации с сервера на клиент и последующей обработки этих данных на клиенте: редактирования, сортировки, фильтрации и выгрузки измененных данных обратно на сервер. Технология не включает драйверов доступа к серверу.
Технология представлена двумя основными компонента:
TMemTableEh – dataset, который держит все данные в памяти. Его можно рассматривать как массив записей.
Кроме того, он:
Поддерживает специальный интерфейс, позволяющий компоненту DBGridEh просматривать все данные, не перемещая активную запись.
Позволяет закачивать в себя данные из объекта TDataDriverEh (свойство DataDriver).
Позволяет выгружать изменения обратно в DataDriver, оперативно или отложено (в зависимости то свойства CachedUpdates).
Позволяет создавать мастер/дитэил отношения на клиенте (фильтруя записи) или на внешнем источнике (обновляя параметры [Params] и перезапрашивая данные c DetailDataDriver'а).
Позволяет сортировать данные, включая Calculated и Lookup поля.
Позволяет создавать и заполнять данные в design-time и сохранять данные в dfm файле формы.
Позволяет хранить записи в виде дерева. Каждая запись может иметь записи узлы/ветви и сама являться узлом другой родительской записи. Компонент TDBGridEh поддерживает функциональность отображения древовидной структуры этих записей.
Позволяет подключиться к внутреннему массиву другого компонента TMemTableEh (свойство ExternalMemData) и работать с его данными: сортировать, фильтровать, редактировать.
Имеет интерфейс для получения списка всех значений столбца, игнорируя локальный фильтр датасета. TDBGridEh использует это свойство для автоматического формирования списка в выпадающем DropDownBox’е фильтра.
TDataDriverEh – выполняет две задачи:
1. Поставляет данные (записи) в TMemTableEh.
2. Обрабатывает записи, измененные в TMemTableEh (записывает их в другой датасет, или вызывает события для обработки изменений в программе).
Кроме того, имеется несколько компонент наследуемых от TDataDriverEh. Это TSQLDataDriverEh, который содержит в себе пять SQL выражения и параметры для запроса данных, удаления записи, вставки записи, изменения записи, перезапроса записи. TSQLDataDriverEh посылает запросы не сервер, но умеет подготавливать параметры запроса и вызывает глобальное событие, в котором программист может передать SQL выражение на сервер. От TSQLDataDriverEh порождены несколько компонентов, которые сами могут посылать SQL выражения на сервер через соответствующие драйвера доступа к данным. Это TBDEDataDriverEh, TIBXDataDriverEh, TDBXDataDriverEh и TADODataDriverEh.
Компонент TMemTableEh.
Два режима работы компонента TMemTableEh.
Существует два режима работы компоненты TMemTableEh: ‘stand-alone’ и ‘with datadriver’.
Stand-alone’ режим.
В режиме ‘stand-alone’ TMemTableEh работает как ни с чем несвязанный массив данных. Прежде чем работать с данными ‘stand-alone’ TMemTableEh’а необходимо создать внутренний массив данных. Для этого надо создать внешние поля (Fields) или field definitions в TMemTableEh и вызвать функцию CreateDataSet.
With datadriver’ режим.
Режим ‘with datadriver’ работает, когда присвоено свойство TMemTableEh.DataDriver. Внутренний массив данных создается автоматически при активизации MemTableEh’а. Структура полей предоставляется компонентом DataDriver.
ViewScroll
TMemTableEh поддерживает специальный интерфейс, позволяющий компоненту DBGridEh просматривать все данные, не перемещая активную запись. В дельнейшем будем называть такой режим работы ViewScroll.
Использование индексов.
Индексы в TMemTableEh используются для ускорения операций поиска. Они в частности используются при формировании древовидной структуры записей, в процедуре Locate и в MasterDetail отношениях. Шаблон индексов задается в коллекции IndexDefs. TMemTableEh создает индексы на основе шаблона IndexDefs автоматически при создании внутреннего массива данных.
Перетаскивание записей в TMemTableEh при включенном режиме dghRecordMoving.
Включение значения dghRecordMoving в свойство OptionsEh компонента DBGridEh позволяет перетаскивать записи в компоненте TMemTableEh. Кроме того, при активном режиме TreeList, DBGridEh позволяет при перетаскивании менять уровень записи в дереве. Запись перемещается нажатием и перемещением мыши над колонной индикатора записей (при включенном режиме мультиселека записей вначале надо выбрать записи которые надо переместить).
Тип поля TRefObjectField.
Юнит MemTableEh содержит описание и код регистрации нового типа поля – TRefObjectField. TRefObjectField предназначен для хранения указателя на объекты типа TObject и содержит свойство Value типа TObject. При создании поля в период разработки вы можете выбрать его в окне добавления поля по имени ‘RefObjectField’. В программе вы можете создать поле этого типа через свойства объекта FieldDefs, задав в качестве типа поля тип ftUnknown.
Агрегированные поля.
MemTableEh поддерживает обработку агрегированных полей (поля типа TAggregateField). TAggregateField представляет агрегированную величину (такую как SUM, COUNT) в dataset’е. В режиме Design-time используйте Fields Editor, чтобы создать persistent агрегированное роле, которое вы можете привязать к компоненту TDBEditEh или к футеру в TDBGridEh.
Метки записей и переход на запись по метке.
Дополнительно к перемещению с записи на запись в dataset, также бывает полезно, получить маркер (Bookmark) конкретной позиции в dataset’е чтобы потом можно было быстро возвратиться на желаемую запись. TDataSet вводит возможность пометки записей, которая состоит из свойства Bookmark и пяти методов. Реально закладки в TMemTable являются номерами записей (RecNo) в DataSet’е.
Свойство Bookmark.
Свойство Bookmark указывает на текущую закладку на запись. Она указывает на текущую запись. Закладка является строкой, которая идентифицирует текущую закладку. Всякий раз, когда Вы присваиваете это свойство DataSet переходит на запись соответствующую закладке.
Метод GetBookmark
Я не рекомендую пользоваться этим метод, используйте вместо него свойство Bookmark. Детально об этом методе читайте в документации по VCL.
Методы GotoBookmark и BookmarkValid
При вызове GotoBookmark с параметром закладка метод перемещает курсор в dataset’е в позицию определенную закладкой. Перед вызовом GotoBookmark, Вы можете назвать BookmarkValid, чтобы определить действительно ли заклада указывает на одну из записей в DataSet'е. BookmarkValid возвращает True если закладка указывает на запись.
Метод CompareBookmarks
Вы можете вызвать CompareBookmarks, чтобы определить отличается ли закладка на которую Вы хотите перейти, от другого закладки. Если две закладки ссылаются на ту же запись (или если оба нуль), CompareBookmarks возврат 0.
Метод FreeBookmark
Используется в комбинации с GetBookamrk. Я не рекомендую пользоваться этим методом. Детально об этом методе читайте в документации по VCL.
Var
LocateSuccess: Boolean;
SearchOptions: TLocateOptions;
Begin
SearchOptions := [loPartialKey];
LocateSuccess := CustTable.Locate('Company', 'Professional Divers, Ltd.', SearchOptions);
end;
Если Locate находит совпадение, то первая запись, удовлетворяющая критерию поиска становится текущей записью. Locate возвращает True если он находит запись, False если это нет. Если поиск ничего не находит, текущая запись не изменяется.
Реальная мощность Locate начинает действовать, когда Вы хотите найти по нескольким полям и определяете множественные значения поиска. Величины Искомые значения являются переменной типа Variant, что означает что вы можете определить различные типы данных в своих критериях поиска. Для того, чтобы задать несколько полей по которым нужно искать, разделите каждое поле в строке точками с запятой.
Поскольку искомые значения являются набором значений типа Variant, Вы должны либо передать несколько значений как Variant array в качестве аргумента, либо Вы должны сконструировать выражение типа Variant array в коде, используя функцию VarArrayOf. Следующий код иллюстрирует поиск по нескольким столбцам используя список величин поиска и частичное совпадение:
Var
LookupResults: Variant;
Begin
LookupResults := CustTable.Lookup('Company', 'Professional Divers, Ltd.', 'Company;Contact;Phone');
end;
Lookup возвращает значения заданных полей из первой найденной записи. Значения величин имеют тип Variant. Если задано несколько полей, Lookup возвращает массив Variant’ов. Если ни одной записи не находится, Lookup возвращает значение Null.
Подобно, Locate, Lookup использует самый быстрый из возможных методов поиска.
Метод FindRec ищет первую запись, которая соответствует критериям поиска и возвращает номер первой найденной записи. Синтаксис вызова метода совпадает с синтаксисом метода Locate.
При работе MemTableEh в режиме дерева методы Locate и FindRec ищут записи только в узлах которые находятся в открытых (Expanded) ветках. Для поиска во всех узлах и автоматического раскрытия владельцев найденного узла используйте метод MemTableEh.TreeList.Locate.
Метод GotoRec перемещает курсор в позицию запись которой указывает на запись заданную параметром Rec. GotoRec возвращает True если он находит запись, False если это нет.
Копирование данных и структуры из/в внешнего DataSet’а.
TMemTableEh предоставляет следующие методы для копирования данных из/в внешних DataSat’ов в себя:
Метод SaveToDataSet
Копирует свои данные в другой DataSet, указанный в параметре Dest. Если параметр RecordCount > 0, то копирование начинается с текущей записи исходного DataSet’а и копируется не более RecordCount записей. Иначе копируются все записи, начиная с первой. Копирование происходит добавлением новых записей в Dest DataSet.
Метод LoadFromDataSet
Загружает не более RecordCount записей из DataSet’а, указанного в параметре Source. Если RecordCount = -1 то загружаются все записи. Параметр Mode определяет режим загрузки. Значение lmCopy определяет, что перед загрузкой надо удалить все записи. Значение lmAppend определяет что новые записи будут добавлены к старым данным.
Параметр UseIfCachedUpdates указывает, что вновь добавленные записи получат статус usInserted.
– Конец работы –
Используемые теги: Библиотека, компонент, EhLib, руководство, разработчика0.076
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Библиотека компонент EhLib - Руководство разработчика
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов