Код: Выделить всё
FIELDS
aCheckBoxButton:['.'], noProtect;
<<
`CheckButton`
[.] Чек-1`
[.] Чек-2`
[.] чек-3`
>>
Модераторы: m0p3e, edward_K, Модераторы
Код: Выделить всё
FIELDS
aCheckBoxButton:['.'], noProtect;
<<
`CheckButton`
[.] Чек-1`
[.] Чек-2`
[.] чек-3`
>>
Код: Выделить всё
var _oldValue : word;
cmInit: _oldValue := aCheckBoxButton;
cmCheckField:
{
if (CurField() = #aCheckBoxButton)
{
case (aCheckBoxButton xor _oldValue) of
1: // Чек-1
2: // Чек-2
4: // Чек-3
end;
_oldValue := aCheckBoxButton;
}
}
Код: Выделить всё
FIELDS
aCheckBoxButton;
<<
`CheckButton`
[.] Чек-1`
[.] Чек-2`
[.] чек-3`
...
[.] чек-N`
>>
...
(If aCheckBoxButton and 1) = 1 then {..};
(If aCheckBoxButton and 2) = 2 then {..};
(If aCheckBoxButton and 4) = 4 then {..};
(If aCheckBoxButton and N) = N then {..};
хз, сколько там реально переключателей вставится, но теоретически можно столько, сколько бит в comp, т.е. 64. Если не хватит, то можно на следующие 64 переключателя завести отдельный параметр типа comp и так далее.1.Есть ли ограничения по использованию в одном CheckBox "птичек"? Как понял предел-таки есть, так как для обработки используется маска 2 в степени (n-1), где n-номер "птички" в текущем CheckBox.
Т.е. массив выбранных значений что ли? А чем наложение маски не устраивает?2.Неужели нельзя было сделать что-то вроде счётчика "птичек"?
Что-то мне подсказывает, что если в один момент галочки не были выбраны, а в другой, например, 3 и 1 сразу щёлкнули, то XOR даст значение 5 (3,6,7 при других комбинациях галочек) в момент вызова cmCheckField (если не ошибаюсь, она вызывается при покидании поля). По крайней мере, по Ctrl-F4 можно такое провернуть.galover писал(а):Код: Выделить всё
case (aCheckBoxButton xor _oldValue) of 1: // Чек-1 2: // Чек-2 4: // Чек-3 end;
Нет, не так. cmCheckField возникает сразу после щелчка. Это можно убедиться написав простенький код, или посмотреть как работают аналогичные переключатели в стандартных интерфейсах Галактики. Например, интерфейс: подсистема УТОРО\Настройка\Настройка прав доступа к объектам ремонта -> там сразу после щелчка появляется скрытое поле рядом с переключателем, без всякого ухода с поля переключателя.Что-то мне подсказывает, что если в один момент галочки не были выбраны, а в другой, например, 3 и 1 сразу щёлкнули, то XOR даст значение 5 (3,6,7 при других комбинациях галочек) в момент вызова cmCheckField (если не ошибаюсь, она вызывается при покидании поля). По крайней мере, по Ctrl-F4 можно такое провернуть.
Раньше в документации прямо было написано, что поля для флажков и радиокнопок должны быть с типом Word. Сейчас такого не нашел, но косвенно про размерность можно судить по типу параметра mask в функции ClusterDisabledField:BlazeBio писал(а):Есть ли ограничения по использованию в одном CheckBox "птичек"?
Так что предел - 32. ИМХО, этого более чем достаточно, да и 16 хватало.Издание 05.10.2009
В процедуре ClusterDisabledField исправлен тип параметра mask с word на longInt.