![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Просмотр TDataSet без фиического перемещения курсора [D5, D6]
Dmitrey © (2002-10-16 09:11:00)Нужно во время редактирования записи пользователем узнать значение Record в TDataSet перед и после редактируемой записи.
Например
Record1(Field1,Field2)
Record2(Field1,Field2)
Record3(Field1,Field2)
Record4(Field1,Field2)
Во время редактирования пользователем Record2 нужно знать что находится в Record1 и Record3.
ЮЮ (2002-10-17 04:34:00) [1]У DBGrida есть буфер DataLink, где хранятся строки, отображаемые в данный момент в Gride(он ведь тоде отрисовывает несколько записей, не меняя текущей!!!). Вот там и можно получить поля предыдущей и последующей записей. Проблема останется с первой и последней видимыми записями в гриде. Прийдется принудительно скроллировать Grid при попытке редактирования таких записей.
И главное, в стандартном DBGride DataLink - protected. Поэтому следует использовать RxDBGrid или DBGridEh.
Jeer (2002-10-16 10:27:00) [2]>Dmitrey (16.10.02 10:04)
>Соответствено при простом скролинге эта эта связка будет тормозить
Делае OnBeforeEdit.
User даже не заметит торможения.
Sergey13 (2002-10-16 10:23:00) [3]2Dmitrey (16.10.02 10:04)
>Нужно что-бы работе пользователя с DBGRID (записей порядка 200),
>во время редактирования я мог узнать значение предыдущей и >последующей после редактируемой записи.
Попробуй в качестве второго набора таблицу в памяти (вроде RxMemoryData) - один экземпляр на все датасеты. Перед просмотром грида скопируй в нее текущий датасет и ползай по нему как хочешь. На таких объемах(200 записей) тормоза и потеря памяти будут минимальными.
vads (2002-10-16 10:09:00) [4]Если полей в записи немного то можно из значения поиметь через Lookup
Dmitrey (2002-10-16 10:04:00) [5]Нужно что-бы работе пользователя с DBGRID (записей порядка 200),
во время редактирования я мог узнать значение предыдущей и последующей после редактируемой записи.
To Jeer:Если поцерится на эти события то для получения значения следующей после редактируемой записи придется делать дополнительное перемещение курсора.Соответствено при простом скролинге эта связка будет тормозить.
Jeer (2002-10-16 09:58:00) [6]Тогда, как скзано уже, только второй набор.
Ну либо пиши свои методы доступа к локальному набору, что совсем плохо..
Jeer (2002-10-16 09:56:00) [7]>Johnmen © (16.10.02 09:32)
>Узнай перед редактированием...
Дополнение - узнавай перед редактированием по OnAfterScroll или OnBeforeEdit.
Johnmen (2002-10-16 09:52:00) [8]А что же тогда тебе надо ? По сути ?
Dmitrey (2002-10-16 09:49:00) [9]Второй набор не успользую по следующим причинам:
- такая ситуация не в одном месте
- перерасход памяти
- сложность синхронизации после операций (Insert,Delete,Filter,Sort,Index)
To Johnmen : по тем же причинам
Johnmen (2002-10-16 09:32:00) [10]Узнай передредактированием...
Anatoly Podgoretsky (2002-10-16 09:20:00) [11]Почему юы не использовать второй набор