Лекция 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