Класс TStrings предназначен для хранения набора строк. Экземпляры этого класса нельзя создавать непосредственно - он служит в качестве базового класса для других классов.
У ListBox'а есть свойство Items типа TStrings.
Основное свойство для класса TStrings - это Strings, в котором и хранятся все строки. Доступ к определенной строке можно получить через ее индекс (нумерация идет с нуля):
ShowMessage(ListBox1->Items->Strings[0]);
В результате появится следующее окно:
Рис 3. Результат доступа к строке через индекс
Для добавления нового пункта на этапе работы программы, следует воспользоваться методом Add
ListBox1->Items->Add("New String");
Этот метод добавит новый элемент в конец списка.
Для добавления нового элемента куда-нибудь в середину, следует использовать метод Insert:
ListBox1->Items->Insert(I,"Roma");
Для очистки всего спмска служит метод Clear.
ListBox1->Items->Clear();
Для удаления удалить i-го элемента ListBox'а, используем метод Delete:
ListBox1->Items->Delete(1);
Нумерация элементов списка идет с нуля. Приведенный пример удалит второй сверху элемент. Все следующие строки сдвинутся вверх в списке, таким образом, на месте второй строки будет третья, на месте третьей– четвертая и т.д.
Для поиска определенной строки служит метод IndexOf:
int k=ListBox1->Items->IndexOf("Ira");
Этот метод берет в качестве параметра искомую строку и возвращает ее номер. Если строка не найдена, то возвращается -1.
Свойство ItemIndex позволяет определить номер выделенного элемента списка (нумерация идет с нуля). Если ни один элемент не выделен, то это свойство равно -1.
Код, который при щелчке на ListBox'е покажет в MessageBox'е номер элемента, на котором был произведен щелчок:
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{ ShowMessage(IntToStr(ListBox1->ItemIndex)); }
Следующий код проверяет выбор пользователя. Если выбор не сделан, появляется сообщение «Вы не сделали свой выбор». Если один из элементов списка выбран, то появляется сообщение вида: «Ваш выбор … …», где вместо первого многоточия отображается номер выбранной строки, а вместо второго многоточия – текст выбранной строки.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (ListBox1->ItemIndex>0)
{ ShowMessage("Ваш выбор "+
IntToStr(ListBox1->ItemIndex+1)+": "+
ListBox1->Items->Strings[ListBox1->ItemIndex]);
}
else
{
ListBox1->ItemIndex=0; //выделение 1-го элемента
ListBox1->ItemIndex=-1; //элементы не выделены
ShowMessage("Вы не сделали свой выбор"); }
}
Рис.4 Выбор строки
На способ множественного выбора при MultiSelect = true влияет еще свойство ExtendedSelect. Если ExtendedSelect = true, то можно выделить интервал элементов, выделив один из них, затем нажав клавишу Shift и переведя курсор к другому элементу.
Рис. 5 Множественный выбор строк
Если допускается множественный выбор (MultiSelect = true), то значение ItemIndex соответствует тому элементу списка, который находится в фокусе. При множественном выборе можно проверить, выбран ли данный элемент, по свойству Selected[int Index] типа bool (1-true, 0-false),например:
ListBox1->Selected[1] // выделен ли 1-ый элемент списка в ListBox’е
Следующий код отображает сообщения вида "Выбрана строка.,.: обо всех выбранных строках:
for (int i=0; i < ListBoxl->Items->Count; i++)
if (ListBoxl-->Selected[i])
ShowMessage ("Выбрана строка " + IntToStr (i+1)' + ": " +
ListBoxl->Items->Strings [i]);
Удаление выбранных элементов в TListBox
for(int i = ListBox1->Items->Count-1; i >= 0; i--) if(ListBox1->Selected[i]) ListBox1->Items->Delete(i);Свойство Columns определяет число столбцов, в которых будет отображаться список. По умолчанию Columns=0.
Если Columns=1, то появляется горизонтальная линейка прокрутки, с помощью которой можно просмотреть невидимые строки.
Рис. 6 Результат удаления строки по индексу
Если свойство Columns > 1, то появляется то количество столбцов, состоящих из строк, которое указано в свойстве.
Рис. 7 Количество столбцов - 2
Свойство Sorted позволяет упорядочить список по алфавиту. При Sorted=true новые строки в список добавляются не в конец, а по алфавиту.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Items->Add("Волнушка");
}
Рис. 8 Вставка строки с одновременной сортировкой
Свойство AutoComplete, если установить его в true, позволяет пользователю быстро находить строку списка, нажимая клавишу, соответствующую ее первому символу.
Нажаты клавиши Shift+О
Рис.9 Выбор строки по её первому символу
Свойство Style, установленное в IbStandard (значение по умолчанию) соответствует списку строк. Другие значения Style позволяют отображать в списке не только текст, но и изображения.
Свойства BevelEdges, BevelInner, BevelKind, BevelOuter, BouderStyle, Color, Ctl3D влияют на внешний вид (наличие границ, их вид, стиль, цвет фона и др.).
SelCount п оказывет количество выделенных строк в списке
Selected[Index] у казывает, выделена или нет, строка с номером Index.
Exchange(Index1, Index2) м еняет местами две строки с номерами Index1 и Index2.
LoadFromFile(FileName) з аполняет список строками из файла с именем FileName.
SaveToFile(FileName) сохраняет строки списка в файле с именем FileName.