Anatoliy Опубликовано 16 октября, 2017 Поделиться Опубликовано 16 октября, 2017 (изменено) Здравствуйте. Подскажите, пожалуйста, как правильно получить список элементов итемов (DynamicAppearance) ListView у которых AccessoryType=Checkmark=true? Только перебор в цикле? Спасибо. Изменено 16 октября, 2017 пользователем Anatoliy Цитата Ссылка на комментарий
0 krapotkin Опубликовано 16 октября, 2017 Поделиться Опубликовано 16 октября, 2017 (изменено) Правильный ответ - все наоборот. Вы должны отрисовывать ListView по своим имеющимся данным. Там и нужно брать информацию. Экранные компоненты ни при чем Если речь о том, как собрать "отчеканные" строки, то вариант тот же. При изменении состояния стоит записывать эти изменения к себе в нужное место. А после этого возвращаемся к п.1 Изменено 16 октября, 2017 пользователем krapotkin Цитата Ссылка на комментарий
0 Anatoliy Опубликовано 16 октября, 2017 Автор Поделиться Опубликовано 16 октября, 2017 krapotkin, прошу прощения не понятно... Вот есть листбокс на картинке. У чекбокса имя Check. После нажатия кнопки "Сделать заказ" просто иду в цикле и анализирую если Check Visible=true записываю в список... Check устанавливается кликом по листбоксу: void __fastcall TForm1::ListView1ItemClick(TObject * const Sender, TListViewItem * const AItem) { if(AItem->Index == -1) { return; } TListItemAccessory * check = reinterpret_cast<TListItemAccessory *>(AItem->Objects->FindDrawable(L"Check")); if(check) { if(check->Visible == true) { check->Visible = false; } else { check->Visible = true; } } } А как Вы бы сделали? Спасибо. Цитата Ссылка на комментарий
0 krapotkin Опубликовано 16 октября, 2017 Поделиться Опубликовано 16 октября, 2017 Все что есть на экране - это отображение чего-то в памяти. например (я в С не очень, но по смыслу поймете) var ListAll, ListSelected: TObjectList<TFoodMenuItem>; ListAll := TObjectList<TFoodMenuItem>.Create(True); // все меню ListSelected := TObjectList<TFoodMenuItem>.Create(False); // отобранные в заказ пункты //в OnClick нам дается Item. по индексу этого item мы берем объект из ListAll и заносим в ListSelected; listSelected.add( ListAll[index] ); этот пример корявый и не учитывает количества и т.д. но общий смысл именно такой. По индексу в листе работаем с объектом в памяти P.S. если честно, то имеющийся чек какой-то совсем никакой. я бы его поменял на простой собственный image Anatoliy и Ingalime 2 Цитата Ссылка на комментарий
0 Aleks133 Опубликовано 19 августа, 2019 Поделиться Опубликовано 19 августа, 2019 Долго я искал как это сделать в DynamicAppearance. procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin Memo1.Lines.Clear; for i := 0 to ListView1.ItemCount - 1 do begin if ListView1.Items.Objects.FindObjectT<TListItemAccessory>('Accessory2') .Visible = true then begin Memo1.Lines.Add('Индекс отмеченного итема= ' + inttostr(i) + ',Значение = ' + ListView1.Items.Objects.FindObjectT<TListItemText>('Text3').Text ); end; end; end; Ingalime и qz5 2 Цитата Ссылка на комментарий
Вопрос
Anatoliy
Здравствуйте.
Подскажите, пожалуйста, как правильно получить список элементов итемов (DynamicAppearance) ListView у которых AccessoryType=Checkmark=true?
Только перебор в цикле?
Спасибо.
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.