Форум » Clipper » Помогите реализовать скроллинг таблицы TBROWSE » Ответить

Помогите реализовать скроллинг таблицы TBROWSE

Softlog86: Имеется таблица для просмотра в TBROWSE , обычный DBF-файл. Задача : при первом отображении TBROWSE - установить указатель на определенной записи , а не в самом верху /внизу . Тут всё ясно . Но ситуация в том что если нужная запись находится , например в конце файла , и мы прыгаем на неё , то все записи , находящиеся выше - не отображаются в TBROWSE - тоесть нужно нажать стрелку вверх чтоб таблица скроллировалась ... Нужно чтоб курсор стоял на искомой записи и , например , в нижней части окна TBWROWSE , чтоб видеть что и СВЕРХУ есть данные . ТОесть нехватает команды вроде panLeft ( сдвиг таблицы влево ) или panRigth (сдвиг таблицы вправо) БЕЗ изменения текущего положения курсора - только чтоб таблица двигалась вверх-вниз :

Ответов - 5

petr707: go recno_need skip -delta // число строк обзора (страница вверх) keyboard (chr(K_PGDN)) TBED(..)) // Отображение - сначала нарисует что надо, затем курсор вниз на страницу

Softlog86: Петр ! Вы как всегда вовремя !!!!

petr707: Возможно keyboard нужно немного в другом месте.. И .. возможно, это не я


Sergy: В таблицах, где наиболее актуальные данные находятся внизу (например, отсортированные по дате) - делаю так: GO BOTTOM KEYBOARD (CHR(K_CTRL_PGDN)) DBEDIT(...) Внутри DBEDIT() - нужно повесить обработчик кнопок K_UP, K_DN - чтобы вместо "обычной" реакции выполнялось SKIP или SKIP -1 Тогда курсор будет стоять на месте, а таблица - скроллироваться. Думаю, в Tbrowse() есть аналогичные реакции.

Softlog86: Вместо K_PGDN ( страница вниз) - использовал K_Down (Стрелка вниз) с повтором равным количеству SKIP (-Delta) . Исключение составляет только если "нужная строка" находится первой в списке . PS: Как это я про KEYBOARD () забыл :) , больше времени уделяю написанию на Harbour+MiniGui .....



полная версия страницы