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

Тема в разделе "Delphi - Система", создана пользователем ????, 15 окт 2004.

Статус темы:
Закрыта.
  1. ????

    ???? Гость

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

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

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

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

    З.Ы. Язак, средства, ОС... реализации не важны - важен алгоритм и принцип.
     
  2. Barmutik

    Barmutik Гость

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

    Код (Text):
    В OnChange TreeView
    XXXTimer.Enabled := False;
    XXXTimer.Enabled := True;
    Код (Text):
    В OnTimer таймера:
    XXXTimer.Enabled := False;
    <Ваши операции селекта>
    Как работает: При перемещении по дереву запускается таймер на событие которого происходит Селект к базе. У Таймера есть время реакции... Если вы за это время перешли ещё на одну вершину, то таймер перезапускается и селекта не происходит. Как только вы замерли на какой-то вершине происходт событие таймера и выполняется запрос.
    Интервал у таймера у меня обычно 50 милисекунд, выставить можно по желанию...

    Если чего не понятно спрашивайте дальше...
     
  3. ????

    ???? Гость

    Barmutik
    Сэнькс, попробую.
     
Загрузка...
Похожие Темы - Задержка разворачивания
  1. Gemini
    Ответов:
    10
    Просмотров:
    1.333
  2. deeeman
    Ответов:
    2
    Просмотров:
    1.165
Статус темы:
Закрыта.

Поделиться этой страницей