Практическая работа 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 содержит список используемых элементов управления и значений некоторых свойств.
При выполнении процедуры 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 = 0End WithWith cboOrt.AddItem ("на Красной площади").AddItem ("на улицах").AddItem ("в подъездах").AddItem ("в пивной").AddItem ("в переулках").ListIndex = 0End WithstrVerb(0) = "выкрикивают "Да здравствует Коммунизм!!""strVerb(1) = "порицают большевиков"strVerb(2) = "произносят пламенные речи"strVerb(3) ="поносят всех"strVerb(4) = "кричат "Ура!!"strVerb(5) = "кричат: "Анархия - мать порядка!!"lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)End SubPrivate Sub ausgeben()strattribut = ""For i = 0 To 2If chkattribut(i).Value = 1 ThenIf strattribut = " Thenstrattribut = chkattribut(i).CaptionElsestrattribut = strattribut &", " & chkattribut(i).CaptionEnd IfEnd IfNext iIf optAussehen(0).Value ThenIf strattribut = "" Thenstrattribut = "респектабельных"Elsestrattribut = strattribut & ", " &"респектабельных"End IfElseIf strattribut = " Thenstrattribut = "оборванных"Elsestrattribut = strattribut & ", " & "оборванных"End IfEnd Ifstrausgabe = 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 = strausgabeEnd Sub' задание места проведения митинга, партсобранияPrivate Sub cboOrt_Click() ausgebenEnd Sub' задание одновременно возможных характеристик членов ' партийPrivate Sub chkattribut_click(index As Integer)ausgebenEnd Sub' задание количества присутствующих на митинге, собранииPrivate Sub hsbMenge_Change()lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)ausgebenEnd Sub' задание количества присутствующих на митинге, собранииPrivate Sub hsbMenge_scroll() lbl1.Caption = "Присутствовало: " & Str(hsbMenge.Value)End SubPrivate Sub lstPartei_Click() ' выбор из списка имеющихся ' партийausgebenEnd Sub' задание взаимоисключающих характеристик членов партийPrivate Sub optAussehen_Click(index As Integer) ausgebenEnd Sub
|