|
Дождаться окончания fetch (Delphi)...
|
|||
---|---|---|---|
#18+
Всем привет! Вопрос давнишный, но все же нерешенный, снова возымел актуальность в одном из проектов с использованием Firebird и Delphi (+ Fibplus). Что имеем: типичная связка фибдатасетов мастер-детейл, есть два грида Ehlib для их визуализации. В родительском гриде включена локальная сортировка по полю "дата\время последних изменений", по возрастанию. Мои действия: 1) Поскольку датасеты оба закрыты, меняю некоторые параметры в родительском датасете, открываю его. 2) После открытия первый грид начинает отображать родительскую таблицу. Далее, следует команда Last, дабы курсор указывал на самую последнюю запись внизу. 3) Таким образом, получается что для родительской таблицы происходит полный fetch. Параллельно, пока было перемещение курсора в самый конец, дочерний грид тоже показывал постоянно меняющийся контент (что логично и понятно). Теперь сам вопрос, вытекающий из п.3 - как сделать так, чтобы на время перемещения курсора после открытия родительского датасета с первой позиции до последней позиции, дочерний грид не показывал контент. Включение показа контента дочернего грида должно быть строго после достижения последней позиции в первом гриде. Первое, что приходило на ум - открывать дочерний датасет вручную после команды Last. Однако, поскольку работает она асинхронно, то и ждать от нее результата бессмысленно. Использование WaitEndMasterScroll + WaitEndMasterInterval вроде косвенно помогли бы, но в этом случае я ведь не знаю точно значение через которое завершится ы родительском гриде скроллинг до последней позиции... В общем, надеюсь понятно объяснил. Если у кого есть решение - поделитесь, пожалуйста) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2016, 14:27 |
|
Дождаться окончания fetch (Delphi)...
|
|||
---|---|---|---|
#18+
SoftologicПараллельно, пока было перемещение курсора в самый конец, дочерний грид тоже показывал постоянно меняющийся контент (что логично и понятно). Нет, это нелогично и непонятно. Обычно такого не происходит, поскольку на время вызова Last либо вызывается DisableControls, либо оно вообще происходит одним шагом. Кто-то должен быть совершенно сумасшедшим, чтобы реализовать Last через While not eof do next. Softologicработает она асинхронно Опять же: обычно Last не возвращается пока не выполнится, то есть работает таки совершенно синхронно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2016, 14:42 |
|
Дождаться окончания fetch (Delphi)...
|
|||
---|---|---|---|
#18+
Все, разобрался. Изначально, не договорил про то, что в некоторых случаях, после прокрутки до последней записи создавалась новая запись. А между ними стояла "лишняя" команда принудительного открытия дочернего датасета. Таким образом получалось, что и возникало это "промаргивание". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2016, 14:44 |
|
Дождаться окончания fetch (Delphi)...
|
|||
---|---|---|---|
#18+
Softologicнавсякий случай, а со свойством фибовского датасета dcWaitEndMasterScroll вы знакомы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2016, 19:20 |
|
Дождаться окончания fetch (Delphi)...
|
|||
---|---|---|---|
#18+
S.G.Softologicнавсякий случай, а со свойством фибовского датасета dcWaitEndMasterScroll вы знакомы? Знаком и использую конечно. Вообще перечитав первый пост, понял что несколько неправильно объяснил. Сортировка на самом деле не локальная, а серверная использовалась, ибо использование Last с локальной сортировкой как то несовсем уместно. Правильнее для локальной сортировки использовать гридовый метод DefaultApplySorting. Но в итоге все заработало как положено. Использую для родительского датасета DisableControls + EnableControls, для дочернего WaitEndMasterScroll + WaitEndMasterInterval. Всем спасибо, тема закрыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2016, 21:19 |
|
|
start [/forum/topic.php?fid=40&msg=39291459&tid=1562016]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 429ms |
0 / 0 |