Перейти к содержанию
Fire Monkey от А до Я
  • 0

[ListBox]Поиск по ItemData.Detail


Kitty

Вопрос

Подскажите, пожалуйста, как можно правильно выполнить поиск в ListBox?
Список без TSearchBox выглядит так:
Заголовок 1(TListBoxGroupHeader)
Основной текст
Детализирующий текст
 Основной текст
Детализирующий текст
Заголовок2(TListBoxGroupHeader)
Основной текст
Детализирующий текст
и т.д.

Детализирующий текст ListBoxItem->ItemData->Detail везде разный. В программе становиться известно одно из значений детализирующего текста, как программно получить текст Заголовка и текст Основного текста которому принадлежит этот детализирующий текст? Мне надо найденные данные перенести в другой ListBox. Спасибо.

 

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

циклом пройтись по всем элементам и проверить на соответствие, найденные в другой LB

Ссылка на комментарий
  • 0

Пока не доходит...

	 for (int i = 0; i < ListBox1->Count; i++)
	 {
	   ListBox1->ItemByIndex(i);
	   //как сравнивать с ItemData->Detail ?
	 }

У меня есть детальный текст, его надо найти в списке и понять к какому заголовку он принадлежит и какой у него основной текст...

Ссылка на комментарий
  • 0

Спасибо. Картина проясняется у меня почему-то не работала подсказка после стрелки ListBox1->ItemByIndex(i)-> и поэтому не понятно было как добраться до ItemData. Благодаря вашему коду теперь понятно. Однако остался вопрос, у списка присутствуют заголовки TListBoxGroupHeader. Как получить заголовок которому принадлежит aItem: TListBoxItem?

Изменено пользователем Kitty
Ссылка на комментарий
  • 0

Большое спасибо. На основании вашего кода, получилось такая конструкция. На первый взгляд вроде работает, но насколько надежно пока не знаю. :)

String WEBLink = ***

ListBox2->Clear();
	 int i;
	 for (i = 0; i < ListBox1->Count; i++)
	 {
	   if(CompareStr(WEBLink, ListBox1->ItemByIndex(i)->ItemData->Detail) == 0)
	   {
		int j = i;
		while(j >= 0)
		  {
		   if(ListBox1->ItemByIndex(j)->ClassName() == L"TListBoxGroupHeader")
			 {
			  TListBoxGroupHeader * ListBoxGroupHeader = new TListBoxGroupHeader(ListBox2);
			  ListBoxGroupHeader->Text = ListBox1->ItemByIndex(j)->Text;
 			  ListBoxGroupHeader->Parent = ListBox2;
			  break;
			 }
		   j--;
          }

		TListBoxItem * aItem = new TListBoxItem(ListBox2);
		aItem->Text = ListBox1->ItemByIndex(i)->Text;
		aItem->ItemData->Detail = ListBox1->ItemByIndex(i)->ItemData->Detail;
		aItem->ItemData->Accessory = static_cast<TListBoxItemData::TAccessory>(1);
		aItem->Parent = ListBox2;
		break;
	   }
	 }

Есть ли существенная разница как добавлять?

ListBoxGroupHeader->Parent = ListBox2;

или

ListBox2->AddObject(ListBoxGroupHeader); 

 

Ссылка на комментарий
  • 0
  • Модераторы
2 минуты назад, Kitty сказал:

Есть ли существенная разница как добавлять?

нет, я просто так привык

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...