Работа с окном ComboBox

Работа со списком и окном с раскрывающимся списком

При применении окон списков и окон с раскрывающимися списками приходится решать две основных проблемы:

· как получить информацию о выбранном (или выбранных) элементе;

· как изменить список.

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

Содержимое списка окна, как правило, создается во время проектирования формы. Объект имеет три стиля (свойство Style), из них только нулевой и первый позволяют менять содержимое списка окна, хранящееся в свойстве List.

Получить информацию из окна ComboBox очень просто, достаточно прочитать свойство Text оператором присваивания:

Имя_переменной =имя_объекта.Text

Дополнительную информацию можно получить, применив свойства ListIndexиItemData, т.к. первое из них содержит номер выбранного элемента, а второе – массив чисел, поставленных программистом в соответствие списку List:

Имя_переменной = имя_объекта.ItemData(имя_объекта.ListIndex).

Пример получения полной информации из окна приведен на рис. 4.23. В этом примере переменные a и b являются приемниками информации, а окну ComboBox присвоено имя Combo1. Предполагается, что в свойство-массив ItemData записаны целые числа.

Dim a as string : Dim b as integer . . . a = Combo1.Text b=Combo1.ItemData(Combo1.ListIndex) . . .

Рис. 4.23. Чтение информации из окна ComboBox

Несколько труднее происходит изменение массива строк списка (свойство List) и поставленного ему в соответствие массива чисел в свойстве

Рис. 4.24. Форма для работы со списком окна ComboBox ItemData. Для управления списком проще всего применять две кнопки (рис. 4.24). Кнопка "+" добавляет пункт в список List, кнопка "-" удаляет пункт из списка. В качестве сигнала "добавить пункт в список" можно применить нажатие клавиши Enter. Существенным моментом является необходимость добавлять вручную в массив ItemData число, соответствующее новому пункту

списка List. При удалении пункта из списка List свойство ItemData корректируется автоматически. Текст программы, изменяющей список окна, приведен ниже.

Private Sub CBM_Click() 'удаление элемента из списка

Combo1.RemoveItem (Combo1.ListIndex) 'при нажатии кнопки "-"