Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
02.05.2014
Размер:
751.22 Кб
Скачать

Списки

Управляющий элемент ListBox

Список ListBox позволяет выбирать один или несколько элементов, добавлять новые или удалять существующие элементы из списка. Если не все элементы умещаются в списке, то автоматически будут добавлены полоски прокрутки. Свойство MultiSelect=2 позволяет одновременно выбрать несколько элементов из списка с помощью мыши или комбинациями клавиш управления курсором и клавиш SHIFT и CTRL. Когда свойство MultiSelect=0, то множественный выбор невозможен. Обычно ListBox предназначен для объединения в простой список однотипной информации.

 

Основные свойства и методы элемента ListBox

Таблица 15

Свойство

Описание

 

List

Содержит список значений

 

 

 

 

 

Sorted

Если оно True, то выполняется алфавитная сортировка списка

Style

Внешний вид: стандартный или с флажком

 

 

 

 

 

 

ListCount

Содержит количество строк в списке

 

 

 

ListIndex

Содержит номер выделенной строки. Первый элемент списка имеет

 

номер 0. Если ListIndex= –1, то формируется пустая строка

 

Text

Содержит выделенный в списке текст

 

List(n)

Содержит текст (n+1) строки списка

 

Метод

Описание

 

 

 

 

 

 

Addltem

Добавляет элемент в список

 

Removeltem

Удаляет строку из списка

 

Clear

Удаляет все элементы списка

 

Свойства List, Sorted, Style доступны в режимах конструирования и выполнения приложения. Для заполнения списка в режиме конструирования используется свойство List, при этом ввод каждого элемента списка должен заканчиваться нажатием Ctrl+Enter.

Для заполнения списка в коде программы применяется метод Addltem. Например,

List1.Addltem "BMW X5" List1.Addltem "Ford Focus 2", 2

Строка "BMW X5" будет добавлена в конец списка. Если же установлено свойство Sorted=True, то положение этой строки будет определяться порядком сортировки. Строка "Ford Focus 2" будет третьей по счету.

Событие Click происходит тогда, когда пользователь в режиме выполнения выбирает строку в списке.

Пример 27. Продемонстрировать работу с тремя списками ListBox. Первые два списка содержат марки автомашин, вывозимых из Германии и Японии, а третий список – ввозимых в Россию. Третий список заполняется двумя щелчками мыши по элементу любого из первых двух списков или, используя технологию Drag&Drop, – над несколькими выделенными элементами списка.

Создадим из двух первых списков массив объектов List1 и заполним их в режиме конструирования, используя свойства List, марками автомашин, ввозимых из Германии и Японии. В строке сообщения Label1 выведем страну-производителя, номер выделенной строки, количество строк в списке и текст выделенной строки соответствующего списка (марка автомашины). Для этого воспользуемся процедурой List1_Click. В процедуре обработки события DblClick запрограммируем процесс переноса элемента списка массива в другой список List2. В процедуре обработки события OLECompleteDrag запрограммируем процесс копирования выделенных мышью элементов соответствующего списка массива в список

List2.

Вполе Text1 выведем страну-производителя и марки автомобилей, выделенных в соответствующем списке массива и копируемых с помощью технологии Drag&Drop в список List2. Для этого воспользуемся процедурой

List1_OLEStartDrag.

Впроцессе передачи фокуса от одного элемента массива объектов List1 другому необходимо снять выделение с элемента противоположного списка. Эти действия необходимо запрограммировать в процедуре List1_GotFocus, которая происходит всегда при получении фокуса.

Разместите списки на форме, как показано на рис.35, и настройте их свойства в режиме конструирования:

List1(0).MultiSelect = 2 и List1(1).MultiSelect = 2.

Свойства List1(0).OLEDragMode=1 и List1(1).OLEDragMode=1

позволяют осуществить процесс копирования мышью выделенных элементов списка List1, а свойство List2.OLEDropMode=1 – осуществить процесс приема элементов списка, используя технологию Drag &Drop (Перетащи и Положи).

Рис.35. Окно формы в режиме конструирования

Dim pr As String

Private Sub Command1_Click()

End

End Sub

Private Sub Form_Load()

Text1 = "" List1(0).OLEDragMode = 1 List1(1).OLEDragMode = 1 List2.OLEDropMode = 1

End Sub

Private Sub List1_Click(Index As Integer) u% = List1(Index).ListIndex

c% = List1(Index).ListCount

If Index = 0 Then pr = "ГЕРМАНИЯ # " Else pr = "ЯПОНИЯ # " s$ = List1(Index).Text

St$ = pr & " Index: " & u & " Count: " & c & " - " & s Label1 = St

End Sub

Private Sub List1_DblClick(Index As Integer)

List2.AddItem List1(Index).Text List1(Index).RemoveItem List1(Index).ListIndex

End Sub

Private Sub List1_GotFocus(Index As Integer)

If Index = 0 Then

For i = 0 To List1(Index + 1).ListCount - 1 If List1(Index + 1).Selected(i) Then List1(Index + 1).ListIndex = i

List1(Index + 1).Selected(i) = Not List1(Index + 1).Selected(i) End If

Next

Else

For i = 0 To List1(Index - 1).ListCount - 1 If List1(Index - 1).Selected(i) Then

Соседние файлы в папке Лекции по информатике [Лебедев]