Владимир Волков - Программирование для карманных компьютеров
19.В Рти СЂРёСЃСѓРЅРєРё нужно поместить РІ каталог проекта Рё добавить РёС… РІ проект командой Project ? Add File. Р’ РѕРєРЅРµ, которое будет выведено РЅР° экран, нужно выбрать тип файлов All Files (*.*), взвести флажок Add As Related Document, выбрать нужный файл Рё нажать РєРЅРѕРїРєСѓ РћРљ. Рту последовательность действий нужно выполнить для каждого СЂРёСЃСѓРЅРєР°. Добавление файлов Рє проекту позволит среде автоматически копировать РёС… РЅР° устройство Рё включать РІ состав поставочного комплекта. После того как файлы Р±СѓРґСѓС‚ добавлены Рє проекту, РѕРєРЅРѕ структуры проекта должно выглядеть, как РЅР° СЂРёСЃ.В 3.30.
Рис. 3.30. Окно структуры проекта с файлами изображений.20. Теперь можно добавить изображения к компоненту ImageList. Для этого в начало метода Form_Load() нужно добавить код, приведенный в листинге 3.16. Листинг 3.16
Dim imLst As ImageList
Set imLst = ImageList1
imLst.Add В«WindowsStart Menuwhite.bmpВ»
imLst.Add В«WindowsStart Menuyellow.bmpВ»
imLst.Add В«WindowsStart Menugreen.bmpВ»
MenuBar1.ImageList = imLst.hImageListВ этом коде создается объектная переменная типа ImageList. Она связывается с компонентом ImageList1, после чего к коллекции рисунков добавляются созданные ранее изображения. Затем остается лишь связать коллекцию рисунков с компонентом MenuBar1. Должен быть указан полный путь к добавляемому рисунку от корневого каталога устройства. Поскольку для проекта в настройках его свойств был задан путь WindowsStart Menu, то для изображений нужно добавить этот путь в виде префикса к имени файла.
21. В тех фрагментах кода, где устанавливалось свойство Caption для кнопок, нужно закомментировать строки установки Caption и вместо них ввести команды присвоения изображений. Поскольку сам ImageList с компонентом MenuBar уже связывался в методе Form_Load, то связывание изображений с кнопками производится простым указанием индекса изображения в коллекции ImageList, как показано в листинге 3.17.
Листинг 3.17Rem mnuClr1.Caption = «1»
mnuClr1.Image = 1
…
Rem mnuClr2.Caption = В«2В»
mnuClr2.Image = 2
…
Rem mnuClr3.Caption = В«3В»
mnuClr3.Image = 322. Теперь можно запустить проект и удостовериться, что изображения выведены на поверхность кнопок.
23. Также программа должна взять текстовый файл, считать из него фразу на русском языке и вывести в верхнее текстовое поле, считать соответствующую ей английскую фразу и вывести ее в нижнее текстовое поле, находящееся на заднем плане, а затем в случайном порядке считать английские слова в количестве в три раза большем, чем надо для составления фразы, и заполнить ими список ListBox.
24. Прежде всего нужно создать текстовый файл. Достаточно в Блокноте открыть текстовый файл, назвать его phrase.txt и сохранить в каталоге проекта. Содержимое файла приведено в листинге 3.18.
Листинг 3.18Kak dela
Vsego horoshego
Do vstrechi
how are you
good luck
see you later25.В Ртот файл нужно добавить Рє проекту, как это было сделано СЃ файлами СЂРёСЃСѓРЅРєРѕРІ. Р СѓСЃСЃРєРёРµ фразы написаны транслитерацией, поскольку эмулятор РЅРµ русифицирован. Р’ случае запуска данной программы РЅР° корректно русифицированном Pocket PC 2003 СЂСѓСЃСЃРєРёРµ фразы можно писать кириллицей.
26. Чтобы загрузить файл, нам понадобятся еще РґРІРµ ActiveX библиотеки – File System Рё Common Dialog. РС… нужно добавить РІ проект, Р° затем разместить РЅР° форме. Библиотека File System РїСЂРё добавлении Рє проекту создает компоненты File Рё FileSystem. Компонент FileSystem дает возможность осуществлять манипуляции СЃ файлами Рё каталогами, такие как создание, удаление, переименование, перемещение, изменение атрибутов. Р’ нашем приложении этот компонент РЅРµ потребуется, РЅР° форме надо разместить только компонент File, который позволяет открыть файл, читать РёР· него Рё записывать информацию РІ файл.
27. После размещения этих компонентов на форме нужно добавить объявления переменных в начало модуля, как это показано в листинге 3.19.
Листинг 3.19Option Explicit
Dim intText, intInt, intStep, intCount As Integer
Dim varText, varEnText
Dim varStrng As String
Rem Объявляем переменную и связываем ее с объектом File
Dim flFile As File
Set flFile = File1
Rem Объявляем переменную и связываем ее с объектом диалога
Dim fdOpen As CommonDialog
Set fdOpen = CommonDialog128. Теперь необходимо создать обработчик события щелчка на пункте меню Открыть. Для этого в уже имеющийся обработчик события Private Sub MenuBar1_ MenuClick нужно добавить еще одну секцию Case. Код будет выглядеть так, как показано в листинге 3.20. Листинг 3.20
Private Sub MenuBar1_MenuClick(ByVal Menu As MenuBarLib.MenuBarMenu)
Select Case Menu.Key
Case В«itExitВ»
App.End
Case В«itOpenВ»
Rem 1
fdOpen.ShowOpen
Rem 2
If fdOpen.FileName <> "" Then
Rem 3
flFile.Open fdOpen.FileName, fsModeInput,В 1
Rem 4
intText = 0
While Not flFile.EOF
intText = intText + 1
flFile.LineInputString
Wend
Rem 5
flFile.Close
flFile.Open fdOpen.FileName, fsModeInput, 1
Rem 6
For intCount = 1 To intText
varText = flFile.LineInputString
If intCount > intText/2 Then varEnText=varEnText +" "+varText
Next
intStep = 1
flFile.Close
Rem 7
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
Rem 8
intStep = 2
flFile.Close
Dim strAr
Dim strSt As StringRem 9
varEnText = Trim(varEnText)
Rem 10
strAr = Split(varEnText, " ", – 1, vbTextCompare)
Rem 11
intInt = 10000
For intCount = 0 To intInt
On Error Resume Next
List1.AddItem strAr(intCount)
If Err.Number Then
Err.Clear: Exit For
End If
Next
Rem 12
Dim intCount2 As Integer
For intCount = 1 To List1.ListCount
For intCount2 = intCount + 1 To List1.ListCount
If (StrComp(List1.List(intCount), List1.List(intCount2), vbTextCompare) = 0)
Then
List1.RemoveItem (intCount2): intCount2=intCount2-1
End If
Next
Next
End If
End Select
End Sub
Будут рассмотрены те блоки кода, где установлены комментарии.
1) На экран выводится диалог открытия файла.
2) Если диалог открытия файла вернул имя файла, то происходит переход к блоку 3.
3) Открывается файл с переданным именем при помощи объекта File.