Спонсор: Microsoft
Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5441 / 619 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 5:

Макросы. Дальнейшая информация об объектах

Генерация текста - использование набора объектов

Рассматривается конструирование строки текста, при этом составляющие строки выбираются с использованием набора элементов управления. Результирующая фраза образуется конкатенацией составляющих.

Практическая работа 36. Генерация текста

Ниже описано назначение элементов управления (рис. 5.5), используемых в примере:

  • ListBox содержит список партий начала прошлого столетия (большевики, анархисты :), рис. 5.5, центр, слева,
  • массив из трeх элементов CheckBox предназначен для выбора одновременно возможных характеристик членов партий (например: растерянные, шумные :), здесь - определение1, см. рис. 5.5, центр,
  • массив их двух элементов OptionButton предназначен для выбора взаимоисключающих характеристик (например: респектабельные, оборванные), здесь - определение2, см. рис. 5.5, центр, справа,
  • соответственно вышеописанному используются 2 объекта Frame со свойствами Caption: определение1, определение2, см. рис. 5.5, центр и центр справа,
    Генерация текста; вид формы

    Рис. 5.5. Генерация текста; вид формы
  • текстовое поле внизу служит для вывода сформированной фразы,
  • элемент управления HscrollBar - это элемент установки дискретных значений заданного диапазона (свойства Max, Min, Value устанавливают границы области значений и текущее значение; свойство LargeChange определяет шаг изменения данных при перемещении в выбранном диапазоне). На рис. 5.5 элемент управления HscrollBar находится вверху слева. Событие Change происходит при изменении положения ползунка на линейке прокрутки, событие Scroll генерируется при непрерывном перемещении ползунка,
  • элемент управления Label1 служит для вывода числа присутствующих на митинге, собрании (данные элемента управления HscrollBar ), см. рис. 5.5 слева, ниже элемента управления HscrollBar,
  • элемент управления ComboBox содержит список мест проведения митингов, партийных собраний (на Красной площади, на улицах, : ), см. рис. 5.5, справа,
  • несколько полей меток в верхней части формы и одна внизу над текстовым полем используются для надписей.

табл. 5.4 содержит список используемых элементов управления и значений некоторых свойств.

Таблица 5.4. Генерация текста; элементы управления и значения свойств
Элемент управления Значение свойства
TextBox Name=txt1
Multiline=Тrue
ListBox Name=lstPartei
ComboBox Name=cboOrt
Style=2 - DrogDownList
Frame Name=Attr1
Caption=определение1
CheckBox(0) Name=chkAttribut
Caption=растерянных
Index=0
CheckBox(1) Name=chkAttribut
Index=
Caption=шумных
CheckBox(2) Name=chkAttribut
Index=2
Caption=озабоченных
Frame Name=Attr2
Caption= определение2
OptionButton(0) Name=optAussehen
х Caption=респектабельны
Index=0
OptionButton(1) Name=optAussehen
Сaption=оборванных
Index=1
Label Name=lbl1
HScrollBar Name=hsbMenge
Max=100
Min=0
Value=100
LadgeChange=10

При выполнении процедуры Form_Load (), см. код ниже, создаeтся список (lstPartei - список названий партий) ListBox и список (мест проведения митингов, партсобраний) ComboBox (Name = cboOrt), см. две инструкции With : End With. Соответствие подлежащее - сказуемое обеспечивается соответствием нумерации элементов списков strVerb() и lstPartei(). Маркированные на экране после старта проекта элементы списков определяются заданием значений свойства ListIndex.

Процедура Private Sub ausgeben () формирует текст (strausgabe) с использованием параметров набора управляющих элементов.

Определениями в предложении могут быть одно, два или три значения свойства Caption элементов массива объектов CheckBox (i) (см. цикл For i = 0 To 2:); возможность обработки в цикле обеспечена наличием массива объектов. Далее в процедуре Private Sub ausgeben () проводится анализ состояния переключателей optAussehen(), что позволяет сделать выбор следующего (уже из группы взаимоисключающих) определения в искомом предложении.

При конструировании искомого предложения (strausgabe) используются элементы списков ListBox (lstPartei - список имеющихся партий) и ComboBox (cboOrt - место проведения митингов, партсобраний). Для вывода на экран сказуемого используется конструкция ( lstPartei.ListIndex ), см. конец процедуры Private Sub ausgeben (), возвращающая номер выбранного элемента.

