Класс
String
Последний пример в этом разделе — это очень простой класс, который реализует несколько полезных операций со строками. Класс String предусматривает три метода, реализованных в виде общедоступных функций.
• Integer2Binary(number As Long). Преобразует свой числовой аргумент в двоичное число и возвращает двоичное значение в виде строки.
• Number2String(number As integer). Преобразует свой числовой аргумент в строку и возвращает ее. Если число 395 передать этому методу в качестве аргумента, то возвращаемым значением будет строка "триста девяносто пять".
• LowerCaps(str As String). Преобразует свой аргумент в нижний регистр, причем первые буквы всех слов становятся заглавными, и возвращает новую строку. Если значение "триста девяносто пять" передать в качестве аргумента этому методу, то возвращаемым значением будет строка "Триста Девяносто Пять".
Члены класса String довольно просты, но они могут служить в качестве отправной точки при создании класса с функциями для манипуляции строками и числами, которые часто используются, но не реализованы в Visual Basic в чистом виде.
Три метода класса String реализованы в виде общедоступных функций, и показаны ниже.
Программа 15.17. Методы класса String
Public Function Number2String(Number)
Dim tenth As Integer
Dim leftover As Integer
Dim hundred As Integer
Dim thousand As Integer
If Number < 20 Then ' Чтение чисел меньших 20
NumString = ReadSingle(Number)
Elself Number < 100 Then ' Чтение чисел меньших 100
tenth = Fix(Number / 10)
NumString ReadTenths(tenth * 10)
leftover = Number (tenth * 10)
If leftover > 0 Then
NumString = NumString & " " & ReadSingle(leftover)
End If
Elself Number < 1000 Then ' Чтение чисел между 100 и 999
hundred = Fix(Number / 100)
NumString =
ReadSingle(hundred) & " hundred"
leftover = Number - (hundred * 100)
If leftover > 0 Then
tenth = Fix(leftover / 10)
If tenth > 0 Then NumString = _
NumString & " " & ReadTenths(tenth * 10)
leftover = Number - (hundred * 100) - (tenth * 10)
If leftover > 0 Then
NumString = NumString & " " & _
ReadSingle(leftover)
End If
End If
Else ' Чтение чисел между 1000 и 9999
thousand = Fix(Number / 1000)
NumString = ReadSingle(thousand) & " thousand"
leftover
= Number - (thousand * 1000)
If leftover > 0 Then
hundred
= Fix(leftover / 100)
If hundred > 0 Then
NumString
= NumString & " " &_
ReadSingle(hundred) & " hundred"
End If
leftover
= Number – (thousand * 1000)- _
(hundred *100)
If leftover > 0 Then
tenth Fix(leftover / 10)
If tenth > 0 Then
NumString = NumString & " " & _
ReadTenths(tenth * 10)
End If
leftover = Number - (thousand * 1000) - _
(hundred * 100)
- (tenth * 10)
If leftover > 0 Then
NumString
= NumString & " " & _
ReadSingle(leftover)
End If
End If
End If
End If
Number2String = NumString
End Function
Public Function LowerCaps( str As String) As String
Dim newWord As String, newStr As String
Dim tempStr As String
Dim WDelimiter As Integer
tempStr = Trim(str)
WDelimiter = InStr(tempStr, " ")
While WDelimiter > 0
newWord = Left(tempStr, WDelimiter)
tempStr = Right(tempStr, Len(tempStr) - WDelimiter)
newStr = newStr & UCase(Left(newWord, 1)) & _
Mid(newWord, 2, Len(newWord) - 1)
WDelimiter = InStr(tempStr, " ")
Wend
newWord = tempStr
newStr = newStr & UCase(Left(newWord, 1)) & _
Mid(newWord, 2, Len(newWord) - 1)
LowerCaps = newStr
End Function
Public Function Integer2Binary(ByVal Number As Long) As String
HexNum = Hex(Number)
For i = 1 To Len(HexNum)
BinNum = BinNum & BinaryDigits("&H" & Mid(HexNum, i, 1))
Next
Integer2Binary = BinNum
End Function
Функция Number2Stnng() наиболее сложная. Она похожа на функцию, которая используется проектом READNUM в приложении С (на компакт-диске) для считывания числовых значений. Функция Number2Stnng() может преобразовывать целые значения в диапазоне от 0 до 9999, но можно легко добавить код для работы с большими и нецелыми значениями. Функция Number2Stnng() вызывает функции ReadTenths() и ReadSingle(), которые являются закрытыми членами класса, т.е. их можно вызывать из компонентов класса, но внешние программы не имеют к ним доступа. Если просмотреть члены класса StringClass в броузере объектов, то можно увидеть закрытые члены класса. Однако они будут представлены как Private, напоминая о том, что к ним нет доступа из их приложений.
Тестовая форма класса StringClass показана на рисунке 15.10. Пользователь может ввести числовое значение в текстовое окно наверху формы и щелкнуть кнопки Convert to String или Convert to Binary для преобразования значения в строку или двоичное значение соответственно. Когда текстовое окно под кнопкой Convert to String содержит строку (строка, соответствующая числовому значению или значению, введенному пользователем), то пользователь может щелкнуть кнопку Convert to LCaps для преобразования строки в нижний регистр.
Рис. 15.10. Тестовая форма класса String
Код тестовой формы достаточно прост. Вначале объявляется объектная перeменная, которая будет использоваться для доступа к классу String:
Dim NS As New NumStrings.StringClass
NumStrings это имя проекта, a StringClass — имя модуля класса. Код, соответствующий трем командным кнопкам, показан ниже.
Private Sub Command1.Click()
Text2.Text = NS.Number2String(Text1.Text)
End Sub
Private Sub Command2_Click ()
Dim NStr As String
NStr = NS.Number2String(Text1.Text)
Text3.Text = NS.LowerCaps(NStr)
End Sub
Private Sub Command3_Click()
Text4.Text =
NS.Integer2Binary(Text1.Text)
End Sub
Каждая кнопка вызывает различные методы переменной NS.
Код, соответствующий кнопке Command2, вызывает два метода друг за другом. Вначале он преобразует числовое значение из поля Textl в строку, а затем вызывает метод LowerCaps для преобразования строки в нижний регистр. Два вызова можно объединить в один оператор, как показано ниже:
Text3.TextNStr =
NS.LowerCaps(NS.Number2String(Text1.Text))
В папке этой главы на компакт-диске находится проект NumStr. Откройте его в Visual Basic, исследуйте код или добавьте к нему новые члены. Сейчас самое время для регистрации этого класса в системе, чтобы его можно было использовать в примерах главы 22, где будет создана страница активного сервера, которая использует этот компонент для создания HTML-страниц.
В следующей главе внимание будет сосредоточено на второй категории компонентов ActiveX — элементах управления ActiveX. Элементы управления ActiveX намного проще, чем ActiveX DLL, и несколько интереснее, поскольку они имеют видимый интерфейс пользователя. Программирование интерфейса элементов управления ActiveX такое же, как и для программных компонентов ActiveX. Процесс реализации свойств и методов для элементов управления ActiveX также идентичен описанному в этой главе. В дополнение, необходимо создавать видимый интерфейс элементов управления, что очень похоже на создание форм.
Глава 16. Конструирование элементов управления ActiveX
• Конструирование элементов управления ActiveX
• Конструирование элемента управления FLEXLabel
• Взаимодействие с объектом-контейнером
• Конструирование страниц свойств
• Построение базового элемента управления
• Улучшение существующих элементов управления
Если и есть хоть одна возможность Visual Basic, которая привлекает всех без исключения разработчиков, так это — ActiveX. Сейчас Visual Basic является простым, легким в изучении и наиболее популярным языком конструирования элементов ActiveX. Элемент управления ActiveX - это то, что раньше называлось элементом управления OLE. Можно предположить, что элементы управления ActiveX являются расширением Visual Basic. Это объекты, представленные на панели элементов управления Visual Basic маленькими значками, которые можно добавлять в любые формы разрабатываемого приложения для расширения его функциональных возможностей.
Первый вопрос, который возникает: почему они называются элементами управления ActiveX? Скорее всего, это вопрос коммерции. OLE-элементы ассоциировались с тяжелым и кропотливым программированием на С. Название, вроде «ActiveX» должно помочь среднему программисту преодолеть робость. И действительно, эта часть VB была так хорошо реализована, что даже для среднего программиста теперь доступна разработка элементов управления ActiveX. Речь идет не только о том, что с помощью Visual Basic 6 можно создавать элементы управления ActiveX, а и о том, как легко это можно сделать. Кроме того, появилась возможность использования ActiveX на Web-страницах — одной из самой быстро растущих арен для разработки программ на Visual Basic.
Кто должен конструировать элементы управления
ActiveX? Если можно было обойтись без ActiveX раньше, почему их необходимо использовать сейчас? Действительно, еще некоторое время многие пользователи VB смогут не заниматься разработкой собственных элементов управления ActiveX. Но, рано или поздно, все же придется этим заняться. Если разрабатывается интересная утилита, которая может использоваться в нескольких приложениях, почему бы ни сделать ее элементом управления ActiveX? Кроме того, зачем отказывать себе в удовольствии попробовать что-нибудь новое? ActiveX помогут программисту на VB расширить диапазон собственных возможностей. Быть способным конструировать элементы для использования их и на вашем компьютере, и в Internet представляется прекрасной перспективой для тех, кто зарабатывает себе на жизнь программированием на Visual Basic.