Класс Tstrings

Класс 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: