TCheckListBox получить проверенный элемент
У меня простой вопрос. Как получить количество проверенных элементов в CheckBoxListBox без использования цикла?
2 ответа
Решение
TCheckListBox
не предоставляет вариант, который вы ищете. Цикл через его Checked[]
собственность обязательна.
Если бы вы использовали Delphi, вы могли бы создать вспомогательный класс, чтобы скрыть этот цикл. Но помощники класса не доступны в C++.
Вы можете использовать такую функцию.
function GetCheckedCount(CH:TCheckListBox):Integer;
var I:Integer;
begin
Result := 0;
for i := 0 to ch.Items.Count - 1 do
if ch.Checked[i] then inc(result);
end;
Кроме того, SelCount - это количество "выбранных" элементов, когда MultiSelect имеет значение true, а не количество "отмеченных " элементов.
В Delphi вы можете [*] сделать следующее:
TCustomMultiSelectListControl(TheBox).MultiSelect := True;
и тогда SelCount работает:
CountOfCheckedItems := TheBox.SelCount;
Разве эквивалент не возможен в C++?
[*] Хотя это вызывает другие проблемы.