Задержка "разворачивания"

  • Автор темы Автор темы ????
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
?

????

Доброе время суток!

Есть одна программа IDE для БД написанная (почти :) ) на BCB 5. Главное оно можно разделить на 2 части вертикально:
левое статическое поле - TreeView с ~2000 записями с уровнем вложенности 4
правое поле - DBGrid, в который подгружаю данные в зависимости от выбранного узла в TreeView (на самом верхнем уровне ~100.000).

Всё прекрано работает, но есть одно но - когда объём данных для DBGrid 20.000 и выше, становится заметно "подтормаживание", т.е. при быстром перемещении по узлам TreeView обработчик перемещения сразу обращается к базе и пока база не обработает запрос, пермещение не производится. Всё это терпимо, но хочу исправить на более правильный (как мне кажется) вариант - при пермещении по узлам обработчик лезет в базу только если мы задержались на узле некоторое время.

Может кто-то делал что-то подобное?
Пример того, что я хочу сделать можно посмотреть на примере "Главного меню" (что на кнопке <ПУСК> в винде). Ведя по менюшке мышой вложенные меню разворачиваются не сразу, а с задержкой.

З.Ы. Язак, средства, ОС... реализации не важны - важен алгоритм и принцип.
 
Задача стандартная для баз данных при организации мастер-детаил. Решение может быть много, я использую всегда следующее:

Код:
В OnChange TreeView
XXXTimer.Enabled := False;
XXXTimer.Enabled := True;

Код:
В OnTimer таймера:
XXXTimer.Enabled := False;
<Ваши операции селекта>

Как работает: При перемещении по дереву запускается таймер на событие которого происходит Селект к базе. У Таймера есть время реакции... Если вы за это время перешли ещё на одну вершину, то таймер перезапускается и селекта не происходит. Как только вы замерли на какой-то вершине происходт событие таймера и выполняется запрос.
Интервал у таймера у меня обычно 50 милисекунд, выставить можно по желанию...

Если чего не понятно спрашивайте дальше...
 
Barmutik
Сэнькс, попробую.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab