Visual Basic 6. Руководство разработчика

Класс


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.


Содержание раздела