Символьные данные или строка символов - любая последовательность символов. В Visual Basic строка символов заключается в кавычки.
Примеры:
«12345678»; «Иванов»; «Фамилия И.О.»; «Michael McKelvi»; «tea for two»
В операторе описания типа используется ключевое слово String.
В Visual Basic символьные данные (строки символов) могут быть постоянной или переменной длины. Это определяется в операторе описания типа.
Примеры:
Dim Name As String*15, SurName As String - переменная Name постоянной длины 15 символов, переменная SurName переменной длины (может включать любое до 65000 количество символов).
Операции со строками.
1. Операция объединения (конкатенация)- & (символ “амперсанд”).
Примеры:
{ - символ пробела
«Иванов{» & «Иван{» & «Иванович» -получается строка «Иванов{Иван{Иванович».
Обратите внимание, что пробелы между словами вставлены в исходные строки.
Dim Name As String*15, SurName As String, Author As String*30
Name = «Michael» (дает результат «Michael{{{{{{{{» заданной длины 15 символов)
SurName = «McKelvi» (длина равна 7 символам)
Author = Name & SurName (переменная Author будет иметь значение
«Michael{{{{{{{McKelvi{{{{{{{{» заданной длины 30 символов). Обратите внимание, что до заданной длины строка дополняется пробелами.
|
|
2. Другие операции со строками реализуются с помощью специальных функций для работы со строками:
2.1. InStr - определяет, содержится ли одна строка символов в другой. Синтаксис применения функции:
InStr (строка 1, в которой ведется поиск; строка 2 -искомая строка).
Результатом поиска является значение позиции, с которой искомая строка 2 входит в строку 1. Если искомая строка не входит, то результат поиска равен 0.
Примеры:
InStr («abcd efg hijklmnopqrstuvwxyz», «efg»)- результат 5.
InStr («abcdefghijklmnopqrstuvwxyz», «123»)- результат 0.
Имеются функции для определения длины строки, удаления части строки, замены части строки и др.
См. файл 005Stroka_Function1.doc.
Элемент Текстовое окно ( TextBox).
Используется для получения от пользователя данных и вывода символьной информации.
Наиболее важные свойства:
MaxLenght (Максимальная длина) - количество вводимых или выводимых символов (0- можно вводить или выводить любое количество символов).
MultiLine (Несколько строк) - принимает значение True (в окне несколько строк) или False (в окне одна строка). Для того, что бы начать текст с новой строки необходимо в место разрыва добавить символ перевода строки используя константу VBCRLF или два символа с кодами 13 и 10 соответственно.
Text1.text = “Первая линяя” & VBCRLF & “Вторая линия”
Или
Text1.text = “Первая линяя” & chr(13) & chr(10) & “Вторая линия
Text - определяет вводимую или выводимую в окне строку, значение свойства можно изменять как в процессе работы программы так и при проектировании формы. Что бы узнать текущее значение элемента textbox необходимо считать значение свойства text.
|
|
Scrollbars – свойство определяющее расположение линеек прокрутки снизу, сбоку или снизу и сбоку (только для многострочных окон).
Если необходимо запретить пользователю редактировать текстовую информацию в окне то свойство Lock должно быть равно False При этом пользователь может выделять текст и копировать его используя буфер обмена.
Alignment – свойство определяющее выравнивание текста внутри окна.
При работе с текстовым окном удобно использовать событие «Нажатие клавиши» ( KeyPress ), нажимая на клавишу Enter («Ввод») в конце строки, и обрабатывать его соответствующей процедурой обработки события. Ascii-код клавиши Enter равен 13.
Основные события элемента управления
Change – возникает при изменении текста в текстовом окне
Click – возникает при щелчке по элементу управления или при изменении данных в элементе
DblClick – двойной щелчок мышью
Key Press – нажатие и отпускание клавиши на клавиатуре
MouseUp MouseDown – нажатие и отпускание кнопки мыши
LostFocus – возникает перед переходом указателя на другой элемент управления формы
Метод SetFocus устанавливает курсор в текстовое окно (удобно устанавливать курсор не щелчком мыши, а программно методом SetFocus).
Элемент управления Frame (Рамка)
Элемент управления Frame (Рамка) позволяет разделить на форме функциональные группы элементов.
Caption – текстовое свойство определяющее заголовок рамки.
Используя свойства Enabled (Доступна) и Visible (Видимость) для рамки, можно сделать все элементы внутри рамки доступными или нет для каких- либо действий и видимыми или невидимыми.
BorderStyle – определяет вид границы рамки.
Проект.
Разместим на форме две командные кнопки и две рамки. Первая рамка объединяет текстовые окна для демонстрации операции объединения (конкатенации) строк, вторая - для поиска символов в строке.
Командные кнопки делают доступным соответствующие рамки и находящиеся в них текстовые окна. Форма показана на рисунке.
Набираемая в текстовых окнах исходная информация вводится нажатием клавиши Enter. При этом курсор с использованием метода SetFocus переводится в следующее окно для ввода данных.
Имена управляющих элементов следующие:
Командные кнопки: Command1 и Command2.
Надписи кнопок заданы значениями свойства Caption. “ Конкатенация ” и “Поиск”
Рамки: Framе1 и Frame2.
Названия рамок заданы значениями свойства Caption. “ Конкатенация ” и “Поиск”
Метки: Label1, Label2, Label3, Label4, Label5, Label6.
Значения их свойства Caption определяют заголовки текстовых окон (Строка1, Строка2, Ответ, Исходная строка, Образец, Результат).
Тексты процедур обработки событий:
Private Sub Form_Load() При загрузке формы обе рамки и
Frame1.Enabled = False управляющие элементы внутри не реагируют
Frame2.Enabled = False на какие-либо события (щелчок мыши и др.)
End Sub
Private Sub Command1_Click() Щелчок мыши по кнопке делает соответст-
Frame1.Enabled = True вующую рамку и управляющие элементы
Frame2.Enabled = False внутри доступными для событий.
Text1.SetFocus Курсор мыши устанавливается в первое
End Sub текстовое окно.
Private Sub Command2_Click() Щелчок мыши по кнопке делает соответст-
Frame2.Enabled = True вующую рамку и управляющие элементы
Frame1.Enabled = False внутри доступными для событий.
Text4.SetFocus Курсор мыши устанавливается в окно
End Sub для ввода исходной сроки.
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.SetFocus. Ввод набранных в окне символов и
End If перевод курсора в следующее окно
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
Dim Stroka As String Ввод набранных в окне символов,
If KeyAscii = 13 Then объединение строк и вывод результирующей
Stroka = Text1.Text & Text2.Text строки в окно.
Text3.Text = Stroka
End If
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Ввод набранных в окне символов и
Text5.SetFocus перевод курсора в следующее окно.
End If
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
|
|
Dim Rez As Integer Ввод набранных в окне символов,
If KeyAscii = 13 Then обращение к функции InStr,
Rez = InStr(Text4.Text, Text5.Text) вывод результата поиска
Text6.Text = Str(InStr(Text4.Text, Text5.Text)) в текстовое окно.
End If
End Sub
Обратите внимание: результатом поиска является номер позиции (число). Оно преобразуется в строку символов (в текстовое окно выводится строка).
Обратите внимание на использование оператора присваивания
Text6.Text = Str(InStr(Text4.Text, Text5.Text)) - в левой части оператора данные символьного типа, в правой также символьного типа.
Задание.
1. Прочитать учебный материал. Уметь отвечать на вопросы.
2. Самостоятельно подготовить и отладить на компьютере аналогичный проект для заданной преподавателем символьной функции из файла 005Stroka_Function1.doc. В разработанный выше проект добавить новую рамку с необходимыми текстовыми окнами.
3. Демонстрация работы проекта преподавателю для различных вводимых строк символов.