Data-aware компоненты для редактирования значений из БД, принцип их работы. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Data-aware компоненты для редактирования значений из БД, принцип их работы.



Принцип работы

 

TDataLink, является базовым классом для объекта, используемого компонентами для работы с базами данных и осуществляющий функцию связи с набором данных DataSet (TTable или TQuery). DataLink используется DataSet'ом для информирования всех БД-компонентов об изменении записи, о необходимости обновления записи перед помещением ее в базу данных, о том, что DataSet сменила свое состояние на активное или неактивное, и т.д.. И наоборот, DataLink используется БД-компонентами для обновления DataSet, например, его статуса.

 

DataSet может быть связан с несколькими источниками данных DataSource, каждый DataSource может быть связан с несколькими DataLink, и каждый DataLink может быть связан с единственным БД-компонентом. В большинстве случаев, отдельный компонент использует только один DataLink, тем не менее, имеются компоненты, такие как, например, DBLookupList или DBLookupCombo, использующих два DataLink. В этих элементах управления первый DataLink используется для чтения данных из lookup DataSet, второй DataLink используется для записи этих данных (при их изменении) во второй имеющийся DataSet. Каждый DataSet поддерживает связанный с ним список DataSource и, аналогично этому, каждый DataSource поддерживает список связанных с ним Datalink'ов.

 

В момент, когда DataSet должен уведомить БД-компоненты о наступлении какого-то события, например, при изменении пользователем какой-либо записи, он рассылает это сообщение всем DataSource, находящимся в его списке. Каждый DataSource затем повторяет этот процесс и рассылает сообщение всем Datalink'ам, находящимся в его списке. Другими словами, связь не зависит от элемента управления, при этом логика программирования должна отслеживать передачу сообщения каждому элементу управления, пользующемуся услугами DataLink и изолировать только те события, на которые элементу необходимо отреагировать. Связывая компонент с набором данных другим способом, мы не получим в свое распоряжение столько управляющих функций, гибкости и мониторинга, сколько даст нам один DataSet, соединенный с помощью DataLink.

 

Кроме функции обеспечения поддержания коммуникационного канала между DataSet и ДБ-компонентами, DataLink также обеспечивает управление буфером для каждого компонента. Большинство элементов управления, таких как, например, TDBEdit, отображающий только отдельно взятую запись, буферизация не требуется, тем не менее, таким компонентам, как, например, TDBGrid и TDBLookupList, отображающим множество записей, буферизация нужна. Физически DataLink данные не буферизирует, эта функция выполняется DataSet. Всесто этого DataLink поддерживает виртуальный буфер, который, в сущности, небольшое "окно" в физический буфер DataSet. Размер этого виртуального буфера может быть установлен с помощью свойства DataLinks BufferCount, а количество записей, реально в нем хранимых, с помощью свойства RecordCount.

 

(тут как бы уже в принципе сказано все о чем он говорил на консультации, дальше добавлено то, что еще нашла)

 

TDataLink и его производные

TDataLink

TTableDataLink

TFieldDataLink

TQueryDataLink

TNavDataLink

TDataSourceLink

TListSourceLink

TGridDataLink

TDBCtrlGridLink

 

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

Ни TDataLink, ни его производные в Палитре компонент Delphi недоступны. Они порождены от TPersistent, а не от TComponent. Прикладные программисты никогда не беспокоятся о TDataLink, но если вы являетесь разработчиком компонентов, то TDataLink играет весьма существенную роль. При реализации чувствительного к данным компонента наиболее типичен следующий сценарий: компонент будет иметь приватную или защищенную переменную, объявленную с типом TDataLink или одним из его производных. Такая переменная инициализируется в конструкторе чувствительного компонента, где создается соответствующий объект TDataLink и присваивается переменной. (Кроме того, полям обработчика событий TDataLink в конструкторе присваиваются соответствующие процедуры обработчиков событий. Естественно, нельзя забывать о разрушении всей конструкции в деструкторе чувствительных к данным компонентов.)

Существуют два основных вида связей данных: один представляет всю запись (или множество записей) в базовом TDateSet, а другой — указанное поле в текущей записи базового TDataSet. Первый вид используется для реализации чувствительных компонентов, которые взаимодействуют с целыми записями (подобно TDBGrid), а второй вид — для реализации чувствительных к данным компонентов, представляющих одиночное поле (подобно TDBEdit).

 

TDataLink

Класс TDataLink представляет собой базовый класс для всех связей данных. На рисунке 22-1 показаны генеалогия TDataLink и его потомков. В таблице 22-1 перечислены свойства и методы, которые реализованы TDataLink.

РИСУНОК 22-1 Генеалогия TDataLink и их потомки

http://www.rsdn.ru/article/delphi/dbaware.xml

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



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 276; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.70.131 (0.005 с.)