
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.04.2007, 13:54
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
Добрый день У меня есть датасет (TSmartQuery, ODAC) у него на обработчике OnAfterScroll висит определенный нужный код. Так же есть операции, которые требуют полного прохода Next'ом по датасету. При этом обработчик срабатывает каждый раз, тратится много времени, хотя мне это не нужно, мне достаточно что бы этот обработчик сработал в конце массовой операции. Вопрос: Можно ли штатными средствами заблокировать (отключить) этот обработчик на время прохода по датасету? Для контролов я делаю DisableControls, но на выполнение этого обработчика это не влияет. Ничего умнее кроме следующих методов я не придумал. 1. Перед началом массовой операции запомнить обработчик и прописать в него nil, а после операции восстановить; 2. Городить свои блокировки в виде выставления глобального флажка. Хотя первый способ достаточно эффективен и красив, интересует наличие стандартных средств для решения этой проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2007, 14:31
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
Artemiy интересует наличие стандартных средств для решения этой проблемы. Ровно такие, какие вы перечислили... Artemiy Так же есть операции, которые требуют полного прохода Next'ом по датасету. ИМХО : Наверняка, от такой операции можно избавиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2007, 14:31
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
Первой строкой процедуры AfterScrool должна быть: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2007, 14:34
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
А вообще непонятно зачем делать в AfterScroll единичную операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2007, 14:48
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
ozА вообще непонятно зачем делать в AfterScroll единичную операцию. В AfterScroll выполняется код ответственный за отслеживание выделенного объекта: реализована сложная система выделения, как в нортон коммандере, у объекта есть ИД, тип, у формы есть массив выделенных объектов. По этой структуре потом определяется доступность актионов и типы возможных операций над выделенными объектами, производится раскраска грида. Ска ИМХО : Наверняка, от такой операции можно избавиться... От таких операций избавится нельзя, потому что это все операции вида: выделить все (а значит пройтись по датасету и занести в структуру ИДы и типы), инвертировать, выделить по значению и т.д. ozПервой строкой процедуры AfterScrool должна быть: Код: plaintext 1. 2. 3. Такой вариант расмотрен, ладно он все равно медленней чем с обнулением и восстановлением обработчика. Вообщем спасибо, вопрос исчерпан, остается как есть с обнулением обработчика, меня это решение устраивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.04.2007, 15:12
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
Ну, примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.09.2007, 01:24
|
|||
|---|---|---|---|
|
|||
DataSet.OnAfterScroll и Next |
|||
|
#18+
можно поместить код процедуры в AfterOpen, а в конце присвоить ивенту: ADOQueryXXX.AfterScroll:=ADOQueryXXAfterOpen; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.09.2007, 13:03
|
|||
|---|---|---|---|
DataSet.OnAfterScroll и Next |
|||
|
#18+
Вообще-то такие вещи в TDataSource.OnDataChange надо помещать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2037637]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
188ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 504ms |

| 0 / 0 |
