И создание собственных диалоговых окон
Элемент управления Список(ListBox) применяется для хранения списка значений. В списке пользователь может выбрать одно или несколько значений, которые в последующем используются в программе. Выбор списка производится щелчком по элементу. Двойной щелчок применяется с целью выполнения каких-либо действий в программе, связанной с этим элементом. Наиболее часто используемые свойства:
ListIndex - возвращает номер выбранного элемента списка. Нумерация элементов списка начинается с нуля. Если ни один элемент из списка не выбран, то свойство возвращает -1; ListCount - возвращает число элементов списка; TopCount - возвращает элемент списка с наибольшим номером; TextColumn - устанавливает столбец в списке, стоящий на пересечении указанной строки и столбца; Text - возвращает выбранный в списке элемент; List - возвращает элемент списка, стоящий на пересечении указанной строки и столбца. Синтаксис: List(Row, Source). Строки и столбцы нумеруются с нуля.
Для заполнения и удаления списка применяются методы RemoveItem, AddItem и Clear:
Clear - удаляет все элементы из списка;
RemoveItem - удаляет из списка элемент с указанным номером. Синтаксис:
RemoveItem(index), где index - номерудаляемого элемента;
AddItem - добавляет элемент в список. Синтаксис:
AddItem(item [, varIndex ]), где item - элемент (строковое выражение) добавляемый, добавляемый в список; varIndex - номер добавляемого элемента
В примере на рис.3 при нажатии кнопки с надписью «Add Element»(CommandButton1) добавляется один элемент списка в элемент ListBox1 на рабочем листе Excel. При выделении мышью какого-либо элемента в списке, он отображается на листе Excel. При нажатии кнопки с надписью ”Clear ListBox ” (CommandButton2) происходит очистка списка.
Private Sub CommandButton1_Click() Dim i As Integer i = ListBox1.ListCount + 1 ListBox1.AddItem "Элемент" & CStr(i) End Sub
Private Sub CommandButton2_Click() ListBox1.Clear End Sub
Private Sub ListBox1_Click() Dim i As Integer i = ListBox1.ListIndex + 1 Sheets("Лист1").Cells(i, 4).Value = ListBox1.Text Sheets("Лист1").Cells(i, 5).Value = ListBox1.ListIndex + 1 End Sub
Для создания многоколоночного списка следует установить свойство ColumnCount, которое задаёт, сколько столбцов будет в списке. Кроме того, при работе с таким списком полезно определить значение свойства ColumnWidths, которое устанавливает ширину каждого столбца. А затем список надо заполнить. Нумерация столбцов в списке начинается с нуля. В качестве примера создания списка с несколькими столбцами рассмотрим простой проект, в котором производится вычисление значений функции sin(x) на промежутке от a до b с шагом h, а результат выводится в список с двумя столбцами. На листе расположим по три надписи, два поля ввода и список.
Private Sub CommandButton1_Click() lstTab.ColumnCount = 2 lstTab.ColumnWidths = "60;60" Dim a As Double, b As Double, h As Double Dim x As Double, f As Double, i As Long Dim Values() As Double a = CDbl(txtA.Text) b = CDbl(txtB.Text) h = CDbl(txtH.Text) If (b - a) / h < 1 Then Exit Sub ReDim Values((b - a) / h, 1) i = 0 For x = a To b Step h f = Sin(x) Values(i, 0) = x Values(i, 1) = f i = i + 1 Next x lstTab.List = Values End Sub Рассмотрим два примера получения в многостолбцовом списке выбранного значения из произвольного столбца. Первый пример основан на свойстве ListIndex, определяющем номер выбранной в списке строки, и свойстве List(row, column), где row - номер строки, а column - номер столбца. Здесь lstNumbers - имя списка, lblFirst и lblSecond - имена текстовых окон.
Private Sub CommandButton1_Click() Dim i As Integer Randomize For i = 0 To 299 lstNumbers.AddItem i lstNumbers.List(i,1)= Int(101 * Rnd()) lstNumbers.List(i,2)= Int(101 * Rnd()) Next i End Sub
Private Sub lstNumbers_Click() lblFirst.Caption = lstNumbers.List(lstNumbers.ListIndex, 1) lblSecond.Caption = lstNumbers.List(lstNumbers.ListIndex, 2) End Sub
Второй пример основан на свойстве TextColumn, устанавливающем номер столбца, значение которого в списке возвращается свойством Text, а также на свойстве BoundColumn, задающем номер столбца, значение которого в списке возвращается свойством Value (программа для той же группы элементов). Для работы с этими свойствами после создания списка в окне свойств для него задаются значения этих свойств. В нашем случае (для той же группы элементов) задайте - 2 для свойства TextColumn и 3 для свойства BoundColumn. Затем для тех же элементов наберите следующие коды:
Private Sub CommandButton1_Click() Dim i As Integer Randomize For i = 0 To 299 lstNumbers.AddItem i lstNumbers.List(i, 1) = Int(101 * Rnd()) lstNumbers.List(i, 2) = Int(101 * Rnd()) Next i End Sub
Private Sub lstNumbers_Click() lblFirst.Caption = lstNumbers.Text lblSecond.Caption = lstNumbers.Value End Sub
Если выделенные в списке значения ваша программа использует в вычислениях, то следует учитывать, что обращения к колонкам с целыми числами можно использовать без всяких ограничений – Visual Basic автоматически преобразует строки в целые числа. А вот при работе с вещественными числами необходимо использование встроенной функции Val, преобразующей строку в вещественное число, так как Visual Basic не преобразует автоматически строки в вещественные числа. Например, в следующем примере числа из 2 и 3 столбцов выделенной строки списка суммируются и результат выводится в текстовое окно.
Private Sub CommandButton1_Click() Dim i As Integer Randomize For i = 0 To 19 ListBox1.AddItem i ListBox1.List(i, 1) = 101 * Rnd() ListBox1.List(i, 2) = 101 * Rnd() Next i End Sub
Private Sub ListBox1_Click() Label1.Caption = Val(ListBox1.List(ListBox1.ListIndex, 1)) + _ Val(ListBox1.List(ListBox1.ListIndex, 2)) End Sub
Здесь обращения к числам в списке находятся в функции Val.
Элемент управления Поле со списком применяется для хранения списка значений. Сочетает в себе возможности списка и поля ввода. В отличие от списка у него отображается только один элемент. Возможность выделения нескольких элементов отсутствует. Позволяет пользователю вводить значения через поле ввода как в элементе Поле. Свойства ListBox, ListIndex, методы Clear, RemoveItem и AddItem полностью аналогичны таким же свойствам в Списке. Кроме того, есть ряд уникальных свойств:
DropButtonStyle – устанавливает вид поля со списком. Допустимые значения: fmDropButtonStylePlain или 0 - кнопка без символов; fmDropButtonStyleArrow или 1 - кнопка со стрелкой; fmDropButtonStyleEllipsis или 2 - кнопка с эллипсом; fmDropButtonStyleReduce или 3 – кнопка с линией. ListRows - устанавливает количество элементов, отображаемых в поле со списком; MatchRequired - допустимые значения: true – в поле нельзя ввести значения, отличные от перечисленных в списке; false – значения, отличные от перечисленных в списке ввести можно. MatchFound - допустимые значения: true – среди элементов поля со списком имеется элемент, совпадающий с элементом в поле ввода; false - в противном случае.
|