Следующие процедуры служат для:

  • Private Sub cboOrt_Click() - задания места проведения митинга, партсобрания,
  • Private Sub chkattribut_Click(index As Integer) - выбора одновременно возможных определений;
  • Private Sub hsbMenge_Change() - задания количества присутствующих на митинге, собрании,
  • Private Sub hsbMenge_scroll() - задания количества присутствующих;
  • Private Sub lstPartei_Click() - выбора партии из списка имеющихся;
  • Private Sub optAussehen_Click(index As Integer) - выбора взаимоисключающих определений.

Во всех случаях вызывается процедура Private Sub ausgeben (), что позволяет при выборе пользователем значений параметров элементов управления/элементов списков конструировать предложение. Учeт особенностей построения предложения в английском, немецком, русском и т.д. языках может быть реализован в данном примере при конструировании строки strausgabe.

Последовательность действий:

  • создать на форме необходимые элементы управления,
  • задать значения их свойств,
  • ввести код, данный ниже, стартовать проект,
  • сделать выбор партии в списках партий,
  • задать число присутствующих (элемент управления HscrollBar ),
  • выбрать определения в полях определение1 и определение2,
  • выбрать место проведения митинга, собрания (список ComboBox),
  • наблюдать результат, рис. 5.5.
(General) (Declarations) 
Dim strausgabe As String, strattribut As String, i As Integer
' описание массива сказуемых с дополнениями
Dim strVerb(6) As String 

Private Sub Form_Load()

With lstPartei
.AddItem ("большевиков")
.AddItem ("меньшевиков")
.AddItem ("эсеров")
.AddItem ("бундовцев")
.AddItem ("кадетов")
.AddItem ("анархистов")
.ListIndex = 0
End With

With cboOrt
.AddItem ("на Красной площади")
.AddItem ("на улицах")
.AddItem ("в подъездах")
.AddItem ("в пивной")
.AddItem ("в переулках")
.ListIndex = 0
End With

strVerb(0) = "выкрикивают "Да здравствует Коммунизм !!""
strVerb(1) = "порицают большевиков"
strVerb(2) = "произносят пламенные речи"
strVerb(3) ="поносят всех"
strVerb(4) = "кричат "Ура !!"
strVerb(5) = "кричат: "Анархия - мать порядка !!"
lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)
End Sub

Private Sub ausgeben()
strattribut = ""
For i = 0 To 2
If chkattribut(i).Value = 1 Then
If strattribut = " Then
strattribut = chkattribut(i).Caption
Else
strattribut = strattribut &", " & chkattribut(i).Caption
End If
End If
Next i
If optAussehen(0).Value Then
If strattribut = "" Then
strattribut = "респектабельных"
Else
strattribut = strattribut & ", " &"респектабельных"
End If
Else
If strattribut = " Then
strattribut = "оборванных"
Else
strattribut = strattribut & ", " & "оборванных"
End If
End If
strausgabe = Str(hsbMenge.Value) & " "
strausgabe = strausgabe & strattribut & " "
strausgabe = strausgabe & lstPartei.List(lstPartei.ListIndex) & " "
strausgabe = strausgabe & cboOrt.List(cboOrt.ListIndex) & " "
strausgabe = strausgabe & strVerb(lstPartei.ListIndex) & " "
txt1.Text = strausgabe
End Sub

' задание места проведения митинга, партсобрания
Private Sub cboOrt_Click() 
ausgeben
End Sub

' задание одновременно возможных характеристик членов 
' партий
Private Sub chkattribut_click(index As Integer)
ausgeben
End Sub

' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_Change()
lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)
ausgeben
End Sub

' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_scroll() 
lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)
End Sub

Private Sub lstPartei_Click() ' выбор из списка имеющихся 
' партий
ausgeben
End Sub

' задание взаимоисключающих характеристик членов партий
Private Sub optAussehen_Click(index As Integer) 
ausgeben
End Sub
антонина квасова
антонина квасова
Владимир Муратов
Владимир Муратов

По курсу Visual Basic где же взять материалы для практических работ? 

Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва