walexw Опубликовано 29 февраля, 2016 Опубликовано 29 февраля, 2016 Похожие темы многократно обсуждались, но перечитав их, решения не нашел. Мне нужно сделать простую вещь: заполняя ListBox (руками) закрашивать новый listBoxItem то красным, то синим цветом. Думаю многим доводилось делать что-то подобное. Пригодятся любые конструктивные советы-решения-ссылки. Спасибо. Цитата
0 mrseagull Опубликовано 29 февраля, 2016 Опубликовано 29 февраля, 2016 Я бы копал в сторону создания двух разных стилей Item один с красной подложкой другой с синей и использовал бы их по очереди при добавлении элементов в listBoxItem Цитата
0 krapotkin Опубликовано 29 февраля, 2016 Опубликовано 29 февраля, 2016 кладем TRectangle и красим как хотим вне зависимости от стиля Цитата
0 zairkz Опубликовано 1 марта, 2016 Опубликовано 1 марта, 2016 А какая задача именно? Может лучше на ListView сделать? Если ListView подойдет могу скинуть ListViewHelper(Zuby), но только он под Delphi Seatle 10, не знаю подойдет ли к Seatle 10 Update 1. Цитата
0 walexw Опубликовано 1 марта, 2016 Автор Опубликовано 1 марта, 2016 Конкретно задача состоит в том, чтобы вывести в списке пары людей, каждый второй должен быть на синем фоне. Я пока подбираю решение. Совет Крапоткина размещать на элементе прямоугольник (любого цвета) мне понравился, правда этот прямоугольник перекрывает надписи... А по поводу listVew: мне бы он подошел, но я не знаю, можно ли на эго элементах разместить кнопку? (мне кроме синего фона еще кнопка нужна рядом с надписью) Если не сложно, пришли код ListViewHelper(Zuby), буду изучать. Цитата
0 zairkz Опубликовано 1 марта, 2016 Опубликовано 1 марта, 2016 (изменено) На ListView скролл значительно лучше и без лагов, и вообще очень мощный компонент, все равно, рано или поздно вы откажетесь от ListBOX. Кнопку можно разместить стандартным способам в настройках самой ListView. Если же вам нужно сто кнопок в одном Итеме, тогда да придется чуток заморочиться. Во первых надо в настройках ListView в ItemAppearance включить ImageListItemBottomDetailRightButton. Далее в ItemAppearanceObjects -> ItemObjects можете указывать любые настройки, через PlaseOffset.X - Y перемещать текст и детайл текст как хотите и куда хотите, тоже самое с картинкой и кнопкой, менять цвета и шрифты. Можете повесить обработчик в свойствах на OnItemClick, а также нажатие на саму кнопку OnButtonClick. При заполнении Item'ам присваивайте Tag и по ним ориентируйтесь. Далее для покраски Item'ов подключите Хелпер Zuby(все таки не хелпер, а измененный исходник TListView) FMX.ListView.zip, пропишите пару процедур: procedure myDefaultItemColor(const aLV: TListView; const aItemIndex: integer; const aUseCustomColor: Boolean = false); begin with aLV.Items[aItemIndex] do begin Data['aUseCustomColor'] := aUseCustomColor; end; end; /// <summary> устанавливаем кастомный цвет для Item'a </summary> procedure myCustomItemColor(const aLV: TListView; const aItemIndex: integer; const aCustomColor: TAlphaColor; const aUseCustomColor: Boolean = true); begin with aLV.Items[aItemIndex] do begin Data['aUseCustomColor'] := aUseCustomColor; Data['aCustomColor'] := aCustomColor; end; end; Далее к примеру заполняем ListView ListViewPoisk.BeginUpdate; for i := 0 to 15 do begin ListViewPoisk.Items.Insert(0); ListViewPoisk.Items[0].Tag := i; ListViewPoisk.Items[0].Text := 'X_text'; ListViewPoisk.Items[0].Detail := 'X_detail'; ListViewPoisk.Items[0].ButtonText := 'X_buttext'; ListViewPoisk.Items[0].Data['offer'] := 0; //Если нужно хранить не отображаемые данные. ListViewPoisk.Items[0].Bitmap.Assign(Image1.Bitmap); if i mod 2 = 0 then myCustomItemColor(ListViewPoisk, ListViewPoisk.Items[0].Index, TAlphaColors.Lime); // TAlphaColors.Lime можно заменить TAlphaColorF.Create(70 / 255, 130 / 255, 180 / 255, 155 / 255).ToAlphaColor; end; ListViewPoisk.EndUpdate; Изменено 1 марта, 2016 пользователем zairkz Rusland, walexw, enatechno и 1 другой 4 Цитата
0 krapotkin Опубликовано 1 марта, 2016 Опубликовано 1 марта, 2016 да, если строк > 10 listBox сразу идет в топку положить в ListViewItem все нужные компоненты вообще не очень сложно при этом главное помнить что в FMX можно вкладывать что хочешь куда попало! и совсем не обязательно использовать уже положенные туда Text Detail и т.д. zairkz 1 Цитата
0 walexw Опубликовано 1 марта, 2016 Автор Опубликовано 1 марта, 2016 zairkz, большое спасибо за развернутый ответ! Буду переваривать. Думаю пригодится не только мне. Для Крапоткина: тоже большое спасибо, учту ваши советы. zairkz 1 Цитата
0 krapotkin Опубликовано 1 марта, 2016 Опубликовано 1 марта, 2016 кстати, в D11 через месяц обещали какие-то вкусные плюшки как раз по ListView items, редактор и что-то там Равиль Зарипов (ZuBy) и Rusland 2 Цитата
Вопрос
walexw
Похожие темы многократно обсуждались, но перечитав их, решения не нашел.
Мне нужно сделать простую вещь:
заполняя ListBox (руками) закрашивать новый listBoxItem то красным, то синим цветом.
Думаю многим доводилось делать что-то подобное.
Пригодятся любые конструктивные советы-решения-ссылки.
Спасибо.
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.