|
Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Макросы. Дальнейшая информация об объектах
Генерация текста - использование набора объектов
Рассматривается конструирование строки текста, при этом составляющие строки выбираются с использованием набора элементов управления. Результирующая фраза образуется конкатенацией составляющих.
Практическая работа 36. Генерация текста
Ниже описано назначение элементов управления (рис. 5.5), используемых в примере:
- ListBox содержит список партий начала прошлого столетия (большевики, анархисты :), рис. 5.5, центр, слева,
- массив из трeх элементов CheckBox предназначен для выбора одновременно возможных характеристик членов партий (например: растерянные, шумные :), здесь - определение1, см. рис. 5.5, центр,
- массив их двух элементов OptionButton предназначен для выбора взаимоисключающих характеристик (например: респектабельные, оборванные), здесь - определение2, см. рис. 5.5, центр, справа,
- соответственно вышеописанному используются 2 объекта Frame со свойствами Caption: определение1, определение2, см. рис. 5.5, центр и центр справа,
- текстовое поле внизу служит для вывода сформированной фразы,
- элемент управления HscrollBar - это элемент установки дискретных значений заданного диапазона (свойства Max, Min, Value устанавливают границы области значений и текущее значение; свойство LargeChange определяет шаг изменения данных при перемещении в выбранном диапазоне). На рис. 5.5 элемент управления HscrollBar находится вверху слева. Событие Change происходит при изменении положения ползунка на линейке прокрутки, событие Scroll генерируется при непрерывном перемещении ползунка,
- элемент управления Label1 служит для вывода числа присутствующих на митинге, собрании (данные элемента управления HscrollBar ), см. рис. 5.5 слева, ниже элемента управления HscrollBar,
- элемент управления ComboBox содержит список мест проведения митингов, партийных собраний (на Красной площади, на улицах, : ), см. рис. 5.5, справа,
- несколько полей меток в верхней части формы и одна внизу над текстовым полем используются для надписей.
табл. 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
