Цитата:
Сообщение от
mazzy
не только дисплей-поля. попробуйте обычный браузер таблиц. откройте его в стандартном варианте и с автоопределением ширины столбца.
Не понял эту фразу... В стандартном варианте на всех гридах, включая те, что на форме обозревателя, автоопределение ширины столбца включено. Для обозревателя, на ряду с другими формами, его можно
отключить. Я сперва засомневался и попытался, было, приделать в SysSetupFormRun вывод значения свойства autoSizeColumns() для всех открываемых форм (опять же, с помощью итератора
), но тут обнаружил, что соотв. метод на FormGridControl не возвращает текущее значение свойства, а лишь позволяет устанавливать его. К слову, если пользоваться предложенным мной вариантом, то после изменения перечня форм в методе SysSetupFormRun надо перезапускать клиента либо очищать закэшированное в GlobalCache множество названий форм, потому что произведенные изменения в коде не возымеют действия, пока есть закэшированное множество.
Возвращаясь к обозревателю, можно попробовать на двух таблицах: CustTrans и CustTransIdRef. Записей там должно быть одинаковое количество, при этом в CustTrans, в моем случае, более 100 полей, включая системные, в то время как в CustTransIdRef их всего 5. Впрочем, тут сложно отделить замедление, связанное с автоопределением ширины столбцов, от общего замедления, связанного с обработкой большего числа полей обозревателем. Во всяком случае, я лично отчетливо вижу разницу во времени открытия обозревателя для таблиц CustTrans и CustTransIdRef, однако, отключение автоопределения ширины столбцов для grid'ов формы обозревателя таблиц в моем случае не дает сколь-нибудь заметного ускорения.
Цитата:
Сообщение от
mazzy
как только записи не помещаются в буфер, так сразу начинается. визуально - как только начинаются побочные эффекты с вертикальным скролбаром, так сразу отключение покажет эффект.
По-моему Grid в любом случае при открытии формы считывает в память клиента одинаковое количество записей, разве нет?..
...В общем, для проверки влияния автоопределения ширины колонок на время открытия различных форм был написан небольшой класс. Ему при запуске (в коде main() - ибо класс написан на коленке) передается название формы либо идентификатор таблицы, которую надо открыть обозревателем. После этого класс эту форму в цикле открывает, ждет, пока клиент перейдет в состояние простоя, тут же форму закрывает и засекает, сколько времени (тиков) ушло с момента запуска. При этом основной цикл из ндцати открытий формы прогоняется дважды: сперва автоопределение ширины колонок отключается (в предположении, что используется приводившаяся мной доработка для SysSetupFormRun), а затем включается. У меня получились такие тестовые результаты:
Код:
Form 'SalesTable', autoSizeColumns( false )
5159 ticks average per 10 times
Form 'SalesTable', autoSizeColumns( true )
6795 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( false )
2479 ticks average per 10 times
Form 'SysTableBrowser' for LedgerJournalTrans, autoSizeColumns( true )
2417 ticks average per 10 times
Для обозревателя таблицы результат несколько неожиданный: автоопределение ширины колонок хоть чуть-чуть, но ускоряет, а не замедляет его открытие. Я гонял тест много раз - результат для обозревателя всегда повторялся. NB! Некоторые формы требуют указания параметров для успешного запуска, и их надо запускать через специальный пункт меню. Класс на это не заточен, кому надо - допилите.