![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Класс 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.
|