Тема: Scrolling
Показать сообщение отдельно
Старый 28.08.2006, 12:09   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Cool
Молотком

Во вложении - ответ.

Как применять:
1. На форме в ClassDeclaration определить пару переменных
X++:
DLL                 dll;
DLLFunction         AxScrollGroup;
2. В Init() формы добавить код
X++:
    dll = new Dll("AxScroll.dll");
    AxScrollGroup = new DLLFunction(dll, "AxScrollGroup");

    AxScrollGroup.returns(ExtTypes::DWord);
    AxScrollGroup.arg(ExtTypes::DWord);
3. Подключать к нужному контролу так (можно в Init() формы после super())
X++:
if ([].hWnd()) AxScrollGroup.call([].hWnd());
4. Цеплять к контролам Group или TabPage. Для Group свойство FrameType ставить в None
5. На этих контролах размещать только группы или табы. Все остальные контролы должны находиться в этих элементах
6. Подключать можно неограниченное количество элементов (например, все закладки на форме InventTable)

Для скроллинга можно использовать колесо мыши. С зажатой кнопкой SHIFT - по вертикали, CONTROL - по горизонтали

Из замеченных глюков:
1. Если разместить на управляемой группе элемент ввода (например, StringEdit) (не во вложенной группе), то при скроллировании и перерисовке формы будет неправильно отображаться Label контрола
2. Если разместить на управляемом контроле Grid (не во вложенной группе), то при изменении размера формы и смещенным движкам скроллера Grid перескочит в верхний левый видимый угол.
3. При изменении размеров контрола (например, для Grid'а изменение ширины столбцов ), если смещены движки скроллера, то контрол перескочит в верхний левый видимый угол.
4. При изменении размеров контрола (например, для Grid'а изменение ширины столбцов) скроллеры не реагируют (не происходит пересчет размеров клиентской области). Если после этого изменить размер управляемой группы (например, изменить размер окна), то все корректно пересчатается
5. Если управляемый контрол Группа и для него включено FrameType, то некорректно будет происходить перерисовка элементов фрейма
Вложения
Тип файла: rar AxScroll.rar (11.4 Кб, 141 просмотров)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (5), slava (1), Garic (1), George Nordic (5), Hidden (1), Lemming (1), Logger (9), bagyr (1), kvg6 (1), konopello (1), MikeR (2), gl00mie (1), Bil Meshkoff (1).