|
07.11.2008, 12:28 | #1 |
Гость
|
Попытка исправить глюк в форме SysConView, 3.0 sp4 kr2
Описание проблемы
Есть форма (в моём случае - LedgetBudget), на которой в ClassDeclaration прописано: Код: class FormRun extends ObjectRun { Dimension dimension; #define.CurrentVersion(7) #localmacro.CurrentList dimension, #endmacro //(всё лишнее покусано) } Далее открываем эту форму, делаем настройки, закрываем форму. Идём в Администрирование-Пользователи-Настройки пользователя-Использование данных, закладка: выбор на формах Открываем настройки формы, они не открываются |
|
07.11.2008, 12:29 | #2 |
Гость
|
Теперь моделируем эту ситуацию:
зайдём сюда: \Forms\SysConView\Methods\init добавим следующие строчки: Код: real arr[3]; ; arr[1] = 1; arr[2] = 2; arr[3] = 3; Код: containerToShow = [1,2.2,arr,"@SYS76534",4\4\1944,[1,2,["@SYS22523",["@SYS76531","@SYS76532"],"@SYS22525"],4,5],"@SYS76533"]; Ищем причину: в методе \Forms\SysConView\Methods\fillTree падает вот это Код: item.text(strfmt('%1', conPeek(_container,i))); Код: int j; .... itemType = typeOf(conPeek(_container,i)); j = itemType; В базовом енуме types 15 значений Последний раз редактировалось Shakr; 07.11.2008 в 12:35. |
|
07.11.2008, 12:37 | #3 |
Гость
|
попробовал исправить так:
\Forms\SysConView\Methods\setContainer Код: void setContainer(container _container) { //<<kvl CUS-Modification on 07/11/08 by kvl int len = conLen(_container); Container con; int cnt; AnyType any[1000]; DictEnum DictTypes = new DictEnum(EnumName2Id('types')); int i; int j; int subLen; common common; types itemType; FormTreeItem item; ; for (i=1;i<=len;i++) { itemType = typeOf(conPeek(_container,i)); j = itemType; if (j>DictTypes.values()) { any = conPeek(_container, i); cnt = dimof(conPeek(_container, i)); for (j = 1; j<= cnt; j++) con += [any[j]]; _container = conPoke(_container,i,con); } } //>>kvl CUS-Modification on 07/11/08 by kvl containerToShow = _container; } Последний раз редактировалось Shakr; 07.11.2008 в 12:39. |
|