Ehlib, знайомство з tdbgrideh
TDBGridEh не зберігає дані в собі, він тільки відображає дані набору даних TDataSet через об'єкт TDataLink. Кожен компонент для зв'язку з даними TDataSet'а має внутрішній об'єкт TDataLink. Ви можете підключити TDBGridEh до dataset'у використовуючи властивість DataSource. Якщо ви вже використовували компонент TStringGrid, то могли помітити що дані, які відображаються в TStringGrid і в TDBGridEh дуже схожі, але механізми, які використовуються для відображення даних в TStringGrid і в TDBGridEh абсолютно різні. У TStringGrid загальна кількість рядків сітки дорівнює кількості в масиві рядків даних, тоді як в TDBGridEh (і TDBGrid) число рядків завжди але лише числа видимих рядків. І хоча вертикальний scrollbar може відображати позицію щодо загального числа записів в dataset'е, він бере дані про позицію не з масиву осередків grid'а, а безпосередньо з dataset'а (DataSet.RecNo). TDataSet не дозволяє нам працювати з даними як з масивом даних, напр. ми не можемо швидко отримати значення поля якоїсь записи. Крім того, деякі типи dataset'ов не мають поняття номера запису (DataSet.RecNo). У таких dataset'ах ми можемо тільки знати, коли ми знаходимося на початку або наприкінці dataset'а або десь між ними і в цьому випадку DBGrid показує вертикальний scrollbar тільки в 3 позиціях (В TDBGridEh для роботи з такими датасета треба активізувати об'єкт SumList ). Для отримання можливості відображення декількох записів одночасно, об'єкт TDataLink використовує буфер записів (record buffer window) з швидким доступом тільки для читання. DBGrid використовує цю можливість datalink'а і встановлює розмір record buffer window дорівнює кількості можливих видимих рядків grid'а. DataLink не дозволяє визначати з якою записи в DataSet'е, заповнюється цей буфері. DataLink сам прокручує вміст record buffer window коли ми подорожуємо по dataset'у (Next, Prior) таким чином, щоб активна запис завжди залишалася всередині record buffer window. У цьому причина, чому активна запис змінює позицію, коли користувачі змінюють позицію scrollbar'а за допомогою миші.
TDBGridEh і вертикальний scrollbar.
При роботі різними типами 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, = 1 ","> 1 AND | ! = |> | = |- Головна /
- Наші матеріали /
- EhLib, знайомство з TDBGridEh
Були ці відомості корисними? Поділися їй