Будут рассмотрены те блоки кода, где установлены комментарии.
1) На экран выводится диалог открытия файла.
2) Если диалог открытия файла вернул имя файла, то происходит переход к блоку 3.
3) Открывается файл с переданным именем при помощи объекта File.
4) Инициализируется переменная intText, и в нее считывается количество строк в файле.
5) После прохождения файла до конца при помощи функции LineInputString его необходимо открыть заново.
6) Считывается «английская» часть файла одной строкой в переменную varEnText.
7) Первая русская фраза выводится в текстовое поле Label1, а соответствующая ей английская фраза – в текстовое поле Label2.
8) Счетчик фраз увеличивает свое значение.
9) Пробелы справа и слева удаляются.
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.21Private Sub List1_Click()
varStrng = Label3.Caption
Label3.Caption = Label3.Caption + List1.List(List1.ListIndex) + " "
End SubПри этом предыдущее содержимое Label3 запоминается в переменной varStrng.
31. Кнопка Сброс просто присваивает свойству Caption компонента Label3 пустую строку, как это показано в листинге 3.22.
Листинг 3.22Private Sub Command2_Click()
Label3.Caption = ""
End Sub32. Кнопка ? отменяет ввод последнего слова при помощи кода, приведенного в листинге 3.23. Листинг 3.23
Private Sub Command3_Click()
Label3.Caption = varStrng
End Sub33. Нажатие и отпускание стилуса проверяются на кнопке Подсказка. При нажатии стилусом 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