![]() |
#6 |
Участник
|
Думаю это не глюк - это фича
![]() Могу предложить небольшую модификацию формы SysFormSearch, метод GetText() для использования шаблонов в поиске по enum полям X++: str 80 getText() { str 80 text = findEdit.text(); DictField dictField; DictType dictType; DictEnum dictEnum; enumId enumId; int i; str pattern; boolean found; int scanPos, scanInq, scanAst; str 1 scanChar; ; if (strscan(text, "*", 1, strlen(text)) > 0 || strscan(text, "?", 1, strlen(text)) > 0) { dictField = new DictField(_dataset, fieldext2id(_field)); if (dictField && dictField.baseType() == Types::Enum) { enumId = 0; if (dictField.Type() == Types::UserType) { dictType = new DictType(dictField.typeId()); if (dictType) enumId = dictType.enumId(); } else enumId = dictField.enumId(); if (enumId) { dictEnum = new DictEnum(enumId); if (dictEnum) { pattern = ""; i = 1; while (strscan(text, "*", i, strlen(text)) || strscan(text, "?", i, strlen(text))) { scanInq = strscan(text, "?", i, strlen(text)); scanAst = strscan(text, "*", i, strlen(text)); scanChar = scanInq && (!scanAst || scanInq < scanAst) ? "" : "*"; scanPos = scanInq && (!scanAst || scanInq < scanAst) ? scanInq : scanAst; pattern += (substr(text, i, scanPos-i) + "." + scanChar); i = scanPos + 1; } if (i <= strlen(text)) pattern += substr(text, i, strlen(text)); found = false; for (i=0; i < dictEnum.values(); i++) { if (match(pattern, dictEnum.index2Label(i))) { text = dictEnum.index2Label(i); found = true; break; } } if (!found) { for (i=0; i < dictEnum.values(); i++) { if (match(pattern, dictEnum.index2Symbol(i))) { text = dictEnum.index2Symbol(i); break; } } } } } } } return text; }
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: wb (3). |