На рис. 2.29 показано окно Menu Design Windows в момент проектирования. Выделен элемент меню “Копировать” (свойство Caption - ^.Копировать, имя - mnuEdifCopy, “горячая” клавиша -Ctrl+C). Вставка символа “&” означает задание “горячей” клавиши. Символы “....” обозначают переход на следующий уровень иерархии пунктов меню (“Копировать” является подпунктом меню “Файл”) и задаются кнопками изменения уровня пунктов меню.
Аналогично имени mnuEditCopy образуются имена остальных пунктов меню, которые используются для записи программы (nmuEditCut, mnuEditPaste, mnuFileExit, mnuHelpAbout, mnuFileNew, mnuFileOpen, mnuFileSave, mnuFileSaveAs, mnu File Exit}.
Тексты процедур обработки событий следующие:
Sub Form_Resize ()
txtEditBox.Height = ScaleHeight txtEditBox.Width = ScaleWidth
End Sub
Sub mnuEditCopy_Click ()
Clipboard.Clear 'очистить буфер
Clipboard.SetText txtEditBox.SeiText
'поместить 'выделенный текст в буфер End Sub
Sub mnuEditCut_Click ()
Clipboard.Clear 'очистить буфер Clipboard.SetText txtEditBox.SeiText
'поместить 'выделенный текст в буфер txtEditBox.SeiText = “”
'удаление выделенного
'текста End Sub
Sub mnuEditPaste_Click ()
txtEditBox.SeiText = Clipboard.GetText() End Sub
Sub mnuFileExit_Click ()
If MsgBox(“Выход?”,1+32,”Подтвердить”)=lThen End
End Sub
Sub mnuHelpAbout_Click ()
MsgBox “Мой редактор на Visual Basic”,64,”О программе” • End Sub
Sub Form_Unload (Cancel As Integer)
Cancel = 1
mnuFileExit_Click End Sub
Процедура Form_Resiy (обработка события изменения размера формы) обеспечивает автоматическое изменение размеров текстового окна при изменении размеров формы.
Процедура mnuEditCopy_Click (обработка события щелчка мыши по пункту меню “Копировать”) обеспечивает запись выделенного текста в буфер. Используются рассмотренные выше методы для объекта Clipboard и методы для текстового окна (операторы Clipboard. Clear и Clipboard.SetText txtEditBox. SeiText). Во втором операторе txtEditBox. SeiText присваивается выделенный текст.
Рис. 2.29
Процедура mnuEditCut_Click (обработка события щелчка мыши по пункту меню “Вырезать”) обеспечивает перед удалением сохранение выделенного текста в буфере.
Процедура mnuEditPaste_Click (обработка события щелчка мыши по пункту меню “Вставить”) обеспечивает вставку текста из буфера (в данном случае отсутствие при вставке выделения означает вставку в позицию курсора).
Процедура mniiFileExit_Click (обработка события щелчка мыши по пункту меню “Выход”) обеспечивает выход из редактора. Оператор End обеспечивает корректный выход из приложения (закрывает файлы и освобождает память). В процедуре используется функция MsgBox для вывода окна сообщения. Синтаксис ее применения следующий:
MsgBox сообщение [, тип окна] [, заголовок окна]
где
сообщение - текст сообщения;
тип окна - это сумма значений, определяющих число и тип кнопок на диалоговом окне, стиль пиктограмм, используемых в окне, и др. спецификации. В таблице приведены некоторые значения аргументов и их описание:
Значение типа | Описание |
0 | Выводить только кнопку OK |
| | Выводить кнопки OK и Cancel |
2 | Выводить кнопки Abort, Retry, Ignore |
3 | Выводить кнопки Yes, No, Cancel |
4 | Выводить кнопки Yes, No |
5 | Выводить кнопки Retry, Cancel |
16 | Выводить пиктограмму “Стоп” |
32 | Выводить пиктограмму “?” |
48 | Выводить пиктограмму “!” |
64 | Выводить пиктограмму информации |
0 | Кнопка по умолчанию - первая |
256 | Кнопка по умолчанию - вторая |
512 | Кнопка по умолчанию - третья |
0 | Программное ведущее диалоговое окно |
4096 | Системное ведущее диалоговое окно |
Первая группа значений (0-5) описывает номер и тип кнопок, отображаемых в диалоговом окне; вторая группа (16, 32, 48, 64) описывает стиль пиктограммы (иконки); третья группа (0, 256, 512) определяет кнопки по умолчанию; четвертая группа (0, 4096) определяет выводимые окна сообщения (0 - окно ввода для окончания работы приложения, 4096 - окно ввода для окончания работы системы).
В качестве значения аргумента может указываться сумма значений типа по одному из каждой группы. Например, в операторе
MsgBox “Удалить ?”, 52
значение аргумента 52 является суммой 48 и 4 (48 - вывод пиктограммы с восклицательным знаком, 4 - кнопки “Yes” и “No”). Функция MsgBox возвращает следующие значения:
Константа | ||
vbOK | 1 | ОК |
2 | Cancel | |
vbAbort | 3 | Abort |
vbRetry | 4 | Retry |
vblgnore | 5 | Ignore |
vbYes | 6 | Yes |
vbNo | 7 | No |
Эти значения можно использовать для обработки результата работы пользователя с окном MsgBox.
Процедура mnuHelpAbout_Click (обработка события щелчка мыши по пункту меню “О программе”) обеспечивает вывод окна сообщения.
Процедура Form_Unload (Cancel As Integer) (обработка события щелчка мыши по кнопке “Закрыть” раскрывающегося стандартного меню формы) обеспечивает выход с подтверждением. Закрытие формы не обеспечивает корректного завершения приложения. В этом случае присвоение Cancel =1 предотвращает закрытие формы и обеспечивает корректный выход через процедуру mnuFileExit_Click.
Рис. 2.30
Разработанная программа имеет меню пользователя и обеспечивает функции удаления, вставки и копирования при редактировании и выдачу сообщения о программе (рис. 2.30—2.32).
Рис. 2.31
Рис. 2.32 Глава 3. Программирование на VISUAL BASIC 4
3.1. АЛФАВИТ
Visual Basic является языком программирования. Как любой другой язык, например, русский, английский или язык программирования Pascal, он имеет свой алфавит, используемый для написания операторов или предложений Visual Basic. Алфавит Visual Basic включает:
Другие символы, определенные на клавиатуре, включая русские, можно использовать только в строках символов.
3.2. ДАННЫЕ
3.2.1. Классификация данных
Данные характеризуются типом и организацией. Тип данных обобщает следующие понятия:
Размещение. Данные и программа в момент выполнения размещаются в оперативной памяти (ОП) ЭВМ, которая состоит из пронумерованных ячеек, каждая из которых вмещает 1 байт данных (1 байт состоит из 8 битов, каждый из которых может содержать элемент двоичных данных - 0 или 1). Номер определенной ячейки называется адресом. Одного байта для хранения данного как правило недостаточно и данное занимает непрерывную последовательность байтов (2, 4, 8 байтов).
Способ представления. Последовательность битов в байтах данного кодирует всю необходимую информацию, определяющую данное. Правила кодирования и их реализация в разных ЭВМ определяют способ представления данного. Так, для числовых данных существует способ представления с фиксированной точкой и с плавающей точкой.
Прикладной смысл. Определяет возможность использования данных для тех или иных целей (с арифметическими данными можно производить вычисления, из символов можно строить слова и предложения).
В Visual Basic 4 определены следующие типы данных:
В табл. 3.1 приводятся характеристики этих типов данных:
Таблица 3.1
Тип данных | Описание | Диапазон значении | Занимаемая память |
Byte | Двоичные данные | От 0 до 255 | 1 байт |
Boolean | Логический | True или False | 2 байта |
Integer | Целые числа | От -32768 до 32767 | 2 байта |
Long | Целые числа (длинные) | От -2 147 483 648 до +2 147 483 647 | 4 байта |
String (variable-length) | Символьный (переменной длины) | От О до 2000000000 символов | 10 байт + длина строки |
String (fixed-length | Символьный (фиксированной длины) | От 0 до 2000000000 символов | 1 байт на 1 символ |
Currency | Число с фиксированной десятичной точкой | От -22337203685477,58 до 922337203685477,58 | 8 байтов |
Date | Дата | От January 1, 100 до December 31, 9999 | 8 байтов |
Object | Объект | 4 байта | |
Single | Вещественные числа | От± 1.4* Ю-45 до + 3.4*104-38 | 4 байта |
Double | Вещественные числа | От+ 4.94* Ю-324 до+ 1.79* Ю-“308 | 8 байтов |
Variant | Произвольный тип | Любой из перечисленных выше | Зависит от значения |
Data (Дата) - определяет дату (месяц, день, год).
Object (Объект) - ссылка на объект (OLE).
String (Строка) - последовательность ASCII-символов.
Саггепсу (Валюта) предназначен для финансовых расчетов и имеет фиксированную точность до четвертого знака после запятой (округляется).
Variant (Варьируемый) способен принимать любые значения (состоят из двух частей: собственно значения и кода, указывающего исходный тип данного).