Начало » Конспекты школьника » Часть 2 » [Учимся программировать!][Использование списков]
Учимся программировать!
Конспекты школьника.
www.klyaksa.net
Использование списков
Давайте продолжим работу с проектом,
который мы создали на предыдущем занятии.
Вспомним: имя файла, в который
записывается информация вводилось в
текстовом поле txtFileName. Для того чтобы
облегчить жизнь пользователю, по-умолчанию,
свойство text имело какое-то значение (например,
"Мой файл.txt").
На этом занятии модернизируем проект
таким образом, чтобы "ленивому"
пользователю предоставить больший выбор.
Для этого заменим текстовое поле - полем со
списком.
Поле со списком (ComboBox) — это по сути комбинированный список,
который представляет собой комбинацию двух элементов управления — самого
списка со значениями и поля ввода текста (текстового поля).
Список (ListBox) — позволяет пользователю выбирать из списка один или
несколько элементов. В любое время в список можно добавлять новые элементы
или удалять существующие. Если не все элементы могут одновременно
отобразиться в поле списка, то в нем автоматически отображаются полосы
прокрутки.
Поля со списком используются в том случае, если нельзя заранее определить значения, которые
следует включить в список, или список содержит слишком много элементов. В
таком списке нужное значение можно не только выбирать, но и вводить
непосредственно в поле ввода. Новое значение после ввода автоматически
помещается в список.
Для поля со списком важную роль играют события как поля ввода, так и
списка. Основные из них - Click, используемое для выбора элемента списка, и
- Change — для изменения записи в поле ввода текста.
Поле со списком имеет почти все свойства текстового поля
(TextBox) и списка (ListBox) (исключением является свойство
MultiLine). Однако особо следует выделить свойство
Style, определяющее внешний вид и функционирование поля со
списком.
Откройте проект. Замените текстовое поле
на поле со списком.
Задайте имя объекту - cboFileName, и задайте
элементы списка (свойство List).
Свойство списка Text — самая простая возможность получить
текст выбранного элемента списка. В любой момент времени значение этого
свойства содержит текст выбранного элемента списка или пустую строку, если
ни один элемент не выбран. Для определения текста выбранного элемента
существуют и другие возможности. Однако следует помнить, что и в памяти все
элементы списка сохраняются в виде списка. При этом первый элемент списка
имеет индекс 0.
Присвоим этому свойству значение "Мой
файл.txt" - это будет значение по-умочанию.
Запустим проект на выполнение. Теперь
пользователь может выбрать имя для файла из
списка или ввести самостоятельно. Но если
щелкнуть кнопку СОХРАНИТЬ, то появится
сообщение об ошибке. А все оттого, что мы не
исправили код записи в файл. Имя файла
берется из текстового поля, но ведь мы его
заменили на список.
Private Sub cmd1_Click()
If Len(txtFileName.Text) Then
If Option1.Value = True Then Open txtFileName.Text For Append As #1
If Option2.Value = True Then Open txtFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла",
vbExclamation, "Внимание!"
End If
End Sub
Исправим этот код.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Теперь программа работает, но продолжим
улучшение. Сделаем так, чтобы после
добавление в файл, имя которого
пользователь ввел сам, имя этого файла
добавлялось в список. Для добавления в
список служит метод AddItem.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
cboFileName.AddItem (cboFileName.Text)
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Теперь при щелчке по кнопке ЗАПИСЬ в
список добавляется новое значение. Но
теперь появилась одна неприятная
особенность - при записи в один и тот же файл,
его имя несколько раз добавляется в список.
Исправим это. Прежде чем добавить значение
в список, переберем его и проверим нет ли
уже такого значения. Переменную already будем
использовать как флаг, который будет
указывать нашли (1) или не нашли (0) такое
значение в списке.
Private Sub cmd1_Click()
If Len(cboFileName.Text) Then
For i = 0 To cboFileName.ListCount
If cboFileName.List(i) = cboFileName.Text Then already = 1
Next i
If already = 0 Then cboFileName.AddItem (cboFileName.Text)
If Option1.Value = True Then Open cboFileName.Text For Append As #1
If Option2.Value = True Then Open cboFileName.Text For Output As #1
Print #1, txtInput.Text
Close #1
If Check1.Value = 1 Then txtInput.Text = ""
Else
MsgBox "Необходимо ввести имя файла", vbExclamation, "Внимание!"
End If
End Sub
Готово! Запустите проект и проверьте его
работу.
предыдущий урок
:: содержание :: следующий
урок
|