Опубликован: 13.09.2006 | Уровень: для всех | Доступ: свободно | ВУЗ: Тверской государственный университет
Лекция 7:

Организация диалога. Объект Assistant

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Метки и флажки

У объекта Balloon есть две коллекции - Labels с элементами Label и CheckBoxes с элементами CheckBox. В каждой из коллекций может содержаться не более пяти элементов. Элементами Labels являются метки, для которых, как правило, задается свойство Text, определяющее метку. Метки имеют тип, задающий их оформление. Все метки должны быть одного типа, так что настала пора рассказать еще об одном свойстве объекта Balloon. Тип меток задается свойством BalloonType объекта Balloon и имеет три возможных значения:

  • msoBalloonTypeNumbers - нумерованный список меток,
  • msoBalloonTypeBullets- список-бюллетень меток,
  • msoBalloonTypeButtons - список кнопок

Списки первых двух типов позволяют проинформировать пользователя о тех или иных предоставляемых возможностях. Конечно, для этой цели можно также использовать свойство Text самого объекта Balloon, но метки удобнее, поскольку информация предоставляется в структурированном виде.

Третий тип меток используется для получения информации от пользователя, который выбирает одну из нескольких (до пяти) возможностей, щелчком соответствующей кнопки. Метод Show, возвращающий номер нажатой кнопки, позволяет узнать, какая кнопка была выбрана. Тем самым появляется возможность организовать дальнейшие действия в зависимости от сделанного выбора.

Вместе или вместо меток третьего типа можно использовать свойство Button, благодаря которому в баллончике также появляются кнопки, а метод Show и в этом случае возвращает номер нажатой кнопки. Кнопки со стандартными именами, задаваемые Button, часто бывают полезными, но, конечно, не всегда приемлемы. Благодаря свойству Text у кнопок - меток, можно задать "свои" кнопки со своими именами.

Совместное использование меток третьего типа и свойства Button стало теперь возможным - я приведу пример такого использования.

Флажки (кнопки выбора), задаваемые элементами CheckBox, используются для той же цели, что и кнопки - они позволяют определить выбор пользователя. Существенное отличие состоит в том, что пользователь может выбрать не одну из предоставляемых ему возможностей, а несколько, взводя соответствующие флажки. Когда флажок взведен, то свойство Checked соответствующего элемента из коллекции CheckBoxes получает значение True. Каждое из этих свойств можно затем проверить и использовать при выборе последующих действий в программе.

Приведем пример, в котором действуют два объекта Balloon. Первый из них выясняет увлечения, используя флажки, второй - уведомляет об этих увлечениях, используя список меток в форме бюллетеня.

Public Sub CheckingHobbies()
	Dim FirstBall As Balloon, LastBall As Balloon
	Dim i As Integer
'Первый баллончик выясняет увлечения
	Assistant.FileName = "Rocky.acs"
	Set FirstBall = Assistant.NewBalloon
	With FirstBall
		.Heading = "Ваши увлечения"
		.Checkboxes(1).Text = "Футбол"
		.Checkboxes(2).Text = "Теннис"
		.Checkboxes(3).Text = "Шахматы"
		.Checkboxes(4).Text = "Плавание"
		.Checkboxes(5).Text = "Горные лыжи"
		.Show
	End With
'Второй баллончик уведомляет об увлечениях
	Assistant.FileName = "OffCat.acs"
	Set LastBall = Assistant.NewBalloon
	Dim Count As Integer
	Count = 0
	With LastBall
		.Heading = "Ваши увлечения"
		.BalloonType = msoBalloonTypeBullets
		For i = 1 To 5
			If FirstBall.Checkboxes(i).Checked Then
				Count = Count + 1
				.Labels(Count).Text = FirstBall.Checkboxes(i).Text
			End If
		Next i
		If Count > 0 Then
			.Text = "Вы любите:"
		Else
			.Text = "Вы ничего не любите"
		End If
		.Show
	End With
End Sub
Листинг 7.4.

А теперь взгляните на картинки, которые будут появляться в процессе выполнения этой процедуры.

Объект Balloon выясняет увлечения

Рис. 7.4. Объект Balloon выясняет увлечения
Объект Balloon уведомляет об увлечениях

Рис. 7.5. Объект Balloon уведомляет об увлечениях

Флажки и метки могут применяться одновременно, хотя вряд ли в этом есть смысл. Если пользователь должен сделать единственный выбор - применяйте метки, в случае множественного выбора - используйте флажки. В следующем примере я слегка модифицировал задачу выбора увлечения для того, чтобы продемонстрировать возможности анализа результата выбора, используя значение, возвращаемое методом Show:

Public Sub CheckingHobbies1()
	'В данном примере для задания предпочтений используются метки
	'и возможности анализа результата работы метода Show
	Dim FirstBall As Balloon, LastBall As Balloon
	Dim i As Integer
	Dim Answer As MsoBalloonButtonType
'баллончик выясняет увлечения
	Set FirstBall = Assistant.NewBalloon
	With FirstBall
		.Heading = "Ваш любимый вид спорта?"
		.BalloonType = msoBalloonTypeButtons
		.Labels(1).Text = "Футбол"
		.Labels(2).Text = "Теннис"
		.Labels(3).Text = "Шахматы"
		.Labels(4).Text = "Плавание"
		.Labels(5).Text = "Горные лыжи"
		.Button = msoButtonSetBackNextClose
		Answer = .Show
	End With
	'Анализ пользовательского выбора
	Select Case Answer
		Case 1
			MsgBox ("Футбол - любимая игра миллионов.")
		Case 2
			MsgBox ("Теннис -	красивый вид спорта.")
		Case 3
			MsgBox ("Шахматы - игра мыслителей.")
		Case 4
			MsgBox ("Плавание - нет ничего полезнее.")
		Case 5
			MsgBox ("Горные лыжи	- спорт избранных.")
		Case msoBalloonButtonBack
			MsgBox ("Показать предыдущий список игр?")
		Case msoBalloonButtonNext
			MsgBox ("Показать следующий список игр?")
		Case Else
			 MsgBox ("Вы совсем не спортсмен!")
			 
	End Select
End Sub
Листинг 7.5.

В нашем диалоговом окне три командные кнопки с фиксированными именами и пять меток, также имеющих тип кнопок. Пользователь может нажать каждую из этих 8 кнопок, и выбор пользователя можно затем проанализировать. Обратите внимание на тип переменной Answer, получающей результат метода Show, и на то, как она используется в операторе выбора Select. На следующем рисунке показан момент выбора пользователем одной из кнопок:

Организация выбора одной из многих возможностей

увеличить изображение
Рис. 7.6. Организация выбора одной из многих возможностей
< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Андрей Гуменюк
Андрей Гуменюк
Молдова