10) Строка varEnText разбивается на слова, которые помещаются в массив strAr. Массив динамический, поэтому нельзя сразу сказать, сколько в нем элементов.
11) Значение intInt предполагает, что в массиве не более 10 000 элементов. Каждый элемент массива заносится в список List1 до тех пор, пока не будет достигнут конец массива. Следующий шаг вызывает исключительную ситуацию, которая перехватывается при помощи блока On Error Resume Next. Проверка значения Err.Number позволяет определить наличие исключительной ситуации, вызов Err.Clear очищает флаг ошибки, а оператор Exit For завершает цикл.
12) В последнем блоке кода из списка удаляются все повторяющиеся слова.
29. На этом этапе программа уже выводит на экран русскую фразу и список английских слов. Осталось написать обработчики для работы с кнопками.
30. Щелчок стилусом на слове в списке добавляет это слово к предложению, составляемому в поле Label3. Соответствующий код приведен в листинге 3.21.
Листинг 3.21
Private Sub List1_Click()
varStrng = Label3.Caption
Label3.Caption = Label3.Caption + List1.List(List1.ListIndex) + " "
End Sub
При этом предыдущее содержимое Label3 запоминается в переменной varStrng.
31. Кнопка Сброс просто присваивает свойству Caption компонента Label3 пустую строку, как это показано в листинге 3.22.
Листинг 3.22
Private Sub Command2_Click()
Label3.Caption = ""
End Sub
32. Кнопка ? отменяет ввод последнего слова при помощи кода, приведенного в листинге 3.23. Листинг 3.23
Private Sub Command3_Click()
Label3.Caption = varStrng
End Sub
33. Нажатие и отпускание стилуса проверяются на кнопке Подсказка. При нажатии стилусом Label2 выводится поверх Label3, а при отпускании снова перемещается на задний план. Это реализуется при помощи кода, приведенного в листинге 3.24. Листинг 3.24
Private Sub Command4_MouseDown(button, shift, x, y)
Label2.ZOrder vbBringToFront
End Sub
Private Sub Command4_MouseUp(button, shift, x, y)
Label2.ZOrder vbSendToBack
End Sub
34. Обработка щелчка на кнопке Принять отличается некоторой сложностью. Надо не только проверить правильность набора фразы и сообщить об этом пользователю, но и перейти к следующей фразе, если предыдущая была набрана удачно. Это реализуется при помощи кода, приведенного в листинге 3.25. Листинг 3.25
Private Sub Command1_Click()
If intText <> 0 Then
If StrComp(Trim(Label2.Caption), Trim(Label3.Caption), vbTextCompare) = 0 Then
MsgBox «Ай, малодец! Получилось! Следующая фраза», vbOKOnly
flFile.Open fdOpen.FileName, fsModeInput, 1
For intCount = 1 To intText
varText = flFile.LineInputString
If intCount = intStep Then Label1.Caption = varText
If intCount = intStep + intText / 2 Then Label2.Caption = varText
Next
flFile.Close
Label3.Caption = ""
If intStep > intText / 2 Then
MsgBox «Вы закончили упражнение», vbOKOnly
App.End
End If
intStep = intStep + 1
Else
MsgBox «He получилось, попробуйте еще раз», vbOKOnly
End If
End If
End Sub
35. На этом этапе приложение уже работает практически полностью. Осталось разобраться с командой меню Редактирование шрифта и его подменю. Весь код реакций на выбор одного из пунктов подменю команды Редактирование шрифта будет помещен в событие MenuBarl_MenuClick и будет обрабатываться при помощи конструкций Case, как это показано в листинге 3.26. Листинг 3.26
Case «itBold»
If mnuFile.Items.Item(1). SubItems(1). Caption = «Полужирный» Then
Label1.FontBold = True
Label2.FontBold = True
Label3.FontBold = True
List1.FontBold = True
mnuFile.Items.Item(1). SubItems(1). Caption = «*Полужирный»
Else
Label1.FontBold = False
Label2.FontBold = False
Label3.FontBold = False
List1.FontBold = False
mnuFile.Items.Item(1). SubItems(1). Caption = «Полужирный»
End If
Case «itItal»
If mnuFile.Items.Item(1). SubItems(2). Caption = «Наклонный» Then
Label1.FontItalic = True
Label2.FontItalic = True
Label3.FontItalic = True
List1.FontItalic = True
mnuFile.Items.Item(1). SubItems(2). Caption = «*Наклонный»
Else
Label1.FontItalic = False
Label2.FontItalic = False
Label3.FontItalic = False
List1.FontItalic = False
mnuFile.Items.Item(1). SubItems(2). Caption = «Наклонный»
End If
Case «it8»
If mnuFile.Items.Item(1). SubItems(3). SubItems(1). Caption = «8» Then
Label1.FontSize = 8
Label2.FontSize = 8
Label3.FontSize = 8
List1.FontSize = 8
mnuFile.Items.Item(1). SubItems(3). SubItems(1). Caption = «*8»
mnuFile.Items.Item(1). SubItems(3). SubItems(2). Caption = «10»
mnuFile.Items.Item(1). SubItems(3). SubItems(3). Caption = «12»
End If
Case «it10»
If mnuFile.Items.Item(1). SubItems(3). SubItems(2). Caption = «10» Then
Label1.FontSize = 10
Label2.FontSize = 10
Label3.FontSize = 10
List1.FontSize = 10
mnuFile.Items.Item(1). SubItems(3). SubItems(1). Caption = "8"
mnuFile.Items.Item(1). SubItems(3). SubItems(2). Caption = «*10»
mnuFile.Items.Item(1). SubItems(3). SubItems(3). Caption = «12»
End If
Case «it12»
If mnuFile.Items.Item(1). SubItems(3). SubItems(3). Caption = «12» Then
Label1.FontSize = 12
Label2.FontSize = 12
Label3.FontSize = 12
List1.FontSize = 12
mnuFile.Items.Item(1). SubItems(3). SubItems(1). Caption = "8"
mnuFile.Items.Item(1). SubItems(3). SubItems(2). Caption = «10»
mnuFile.Items.Item(1). SubItems(3). SubItems(3). Caption = «*12»
End If
36. На этом можно закончить работу над кодом приложения. Оно полнофункционально, хотя далеко от совершенства. Можно было бы сделать еще достаточно много. Нужно вынести в подпрограммы повторяющийся код, сами подпрограммы следует вынести в отдельный модуль. Можно развивать функциональность, вести подсчет статистики, добавить редактор файлов. Можно развивать дизайн и добавить окно-заставку при запуске, справочную систему и окно О программе. Все это, если у вас будет желание, вы можете проделать сами, ведь надо же на чем-то тренироваться самостоятельно.
Читать дальше
Конец ознакомительного отрывка
Купить книгу