- Работа со списками
- Работа с объектом типа Memo
- Классический список ListBox в системе Visual Basic
- Классический список ListBox в системах BCB и Delphi
- Компактный список ComboBox в системе Visual Basic
- Компактный список ComboBox в системах BCB и Delphi
- Списки DriveListBox, DirListBox и FileListBox в среде VB
- Списки DriveComboBox, DirectoryListBox и FileListBox в системах BCB/Delphi
- Присоединение объектов к строкам списка ListBox
- Сортировка грибов
- Просмотр системных шрифтов
Классический список ListBox в системе Visual Basic
Опубликовано admin в Пт, 01/15/2010 - 19:53
Список ListBox используется для отображения строк, предлагаемых на выбор пользователю. Каждая строка списка ListBox имеет индекс, определяющий ее положение в массиве строк. Отсчет индексов ведется от нуля:
List1.List(0)’ — первая строка в списке с именем List1
Количество строк, находящихся в данный момент в списке, является значением свойства ListCount. Именно по этому счетчику организуются циклы, связанные с перебором всех строк списка:
For j = 0 To List1.ListCount - 1
If List1.Selected(j) Then ’ Если j-тая строка выделена
Label1.Caption = j
End If
Next i................
Появление конструкции With-End With в языке VB несколько упрощает написание программы, позволяя не задавать полностью составные имена:
With List1
For j=0 To ListCount-1
If Selected(j) Then ’ Если j-тая строка выделена
................
End If
End With
Приложение 4_01 (VB).
Основным приемом работы со списком является выделение одной или нескольких строк, заинтересовавших пользователя, и последующая обработка выделенных строк. Упорядочение строк по алфавиту существенно упрощает просмотр списка. Поэтому каждый список обладает свойством Sorted. По умолчанию его значение равно False, что соответствует не упорядоченному списку. Расположение его строк определяется последовательностью их ввода. Стоит изменить значение этого свойства (Sorted=True), как все строки выстраиваются в алфавитном порядке. Для строк, содержащих большие и малые буквы, при сортировке разницы между строчными и прописными символами не делается (рис. 4.1).

Рис.4.1. В левом окне Sorted=False, в правом — Sorted=True
Приложение 4_02 (VB).
Режим выделения строк зависит от значения свойства MultiSelect, принимающего в среде Visual Basic одно из трех значений — 0 (None), 1 (Simple) и 2 (Extended). В первом случае пользователь может выделить только одну строку в списке, щелкнув по ней курсором мыши или нажав клавишу <Пробел> в тот момент, когда на строку наведен пунктирный прямоугольник. Во втором случае можно выделить больше одной строки и выделенные строки не обязаны располагаться подряд. Для такого выделения нужно щелкать по требуемым строкам или использовать стрелки управления курсором в сочетании с клавишей <Пробел>. В третьем случае можно выделить мышкой участок строк, расположенных подряд, используя клавишу <Shift>, или разрозненные строки, используя клавишу <Ctrl>. Указанные ситуации отображены на рис. 4.2.
Рис.4.2. Слева MultiSelect=0, в центре MultiSelect=1, справа MultiSelect=2
Количество выделенных строк запоминается в свойстве SelCount. Содержимое последней выделенной строки запоминается в свойстве Text, а для проверки, является ли строка List(j) выделенной, необходимо прибегнуть к проверке значения свойства Selected(j). Оно равно True, если j-тая строка выделена.
К наиболее распространенным методам обработки списков относятся процедуры очистки (Clear), добавления новых строк (AddItem) и удаления существующих строк (RemoveItem):
List1.Clear 'Очистка списка с именем List1
List1.AddItem str[,index] 'Добавление строки str
List1.RemoveItem index 'Удаление строки с заданным индексом
Процедура добавления новой строки в среде Visual Basic требует заключения содержимого строки str в двойные кавычки, если добавляемое значение не является числом или переменной типа String. Аргумент index не задается в двух случаях:
- при добавлении строк к упорядоченному массиву;
- при добавлении новой строки в конец списка.
Если аргумент index задан, то добавляемая строка вставляется на указанное место с одновременным спуском вниз на одну позицию всех остальных строк.
Приложение 4_03 (VB).
Если высота окна недостаточна для отображения всех строк списка или ширина окна меньше, чем размер самой длинной строки, то список автоматически снабжается одной или двумя линейками прокрутки, обеспечивающими доступ к невидимой информации. Списки с достаточно короткими элементами могут отображаться в две или больше колонок в зависимости от выбранного вами значения свойства Columns (рис.4.3).

Рис. 4.3. Расположение списков в зависимости от свойства Columns
В свойстве NewIndex хранится индекс последней добавленной строки. Специфической особенностью стандартного списка VB является возможность связать с любой его строкой целое число типа Long:
List1.Add "Трюфель"
List1.ItemData(List1.NewIndex)=1500
Как это число может быть использовано в конкретной задаче, зависит от программиста. Например, в «грибной» задаче оно может символизировать стоимость 1 кг грибов данного вида.
В отличие от объекта Memo, описанного в предыдущем разделе, пользователь по своей инициативе не может изменить содержимое классического списка. Любые изменения во время выполнения приложения могут быть сделаны только программным путем.
