Форум » [x]Harbour » Harbour TBrowse » Ответить

Harbour TBrowse

Pasha: Если собрать xHarbour с использованием класса TBrowse из Harbour (в xHarbour его можно взять из tests\tbrowse.prg), то не работают методы перемещения вниз: tbrowse:down() и tbrowse:pagedown() При нажатии down-pagedown окно просто очищается При этом :up(), :pageup(), :goTop(), goBottom() работают Это у меня одного так ? ЗЫ можно не пересобирать xHarbour, а прилинковать к программе этот модуль, tests\tbrowse.prg

Ответов - 9

saulius: Да, дело в строках типа FOR EACH lStat, lDisp IN ::aCellStatus, ::aDispStatus [DESCEND] Замените на Clipper конструкции FOR i := 1 TO Len(::aCellStatus) и FOR i := Len(::aCellStatus) TO 1 STEP -1

Pasha: Спасибо ! После замены этого цикла, строки 800-810, на FOR i := len(::aCellStatus) TO 1 STEP -1 lStat := ::aCellStatus IF !lStat IF lRead RETURN .F. ENDIF lRead := ::readRecord( i ) ENDIF lDisp := ::aDispStatus IF lDisp ::dispRow( i ) ENDIF NEXT все работает замечательно На первый взгляд несовместимостей я не заметил, все работает быстро Если кеширование данных, все как в клиппере Отличная работа Przemyslaw Czerpak

Pasha: Форум немножно покоцал код, но думаю понятно


Pasha: Обнаружилась еще небольшая несовместимость с клиппером у Harbour TBrowse. Если не задавать заголовок у TColumn, все равно для заголовка резервируется одна строка, и данные выводятся со 2-й строки. Чтобы пофиксить, надо в функции _DECODE_FH добавить дополнительное условие: ... #ifndef HB_C52_STRICT /* CA-Cl*per bug, it accepts non character values though cannot * display them properly */ if cName != nil nHeight := 1 endif #else ...

saulius: Да, написал в форуме "TBROWSE column heading", Wed Jul 9 05:17:32 EDT 2008 но Przemyslaw Czerpak не откликнулся...

Dima: Pasha Проверь почту !

Dima: Pasha пишет: FOR i := len(::aCellStatus) TO 1 STEP -1 lStat := ::aCellStatus IF !lStat // тут падает IF lRead RETURN .F. ENDIF lRead := ::readRecord( i ) ENDIF lDisp := ::aDispStatus IF lDisp ::dispRow( i ) ENDIF NEXT Заменил , теперь бьет ошибку в 3 строке Subsystem Call ....: BASE System Code .......: 1066 Default Status ....: .F. Description .......: Неверный аргумент Operation .........: сравнение В браузере у меня помещается скажем 15 строк на экране , как только еду ниже 15 , тут и падает. Где копать ?

Dima: Сам въехал ;))) Вот так должно быть [pre2] FOR i := len(::aCellStatus) TO 1 STEP -1 lStat := : : aCellStatus IF !lStat IF lRead RETURN .F. ENDIF lRead := ::readRecord( i ) ENDIF lDisp := : : aDispStatus IF lDisp ::dispRow( i ) ENDIF NEXT и так ;) FOR i := 1 TO Len(::aCellStatus) lStat := : : aCellStatus IF !lStat IF lRead RETURN .F. ENDIF lRead := ::readRecord( i ) ENDIF lDisp := : : aDispStatus IF lDisp ::dispRow( i ) ENDIF next [/pre2]

Dima: Что то форум сжирает символы У Паши все верно если его месагу смотреть в режиме редактирования.



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