1.3. ОТЛАДКА ПРОГРАММ
Любая программа, написанная даже квалифицированным программистом, содержит ошибки, которые выявляются и исправляются в процессе отладки программы Кроме того, при работе с отлаженной программой пользователь может создать ситуацию, которая программой не обрабатывается корректно Рассмотрим процесс отладки программ и способы обработки ошибок при выполнении программы и имеющиеся для этого средства в Visual Basic
1.3.1. Синтаксический контроль
При ошибке в наборе текста программы в окне кода автоматически (при активизации в диалоговом окне Environment Options (Параметры Среды) флажка Display Syntax Errors (Показывать синтаксические ошибки)) инверсной подсветкой выделяется неправильный фрагмент оператора программы На этом этапе Visual Basic отслеживает синтаксические ошибки (неправильно написанные ключевые слова, неверный порядок операндов в операторах, некорректную пунктуацию и т п )
Лишняя точка в операторе уже приведенной выше процедуры автоматически показывается с разъяснением ошибки в окне
Рис 1 19 Вызов диалогового окна Environment Options (Параметры Среды) производится из пункта Tools Главного меню. Окно показано на рис. 1.20 и позволяет, кроме указания на выдачу синтаксических ошибок, определить выводимые окна среды (Toolbox, Properties, Project, Debag), задать обязательность объявления переменных (Require Variable Declaration), показа сетки формы (Show Grid) и ее шаг (Width, Height), выравнивания элементов управления относительно сетки (Align Controls to Grid), автоматического сохранения текущих версий файлов форм и проекта перед каждым запуском программы (Save Before Run).
1.3.2. Контроль корректности алгоритма
Для дальнейшей отладки синтаксически правильной программы существуют специальные средства, позволяющие контролировать значения переменных на различных этапах выполнения программы. Окно Debug является основным средством для поиска ошибок (рис. 1.21). В верхнем поле окна выводятся вид выражения (колонка Expression), значение выражения (колонка Value), местонахождение выражения (колонка Context). Кнопки Immediate и Watch обеспечивают переключение на просмотр соответственно непосредственно вводимого в этом поле выражения (прямой ввод выражения) или уже заданного. В нижнем поле отображается текст программы.
Вид выражения задается в окне Add Watch (вызывается из пункта Tool Главного меню) (рис. 1.22). Раскрывающиеся списки модулей (Module) и процедур (Procedure) позволяют задать местоположение выражения в программе. Выражение может быть набрано вручную в текстовом окне. Кроме того, если в тексте программы перед вызовом окна выделен какой-либо оператор или его часть, то оно автоматически появляется в окне (см. рис. 1.22).
Кнопки в области Watch Type определяют условия вывода выражения (Watch Expression - наблюдение за значением в точках прерывания; Break When Value Is True - прерывание выполнения программы, когда значение выражения равно заданному; Break When Value Changes - прерывание выполнения программы, когда значение выражения меняется).
Рис. 1.22 Для вывода в окно Debug нужно также установить точки прерывания (моменты, когда программа прекращает работу и выдает требуемую информацию в окно Debug). Обычно такими точками являются места программы, проверяемые на корректность работы.
Для установки точки прерывания нужно:
· установить курсор или выделить соответствующий оператор программы;
· щелкнуть мышью по пункту Toggle Breakpoint (Поставить точку прерывания) раскрывающегося меню Run (Старт) Главного меню.
Установленная точка прерывания выделится подсветкой (рис. 1.23).
После запуска программы значение проверяемого выражения выводится в окне Debug (рис. 1.24.). Оператор прерывания выделяется рамкой, в окне указывается место прерывания (проект, форма, процедура обработки события).
Удалить точку прерывания можно щелкнув мышью по пункту Clear Toggle Breakpoint (Убрать точку прерывания) раскрывающегося меню Run (Старт) Главного меню.
При отладке программ целесообразно комбинировать постановку точек прерывания и точек наблюдения (их установка задается кнопками Break When Value Is True (Прерывание выполнения программы, когда значение выражения равно заданному) и Break When Value Changes (Прерывание выполнения программы, когда значение выражения меняется) окна Add Watch). Точки наблюдения замедляют выполнение программы. Лучше установить точку прерывания в подозрительном месте программы и выполнять программу с нормальной скоростью до этой точки. Далее поставить одну или несколько точек наблюдения и продолжать более медленный поиск ошибок в локализованной области программы.
Если нет необходимости прослеживать изменение значения какой-либо переменной в процессе выполнения программы, то для вывода текущего значения вместо использования окна Add Watch можно использовать пункт меню Instant Watch (Быстрый просмотр) раскрывающегося меню Tool Главного меню. Перед этим, после прерывания выполнения программы, необходимо выделить переменную в окне кода. В окне Instant Watch (рис. 1.25.) выводится имя переменной, текущее значение и имя процедуры, в которой используется переменная.
Щелчком мыши по кнопке Add переменную можно добавить в список окна Debug Windows.
Кнопка Immediate окна Debug (рис. 1.26) позволяет вывести переменную на форму или изменить ее значение с помощью оператора присваивания (эти изменения не отражаются на содержании программы). Это окно можно также использовать для ввода команд, изменяющих свойства элементов управления (шрифты, цвет фона и др.). Измененные значения выводятся в окне Debug (рис. 1.27).
Если проект включает много процедур, то полезным средством отладки является трассировка вызова процедур (пункт меню Call... раскрывающегося меню Tool Главного меню или одноименная кнопка панели инструментов). Окно (рис. 1.28.) показывает всю последовательность вызовов от исходной процедуры до текущей (в верхней части расположена последняя вызванная процедура, в нижней - первая). Список позволяет определить, как произошел переход в текущую точку программы.
Рис. 1.25
Рис. 1.27
Рис. 1.28
Эффективным средством отладки является также пошаговое выполнение программы и наблюдение результатов выполнения каждого оператора. После приостановки выполнения программы (точки прерывания или кнопка Break) необходимо войти в окно редактирования кода. Для выполнения одного оператора используется клавиша F8. При этом будет выполнен оператор, выделенный рамкой, а вьщеление будет перенесено на следующий оператор. Повторяя нажатие клавиши, можно осуществлять пошаговое выполнение программы.
Если текущий оператор содержит вызов процедуры, нажатие клавиши F8, щелчок мыши по пункту Step Into (Шаг внутрь) раскрывающегося меню Run или щелчок мыши по пиктограмме Step Into Главного меню вызовет выполнение первого оператора процедуры, которую можно продолжать выполнять по шагам.
Для выполнения всей процедуры (не по шагам) и переходу к оператору, следующему за вызовом процедуры, используется щелчок мыши по пункту Step Over (Обойти) или комбинация клавиш Shift+F8.
При пошаговом выполнении некоторый блок операторов можно обойти. Это можно сделать, установив курсор на оператор, на котором необходимо выполнить следующее прерывание выполнения программы, и щелкнув мышью по пункту меню Step То Cursor или комбинацией клавиш Ctrl+F8.
Пошаговое выполнение можно комбинировать с процедурным выполнением. Отлаженные процедуры одной программы можно выполнять по процедурно, а не отлаженные - пошагово. Средства отладки позволяют также изменять порядок выполнения операторов. При выполнении оператора Set Next Statement (Установить следующий оператор) раскрывающегося меню Run можно перейти к выполнению любого оператора (даже к тем, которые расположены перед текущим) текущей процедуры.
1.3.3. Контроль ошибок на этапе выполнения программы
Ошибки периода выполнения (runtime errors) могут возникать, например, из-за нехватки памяти или дискового пространства, попытки открыть открытый другим приложением файл, выхода индекса за пределы размерности массива и др. В этом случае Visual Basic выводит диалоговое окно с соответствующим сообщением и прекращает выполнение программы (рис. 1.29).
Обработчик ошибок возвращает значение кода ошибки (функция Err), список которых находится в справочной системе (Help) и документации к Visual Basic.
Однако такие ошибки можно обрабатывать методом перехвата ошибок (error trapping). Перехват ошибок обеспечивается вставкой в текст процедуры оператора
On Error GoTo метка, где метка помечает место входа в обработчик ошибок.
Если в период выполнения ошибка возникнет в одном из операторов процедуры, расположенных за On Error GoTo метка, то управление передается обработчику ошибок, указанному меткой. Участок обработки ошибок можно закончить оператором On Error GoTo 0.
Рис. 1.29
В обработчик ошибок можно включить оператор Resume и продолжить выполнение программы после исправления ошибки операторами, вставляемыми в обработчик ошибок. Оператор Resume имеет несколько форм:
Resume возобновляет выполнение программы с оператора, вызвавшего ошибку;
Resume ‘Next возобновляет выполнение программы со следующего оператора;
Resume метка возобновляет выполнение программы с оператора, помеченного меткой.
Пример.
В примере в процедуре Primer происходит деление на О (оператор YY = YY/XX, перед выполнением которого переменой XX присваивается значение 0). Этот оператор включен в область обработчика ошибок. При делении на 0 происходит переход на оператор, помеченный меткой Label: (обработчик ошибок), переменной XX присваивается значение 2 и программа продолжает выполнение с оператора, на котором была ошибка на этапе выполнения в результате деления на 0. Программа заканчивает работу и результат распечатывается на форме (рис. 1.30).
Рис. 1.30
Таблица 2.1
Название свойства | Для каких элементов управления используется | Описание действия | Возмо жность измнения |
Action | Common dialog | Определяет тип диалога | -/+ |
Action (OLE) | OLE | Определяет тип действия | -/+ |
Alignment | Check box. label, option button, text box | Определяет способ выравнивания (по левому краю, по правому или по центру) | +/- |
Auto Redraw | Form, picture box | Определяет возможность автоматического перерисования | +/- |
AutoSize | Label, picture box | Определяет возможность автоматического изменения размера при заполнение | +/- |
BackColor, Fore Color | Form, check box, combo box, command button (TWibKoBackColor) data control, directory list box, drive list box, file list box, frame, grid, label, list box, OLE control, option button, picture box, Printer object (только ForeColor), shape (только BackColor), text box | Определяют соответственно цвет фона и цвет выводимой ин4юрмации | +/+ |
BackStyle | Label, shape | Определяет прозрачность фона | +/+ |
BorderColor | Line, shape | Определяет цвет рамки | +/+ |
BorderStyle | Form, grid, image, label, line, OLE control, picture box, shape, text box | Определяет вид рамки | Для Form и text box+/-+/+ |
Продолжение табл 2 I
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
BorderWidth | Line, shape | Определяет ширину границы | +/+ |
Cancel | Command button | Определяет, что элемент выполняет функцию Cancel на форме | +/+ |
Caption | Form, MDI form, check box, command button, data control, frame, label, menu, option button | Определяет текст, выводимый на элемент или возле него Для формы -заголовок | +/+ |
CellSelected | Grid | Ячейка таблицы выделена строкой и столбцом | -/- |
Class | OLE control | Определяет класс объекта OLE | +/- |
ClipControls | Form, frame, picture box | Определяет необходимость перерисовки всего объекта или появляющейся части | +/+ |
Clip | Grid | Определяет содержимое выделенных ячеек таблицы | -/+ |
Col, Row | Grid | Определяет выделенную колонку или строкуа таблицы | -/+ |
ColAlignment | Grid | Выравнивание данных в колонке таблицы | -/+ |
Cols, Rows | Grid | Определяет число колонок,столбцов таблицы | +/+ |
Columns | List box | Определяет число колонок в списке | +/+ |
ColWidth | Grid | Ширина колонки | -/+ |
ControlBox | Form | Определяет наличие кнопки системного меню на форме | +/- |
CuncntX, CurrentY | Form, picture box, Printer object | Текущие координаты по горизонтали и вертикали (для рисующих или печатающих методов) | -/+ |
Продолжение табл. 2.1
Название свойства | управления используется | жность изменения | |
DatabaseName | Data control | Имя и расположение базы данных | +/+ |
DataChanged | Check box, image, label, picture box, text box | Указатель изменения данных в элементе при чтении записи (несовпадение) | -/+ |
DataField | Check box. image, box | Определяет связь с полем записи файла | +/+ |
Check box, image, label, picture box, text box | Определяет источник данных для элемента управления | +/- | |
Default | Command button | Определяет, является ли данная командная командной кнопкой по умолчанию | +/+ |
box. Printer object, shape. | рисуемой линии (точки) | -/+ | |
DrawWidth | Form, picture box, Printer object | Определяет ширину рисуемой линии (точки) | -/+ |
Enabled | Form, MDI form, check box, combo box, command button, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, list box, menu, option button, picture box, text box, timer, vertical scroll bar | Определяет возможность доступа к элементу (элемент реагирует на действия пользователя) | +/+ |
FillColor | Form, picture box, Printer object, shape | Определяет цвет заполнения | +/+ |
FillStyle | box. Printer object, | заполнения | |
FixedCols, Fixed Rows | Grid | Число выделенных колонок,столбцов | +/+ • |
Продолжение табл. 2.1
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
FontBold, Fontltalic, FontStrikethr. FontTranspar. FontUnderline | Form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, label, list box, optionbutton, picture box, Printer object, text box | Вид выводимого текста(жирный, курсив, зачеркнутый, “ясный”) | +/+ |
FontNarne | Form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, label, list box, optionbutton picture box. Printer object, text box | Тип шрифта выводимого текста | +/+ |
FontSize | Form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, label, list box, optionbutton, picture box, Printer object, text box | Размер шрифта выводимого текста | +/+ |
BackColor, ForeColor | Form, check box, combo box, command button (только BackColor), data control, directory list box, drive list box, file list box, frame, grid, label, list box, OLE control, option button, picture box, Printer object (только ForeColor), shape (только BackColor), text box | Цвет фона и основной цвет выводимой информации |
Продолжение табл. 2.1
Название свойства | Для каких элементов управления используется | жность изменения | |
Format | Определяет формат получаемых и пере | -/+ | |
GridLines | Grid | определяет видимость сетки таблицы | +/+ |
GridLineWidth | Grid | Определяет ширину линий сетки таблицы | +/+ |
Height, Width | Form, MDI form, check box, combo box, command button, data control, directory list box, drive list box, file horizontal scroll bar, image, label | Определяют размеры объекта (высота и ширина) | +/+ |
Highlight | Grid | ку выделенной ячейки таблицы. | +/+ |
иконки формы в ее свернутом состоянии | |||
Index (Control Arrays) | Check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, line, list box, menu. OLE control, option button, box, timer, vertical scroll bar | Определяет индекс элемента в массиве однородных элементов управления | +/- . |
Interval | миллисекунд в задаваемом интервале | +/+ | |
I tern Data | Combo box, list box | Массив значений индексов элементов списка (первоначально значения индексов совпадают с позицией элемента в списке) | -/+ |
Продолжение табл. 2.1
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
KeyPreview | Form | Определяет, вызываются ли процедуры обработки события клавиатуры формы перед событиями клавиатуры элементов управления | +/+ |
LargeChange | Horizontal scroll bar, vertical scroll bar | Определяет изменение при щелчке мыши по полю линейки прокрутки между движком и стрелкой | |
SmallChange | Horizontal scroll bar, vertical scroll bar | Определяет изменение при щелчке мыши по стрелке | +/+ |
Left, Top | Form, MDI form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, list box, OLE control, option button, picture box, shape, text box, timer, vertical scroll bar | Определяют координату верхнего левого угла элемента управления (Left- расстояние до левой границы, Тор- расстояние до верхней границы) | +/+ |
Linkltem | Label, picture box, text box | Определяет спецификацию данных, передаваемых, в элемент от других приложений (DDE) | +/+ |
List | Combo box, directory list box, drive list box, file list box, list box | Определяет список элементов окна | -/+ |
Listlndex | Combo box, directory list box, drive list box, file list box, list box | Определяет индекс выбранного элемента списка | -/+ |
Max, Min | Horizontal scroll bar, vertical scroll bar | Определяет максимальное и минимальное значение линейки прокрутки | +/+ |
Продолжение табл. 2.1
Для каких элементов управления используется | Описание действия | Возможность изменения | |
MaxButton, Min Button | Form | Наличие кнопки максимизации и минимизации | +/- |
Max Length | Text box | Определяет максимальное число символов | +/+ |
MousePointer | Form, check box, combo box, command button, data control, directory list box, drive list box, file list box, frame, horizontal scroll bar, image, label, list box, option button, picture box, Screen object, text box, vertical scroll bar | Определяет тип указателя мыши при его перемещении по элементу | +/+ |
MultiLine | Text box | Определяет многострочное текстовое окно | +/- |
MultiSeIect | File list box, list box | Возможность и способ множественного выбора | +/- |
Name | Все элементы управления и формы | Определяет имя элемента, используемое при написании программы | +/- |
Newlndex | Combo box, list box | Индекс добавляемого в список элемента | -/- |
Parent | Check box, combo box, command button, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, line, list box, menu, OLE control, option button, picture box, shape, text box, timer, vertical scroll bar | Определяет форму, на которой находится элемент | -/- |
Text box | Определяет шифровку выводимых в окне символов | +/+ |
Продолжение табл. 2.1
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
PasteOK | OLE control | Определяет возможность ввода из Clipboard | -/- |
Path | Арр object, directory list box, file list box | Путь в файловой системе | -/- |
Pattern | File list box | Выводимое имя файла | -/+ |
Picture | Form, image, OLE control, picture box | Определяет выводимую картинку | +/+ |
Prev Instance | Арр object | Определяет, что объект - приложение уже запущено | -/- |
PrinterDefault | Common dialog (print dialog) | Определяет выбор принтера по умолчанию | |
Readonly | Data control, file list box | Определяет указатель на открытие базы данных только на чтение или в списке файлов есть файлы с атрибутом ReadOnly | +/+ |
RecordCount | Table object. Dynaset object, Snapshot object | Определяет число записей | -/- |
Recordset | Data control | Определяет источник данных | -/+ |
RecordSource | Data control | Определяет источник данных | +/+ |
RowHeight | Grid | Определяет высоту выделенной строки | -/+ |
ScaleHeight, ScaleWidth | Form, MDI form, picture box, Printer object | Определяет число единиц измерения по вертикали и горизонтали | +/+ |
ScaleLeft, ScaleTop | Form, picture box, Printer object | Определяет координаты верхнего левого утла | +/+ |
ScaleMode | ScaleMode | Определяет единицы измерения координат | +/+ |
Scroll Bars | MDI form, grid, text box | Определяет наличие линейки прокрутки | +/- |
SelCount | List box | Определяет число выделенных элементов списка | -/+ |
Продолжение табл 2 1
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
Selected | File list box, list box | Определяет выделенные элементы списка | -/+ |
SelEndCol, SelStartCol, SelEndRow, SelStartRow | Grid | Определяет начало и конец выделенных ячеек | -/+ |
Sel Length, SelStart, SelText | Combo box, text box | Определяют длину выделения, начальную позицию и выделение | -/+ |
Shortcut | Menu | Определение клавиш | +/- |
SizeMode | OLE control | Определяет преобразование размера для представления | +/+ |
Sorted | Combo box, list box | Определяет упорядочение элементов в списке по алфавиту или по порядку ввода | +/- |
Source Doc | OLE control | Имя файла | +/+ |
Source I tern | OLE control | Определение данных | +/+ |
Style 1 | Combo box | Определяет тип комбинированного списка | +/- |
Tablndex | Check box, combo box, command button, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, label, list box, option button, picture box, text box, vertical scroll bar | Определяет индекс элемента в массиве элементов управления | +/- |
TabStop | Check box, combo box, command button, directory list box, drive list box, file list box, grid, horizontal scroll bar list box, option button, picture box, text box, vertical scroll bar | Определяет быструю установку фокуса | +/+ |
Продолжение табл. 2.1
Название свойства | Для каких элементов управления используется | Описание действия | Возможность изменения |
Tag | Form, MD1 form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, line, list box, menu, OLE control, option button, picture box, shape, text box, timer, vertical scroll bar | Определяет идентификацию внешних данных | +/+ |
Text | Combo box, list box, text box | Определяет данные текстового окна или выбранного элемента списка | +/+ |
Top Row | Grid | Определяет максимальное количество выделенных строк | -/+ |
UpdateOptions | OLE control | Определяет изменение данных элемента при изменении данных в связанном объекте | -/+ |
Value | Check box, command button, field object, horizontal scroll bar, option button, vertical scroll bar | Значение состояния элемента управления | -/+ |
Verb | OLE control | Спецификация действий при запуске OLE—объекта | +/+ |
Visible | Form, MDI form, check box, combo box, command button, common dialog, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, line, list box, menu, OLE control, option button, picture box, shape, text box, vertical scroll bar | Определяет видимость элемента | +/+ |
Окончание табл. 2.1
Название свойства | Для каких элементов управления используется | жность изменения | |
WindowState | Form, MD1 form | Определяет видимость формы при выполнении программы | +/+ |
Wordwrap | Label | Определяет направление (вертикальное или горизонтальное) изменения поля метки при ее заполнении текстом | +/- |
XI, Yl, X2, Y2 | Line | Определяют начальные и конечные координаты | +/+ |
Каждому диалоговому элементу (форме и элементам управления) в Visual Basic поставлен в соответствие определенный набор событий, происходящих в период выполнения программы. Например, событие Load (Загрузка) происходит при загрузке формы, событие Clik (Щелчок) вызывается щелчком кнопки мыши, событие DblClick (Двойной щелчок) вызывается двойным щелчком кнопки мыши и т.д.
В табл. 2.2 приводится список событий, элементы управления, для которых они определены, и краткое описание действия.
Более подробную информацию о приведенных в таблице событиях и особенностях их использования можно найти в встроенной справочной системе Visual Basic.
Каждому приведенному в таблице событию ставится в соответствие процедура обработки события (процедура (procedure) - в языках программирования набор операторов, выполняемых при вызове процедуры). Событие может вызывать при наличии в приложении процедуры обработки данного события программируемое изменение данных. Как было показано выше. Visual Basic содержит автоматически формируемые заготовки для таких процедур (первый и последний операторы процедур) в поле для записи программы (вызываются из окна проекты (Project) Главного меню). Имя процедуры формируется автоматически и состоит из двух частей, разделенных подчеркиванием: имя выделенного диалогового элемента и имя выделенного события.
Таблица 2.2
Название события | Элементы управления, для которых используется события | Описание действия |
Activate, Deactivate | Form, MD1 form | Активизация (окно формы становится активным), дезак-тивизация формы |
Change | Combo box, directory list box, drive list box, horizontal scroll bar, label, picture box, text box, vertical scroll bar | Изменение содержания элементов управления (например, набор символа в текстовом окне) |
Click | Form (кроме MD1 form), check box, combo box, command button, directory list box, file list box, frame, grid, image, label, list box, menu, OLE control, option button, picture box, text box | Одинарный щелчок мыши по управляющему элементу |
DblClick | Form (кроме MD1 form), combo box, file list box, frame, grid, image, label, list box, OLE control, option button, picture box, text box | Двойной щелчок мыши по управляющему элементу |
DragDrop | Form, MD1 form, check box, combo box, command button, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, list box, OLE control, option button, picture box, text box, vertical scroll bar | После перемещения управляющего элемента мышью и отпускания клавиши мыши (определяет результирующую позицию элемента). |
DragOver t •’• | Form, MD1 form, check box, combo box, command button, data control, directory list box, drive list box, file list box, frame, grid, horizontal scroll bar, image, label, list box, OLE control, option button, picture box, text box, vertical scroll bar | Процесс перемещения управляющего элемента мышью (определяет текущую позицию элемента) |
Продолжение табл. 2.2
Название события | Элементы управления, для которых используется события | Описание действия |
Drop Down | Combo box (кроме случая, когда свойство Style равно 1) | Результат выделения элементов в комбинированном списке перед каким-либо действием |
Error | Data control | Ошибка при обращении к базе данных |
GotFocus | Form (кроме MDI form), check box, combo box, command button, directory list box, drive list box, file list box, grid, horizontal scroll bar, list box, OLE control, option button, picture box, text box, vertical scroll bar | Активизация элемента управления (установка фокуса на элемент). В Windows в каждый момент только один элемент экрана является активным, т.е. с ним возможна работа |
KeyDown, KeyUp | Form, check box, combo box, command button, directory list box, drive list box, file list box, grid, horizontal scroll bar, list box, OLE control, option button, picture box, text box, vertical scroll bar | Нажатие или отпускание какой-либо клавиши в момент, когда элемент управления находится в фокусе |
KeyPress | Form, check box, combo box, command button, directory list box, drive list box, file list box, grid, horizontal scroll bar, list box, OLE control, option button, picture box, text box, vertical scroll bar | Нажатие и отпускание какой-1 либо клавиши |
LinkClose | Form, MDI Form, label, picture box, text box | Конец динамического обмена данными (DDE) с другими приложениями |
LinkError | Form, MDI Form, label, picture box, text box | Ошибка при динамическом обмене данными (DDE) с другими приложениями |
LinkExecute | Form, MDI Form | Командная строка посылается в приложение, с которым устанавливается режим динамического обмена данными (DDE) |
Продолжение табл. 2.2
Название события | Элементы управления, для которых используется события | Описание действия |
LinkNotify | Label, picture box, text box | Изменение данных в приложении, с которым установлен режим динамического обмена данными (DDE) |
LinkOpen | Form, MDI Form, label, picture box, text box | Инициализация связи с приложением для динамического обмена данными (DDE) |
Load | Form, MDI form | Загрузка формы |
LostFocus | Form, check box, combo box, command button, directory list box, drive list box, file list box, grid, horizontal scroll bar, list box, OLE control, option button, picture box, text box, vertical scroll bar | Дезактивизация элемента управления (потеря фокуса элементом). В Windows в каждый момент только один элемент экрана является активным, т.е. с ним возможна работа (активизация другого элемента) |
Mouse Down Mouse Up | Form (кроме MDI form), check box, command button, data control, directory list box, file list box, frame, grid, image, label, list box, option button, OLE control, picture box, text box | Нажатие. Отпускание кнопки мыши |
MouseMove | Form (кроме MDI form), check box, command button, data control, directory list box, file list box, frame, grid, image, label, list box, OLE control, option button, picture box, text box | Перемещение мыши |
Paint | Form, picture box | Новое представление на экране после изменения размера или после удаления закрывающего объекта на экране |
PathChange | File list box | Изменение перехода (установка нового имени файла (FileName) или перехода (Path)) |
PattemChange | File list box | Изменение модели названия файла (например, .) |
Окончание табл. 2.2
которых используется события | Описание действия | |
Query Unload | Form, MD1 form | Предшествует закрытию формы или приложения |
Reposition | Data control | Запись становится текущей |
Resize | Form, MDI form. OLE control, picture box | при изменении размера элемента |
RowColChange | Grid | Переход от одной ячейки |
Scroll | Horizontal scroll bar. vertical scroll bar | Перемещение движка линейки прокрутки |
SelChange | Grid | диапазона ячеек к другому . |
Timer | Timer | времени |
Unload | Form, MD1 Form | |
Updated | OLE control | Изменение данных в объекте OLE |
Validate | Data control | Перед тем, как другая запись становится текущей |
В языках программирования, поддерживающих объектно-ориентированное программирование, введены так называемые методы. Несмотря на то, что Visual Basic нельзя считать настоящим объектно-ориентированным языком, для него включены методы для форм и элементов управления. Методы работают как процедуры или функции (т.е. обеспечивают выполнение тех или иных действий или изменение данных соответственно стандартному алгоритму, реализующему данный метод), но принадлежат конкретным объектам.
Для того чтобы вызвать метод, указывается имя объекта и через точку имя метода:
{ [имя_формы. ] 1 [имя_формы. ] имя_элемента_управления. }имя_метода
Например, Debug.Print обеспечивает вывод (печать) текста в специальном отладочном окне (Debug - имя окна, Print - имя
метода).
В табл. 2.3 приводится список методов, элементы управления, для которых они определены, и краткое описание действия.
Таблица 2.3
Название метода | Элементы управления, для которых используются события | Описание действия |
Addltem | List box, combo box, grid control. | Добавление элемента в список (List box, combo box) или строки (grid) |
AddNew | Data control | Очистка буфера и подготовка создания новой записи |
Arrange | MDI Form | Представление окон и иконок на MDI Form |
Circle | Form, picture box, Printer object | Рисование дуги, эллипса или окружности |
Clear | List box, combo box | Удаление всех элементов списка |
Close | Data control | Закрытие базы данных |
CIs | Form, picture box | Очистка от графических элементов или текста |
DDEMetods (LinkExecute, LinkSend, LinkPoke, LinkRequest) | Label, picture box, text box. | Динамический обмен данных с другими приложениями |
Delete | Data control | Удаление текущей записи |
Drag | Все, кроме Line, Menu, Shape, Timer | Перемещение объекта |
Edit | Data control | Открытие текущей записи для редактирования |
EndDoc | Printer | Конец передачи документа принтеру |
Execute | Data control | Выполнение запроса к базе данных |
ExecuteSOL | Data control | Выполнение SQL запроса к базе данных |
FieldSize | Определение числа байт в тексте или двоичных знаков | |
FindFirst, FindLast, FindNext, Find Previous | Data control | Определение первой, последней, следующей или предыдущей записи, соответствующей заданному критерию. Запись делается текущей |
GetChunk | Выделенные FieldSize число байтов или двоичных знаков | |
GetData GetFormat GetText | Clipboard | Работа с буфером обмена |
Продолжение табл. 2.3
Название метода | Элементы управления, для которых используются события | Описание действия |
Hide | Form, MD1 form | Спрятать форму с экрана без ее выгрузки |
Line | Form, picture box. Printer | Рисование линии или прямоугольника |
Move | Все, кроме timer и menu | Перемещение элемента |
MoveFirst, Move Last, MoveNext, Move Previous | Data control | Переход к первой, последней, следующей или предыдущей записи, соответствующей заданному критерию Запись делается текущей |
NewPage | Printer | Переход при печати к следующей странице |
Point | Form, picture box | RGB (red-green-blue) цвет точки |
PopupMenii | Form | Вывод всплывающего меню в заданной точке формы |
Form, picture box. Debug, Printer | Печать строки на объекте | |
PnntForm | Form | Побитовая распечатка формы |
PSct | Form, picture box. Printer | Точка на объекте |
Refresh | Все | Немедленная перерисовка на экране |
Remove Item | List box, combo box, grid | Удаление элемента списка или ячеек в сетке |
Scale | Form, picture box. Printer | Координаты объекта |
Set Data | Clipboard | Запись графики в Clipboard с заданным форматом |
SetFocus | CheckBox, ComboBox, CommandButton, DiiListBox, DnveListBox, FileListBox, Form, HScrollBar, ListBox, MDIForm, OLE Container, OptionBiitton. PictureBox, Text Box. VScrollBar | Установка курсора |
SetText | Clipboard | Запись строки в Clipboard с заданным форматом |
Show | Form | Вывод формы на экран |
TextHcight | Form, picture box. Printer | Высота текстовой строки при печати с текущим шрифтом |
TextWidth | Form, picture box. Printer | Ширина текстовой строки при печати с текущим шрифтом |
Окончание табл 2 3
Название метода | Элементы управления, для которых используются события | Описание действия |
Update | Data control | Сохранение буфера копирования |
UpdateControls | Data control | Контроль изменения данных |
Update Record | Data control | Сохранение изменения данных |
ZOrder | App, CheckBox, ComboBox, CommandButton, DirListBox, DnveListBox, FileListBox, Form, Frame, Grid, HScrollBar, Image, Label, Line, ListBox, MDIForm, OptionBiitton, PictureBox, Shape, TextBox, VScrollBar | Расположение на переднем или заднем плане |
Более подробную информацию об использовании методов можно получить из встроенной в Visual Basic справочной системы.
Рассмотрим более подробно использование свойств, процедур обработки событий и методов для форм и элементов управления при создании графического интерфейса приложений.
2.2. ФОРМА
Каждая форма в период выполнения соответствует отдельному окну. Внешний вид и поведение формы на экране определяется значением свойств. Эти свойства определяются в окне свойств на этапе разработки формы или операторами программы в процессе выполнения приложения. Наиболее часто используемыми свойствами являются:
BorderStyle (Тип границ) принимает одно из четырех стандартных значений, изменение которых допускается только на этапе разработки формы и определяют вид и поведение формы в процессе выполнения приложения (но не влияют на вид формы при разработке):
О - None - границы окна отсутствуют;
/ - Fixed Single - окно постоянного размера, определяемого на этапе разработки, с одинарной линией границы; 2 - Sizeable - окно изменяемого размера с двойной линией границы;
3 - Fixed Double - окно постоянного размера, определяемого на этапе разработки, с двойной линией границы.
Caption (Название) - заголовок окна.
ControlBox (Кнопка системного меню) принимает одно из двух стандартных значений, изменения которых допускается только на этапе разработки формы:
True - кнопка системного меню в левом верхнем углу окна;
False - кнопка отсутствует.
Enabled (Доступ) принимает одно из двух стандартных значений:
True - форма доступна (по умолчанию);
False - форма недоступна (блокирована от воздействия любых событий, связанных с мышью или клавиатурой).
FontName (Имя), FontSise (Размер), FontBold (Полужирный), Fontltalic (Курсив), FontStrikethru (Зачеркнутый), FontUnderline (Подчеркнутый) определяют шрифты выводимого на форму текста.
Размер шрифта определяется в пунктах (point) - стандартная типографская единица измерения (1 пт равен 1/72 дюйма или 0,035 см).
BackColor (Цвет фона) и ForeCoIor (Основной цвет) определяют цвет фона формы и выводимого на форму текста или изображения.
Height (Высота), Width (Ширина) определяют высоту и ширину формы. Единица измерения 1 twip равна 1/1440 дюйма или 0,0018 см.
MaxButton (Кнопка развернуть), MinButton (Кнопка свернуть) опеделяют наличие на форме соответствующих кнопок.
Name (Имя) - имя формы. Используется при написании текста программы и изменяться не может.
Тор (Верхняя координата), Left (Левая координата) определяют координаты левого верхнего угла формы.
Visible (Видимость), WindowsState (Состояние окна) определяют видимость формы на экране (True - видима, False - невидима) и отображение (0 - нормальное, 1 - свернутое в значок, 2 -развернутое).
Наиболее часто используются следующие события:
Click (Щелчок) или DblClick (Двойной щелчок) мышью в любом месте формы вызывает процедуры обработки события Form_Click или Form_DblClick.
KeyPress (Нажатие клавиши) вызывает процедуру обработки события Form_KeyPress, на вход которой подается значение ASCII-кода нажатой клавиши.
Load (Загрузка) - событие происходит при загрузке формы (например, при запуске приложения) и удобна для инициализации свойств и переменных при запуске программы.
Из методов рассмотрим:
CIs очищает форму от всех изображений и текста. Синтаксис:
[имя формы.] CIs;
Print выводит текст на форму и очень удобен для вывода на форму простой информации. Синтаксис:
[имя формы.]Print [[выражение][{;!,}]]...
Если после выражения стоит “;”, то за последним символом предыдущего выражения сразу выводится следующее. Если стоит “,”, то вывод производится по зонам, каждая из которых имеет размер 14 символов. Отсутствие после последнего выражения “;” или “,” переводит позицию вывода в начало следующей строки.
Пример программы.
Создадим новый проект с именем project2.mak, в котором открывается форма Forml. Используя кнопку View Code, откроем окно программы и введем тексты программ для процедур обработки событий Click и KeyPress (рис. 2.1) для объекта Form.
При щелчке кнопки мыши в любом месте формы исходное положение и размер формы (заданы по умолчанию) изменяются, задается полужирный шрифт и его размер для вывода на форму начала текста.
При нажатии клавиши Enter изменяются исходное положение и размер формы, задается шрифт “курсив” и его размер, которым выводится на форму продолжение текста. Запустив проект на выполнение кнопкой Run Главного меню, увидим пустую форму. Щелкнув на ней мышью, увидим изменение положения и размеров и начало текста. Нажав клавишу Enter, увидим измененную форму с окончанием текста (рис. 2.2).
Рис. 2.
2.3. МЕТКА
Label (Метка) - поле, заполняемое текстовой информацией, которая может изменяться только программно. Наиболее часто используемыми свойствами являются:
Alignment (Выравнивание) определяет размещение названия метки. По умолчанию значение равно 0 - выравнивание по левой границе (Left Justify). Значение равно / - выравнивание по правой границе (Right Justify), 2 — выравнивание по центру (Center).
Рис. 2.2
AutoSize (Автоподстройка размера) позволяет автоматически-подогнать размер поля метки под размер текста, заданный свойством Caption (значение True). При значении False размер не меняется, лишние символы отсекаются.
BorderStyle (Тип границ) принимает значение 0 (по умолчанию) - контур поля метки отсутствует или / - контур поля метки очерчивается одинарной линией.
Caption (Название) - текст поля метки.
Enabled (Доступ) принимает по умолчанию значение True. При значении False текст метки поблекнет и обработка событий, связанных с действием мыши, блокируется.
Дата: 2019-07-24, просмотров: 188.