Оглавление | Глава 1. Проектирование приложений | 1 |
Занятие 1. Использование Microsoft Solutions Framework | |
Microsoft Solutions Framework: обзор | 2 |
Microsoft Solutions Framework: модели | 2 |
Solutions Design Model | 3 |
Solutions Design Model: этапы проектирования | 4 |
Цели концептуального проектирования | 4 |
Цели логического дизайна | 5 |
Цели физического дизайна | 5 |
Ваша роль как разработчика | 5 |
Задачи на этапе создания логического дизайна | 6 |
Процесс формирования логического дизайна | 6 |
Резюме занятия | 7 |
Занятие 2. Проектирование системной архитектуры | |
Введение в структуру приложений | 9 |
Одноуровневые приложения | 10 |
Двухуровневые приложения | 10 |
Многоуровневые приложения | 10 |
Разработка многоуровневой системы | 11 |
Резюме занятия | 12 |
Занятие 3. Использование Visual SourceSafe | 13 |
Visual SourceSafe: обзор | 13 |
Упражнение: добавление Visual SourceSafe в Visual Basic | 14 |
Visual SourceSafe: компоненты | 14 |
Управление файлами | 14 |
Команда Check Out | 14 |
Команда Check In | 15 |
Команда Undo Check Out | 15 |
Команда Get Latest Version | 15 |
Повторное использование файлов | 15 |
Разделение | 15 |
Ветвление | 16 |
Слияние | 16 |
Использование средств администрирования | 17 |
Открытие баз данных Visual SourceSafe | 17 |
Архивирование проектов | 17 |
Резюме занятия | 18 |
Резюме главы | 19 |
Упражнение: использование Microsoft Solutions Framework | 20 |
Microsoft Solutions Framework | 20 |
Система бронирования номеров в отеле Chateau St. Mark | 20 |
Использование для упражнений файлов с прилагаемого компакт-диска | 21 |
Предварительный просмотр решения для отели Chateau St. Mark | 21 |
Закрепление материала | 22 |
Глава 2. Создание пользовательского интерфейса | 23 |
Занятие 1. Принципы разработки пользовательского интерфейса | 24 |
Композиция | 24 |
Простота | 24 |
Разметка элементов | 25 |
Единообразие | 26 |
Узнаваемость | 27 |
Легкость восприятия | 27 |
Цвет | 27 |
Изображения и значки | 28 |
Шрифты | 28 |
Меню | 28 |
Резюме занятия | 29 |
Занятие 2. Управление формами | 30 |
Добавление формы в проект | 30 |
Установка стартовой формы | 30 |
Использование событий формы | 31 |
Initialize | 31 |
Load | 32 |
Activate/Deactivate | 32 |
QueryUnload | 33 |
Unload | 33 |
Terminate | 33 |
Применение методов формы | 34 |
Load | 34 |
Unload | 34 |
Hide | 34 |
Show | 35 |
Использование набора Forms | 35 |
Резюме занятия | 37 |
Занятие 3. Использование элементов управления | 38 |
Работа с элементами управления | 38 |
Добавление нестандартных элементов управления | 38 |
Удаление элементов управления | 40 |
Настройка свойств элементов управления | 40 |
Использование массивов элементов управления | 41 |
Создание массивов элементов управления на этапе разработки | 42 |
Создание элементов управления в период выполнения | 43 |
Упражнение: использование массивов элементов управления | 44 |
Использование наборов элементов управления | 47 |
Упражнение: применение метода Add к набору Controls | 47 |
Улучшение пользовательского интерфейса | 49 |
ImageList | 49 |
TreeView | 50 |
ListView | 52 |
ТооBаr | 53 |
StatusBar | 54 |
Резюме занятия | 55 |
Занятие 4. Использование меню | 56 |
Создание меню на этапе разработки | 56 |
Использование Menu Editor | 56 |
Разделение элементов меню | 58 |
Клавиши доступа и «быстрые» клавиши | 58 |
Создание контекстных меню | 59 |
Модификация меню и период выполнения | 60 |
Включение и отключение команд меню | 60 |
Отображение галочки рядом с командой меню | 60 |
Скрытие элементов меню | 61 |
Использование массива элементов управления меню | 61 |
Добавление элементов меню в период выполнения | 61 |
Резюме занятия | 62 |
Резюме главы | 63 |
Упражнение: создание пользовательского интерфейса приложения Chateau St. Mark | 64 |
Создание пользовательского интерфейса | 64 |
Добавление на форму нестандартных элементов управления | 66 |
Добавление строки меню | 68 |
Закрепление материала | 70 |
Глава 3. Проверка и обработка пользовательского ввода | 71 |
Занятие 1. Контроль ввода | 72 |
Важность контроля пользовательского ввода | 72 |
Виды контроля данных | 72 |
Обратная связь с пользователем | 73 |
Применение метода SetFocus | 73 |
Использование события LostFocus | 74 |
Резюме занятия | 75 |
Занятие 2. Реализация проверки данных на уровне формы | 76 |
Общие сведения о проверке данных на уровне формы | 76 |
Обработчик клавиатуры на уровне формы | 76 |
Использование события KeyPress | 77 |
Использование событий KeyDown и KeyUp | 77 |
Использование свойства KeyPreview | 77 |
Включение и отключение элементов управления в зависимости от введенных данных | 78 |
Упражнение: включение и отключение элементов управления | 79 |
Резюме занятия | 80 |
Занятие З. Реализация проверки данных на уровне полей | 81 |
Использование свойств элемента TextBox | 81 |
Свойство MaxLength | 81 |
Свойство PasswordChar | 81 |
Свойство Locked | 82 |
Использование событий для контроля на уровне полей | 82 |
Проверка и форматирование символов | 82 |
Проверка данных с использованием события Change | 83 |
Функции проверки данных | 84 |
Использование элемента управления MaskEdBox | 84 |
Свойство Mask | 85 |
Свойство Format | 85 |
Свойство Text и CLipText | 86 |
Свойство AutoTab | 86 |
Событие Validate | 86 |
Использование события Validate | 86 |
Установка свойства Causes Validation | 87 |
Упражнение: использование события Validate в сочетании со свойством Causes Validation | 87 |
Резюме занятия | 89 |
Резюме главы | 90 |
Упражнение: контроль данных на уровне формы и полей | 91 |
Контроль навигации пользователя | 91 |
Контроль данных на уровне полей | 93 |
Использование событий Validate и LostFocus | 94 |
Контроль данных на уровне формы | 94 |
Закрепление материала | 96 |
Глава 4. Средства отладки | 97 |
Занятие 1. Отладка приложения | 98 |
Типы ошибок | 98 |
Синтаксические ошибки | 98 |
Ошибки периода выполнения | 99 |
Логические ошибки | 99 |
Меню и панель инструментов Debug | 99 |
Использование режима прерывания | 100 |
Функция Step Into | 101 |
Функция Step Over | 102 |
Функция Step Out | 102 |
Функция Run to Cursor | 102 |
Команда Set Next Statement | 102 |
Команда Show Next Statement | 103 |
Резюме занятия | 103 |
Занятие 2. Тестирование приложения | 104 |
Окно Immediate | 104 |
Оценка переменных и выражений | 104 |
Изменение значений переменных | 106 |
Комбинации клавиш, используемые в окне Immediate | 106 |
Объект Debug | 106 |
Debug Print | 106 |
Debug Assert | 107 |
Окно Locals | 107 |
Кнопка Call Stack | 108 |
Колонка Expression | 108 |
Колонка Value | 108 |
Колонка Type | 108 |
Задание контрольных выражений | 108 |
Добавление контрольного выражения | 109 |
Изменение или удаление контрольного выражения | 110 |
Выбор вида наблюдения | 110 |
Диалоговое окно Quick Watch | 110 |
Диалоговое окно Call Stack | 110 |
Трассировка вложенных процедур | 111 |
Резюме занятия | 111 |
Резюме главы | 112 |
Упражнение: отладка приложения | 112 |
Закрепление материала | 116 |
Глава 5. Обработка ошибок | 117 |
Занятие 1. Создание обработчика ошибок | 118 |
Как Visual Basic обрабатывает ошибки периода выполнения | 118 |
Реализация локального обработчика ошибок | 118 |
Активизация обработчика ошибок | 118 |
Обработки ошибок | 119 |
Возобновление нормального выполнения программы | 119 |
Упражнение: создание обработчика ошибок | 120 |
Последовательность вызова обработчиков ошибок | 121 |
Возобновление программы после выполнения обработчика ошибок из другой процедуры | 122 |
Отключение обработчика ошибок | 122 |
Возможности Visual Basic в перехвате ошибок | 123 |
Резюме занятия | 124 |
Занятие 2. Применение строчной обработки ошибок | 125 |
Создание строчного обработчика ошибок | 125 |
Очистка объекта Err | 125 |
Отключение строчного обработчика ошибок | 126 |
Резюме занятия | 126 |
Занятие 3. Реализация централизованной обработки ошибок | 127 |
Создание централизованного обработчика ошибок | 127 |
Резюме занятия | 128 |
Резюме главы | 129 |
Упражнение: реализация обработки ошибок | 129 |
Реализация процедурной обработки ошибок | 130 |
Реализация строчной обработки ошибок | 131 |
Закрепление материала | 132 |
Глава 6. Введение в модули классов | 133 |
Занятие 1. Введение в СОМ | 134 |
Модель компонентных объектов | 134 |
ООП и разработка приложений на базе компонентов | 135 |
Visual Basic и СОМ | 135 |
Модули классов | 136 |
Создание СОМ-компонентов в Visual Basic | 136 |
Резюме занятия | 137 |
Занятие 2. Использование модулей классов | 138 |
Добавление модуля класса в проект | 138 |
Объявление объектных переменных | 138 |
Ипользование внешних объектов | 139 |
Универсальные объектные переменные | 139 |
Создание объектов на основе компонентов | 139 |
Оператор Set с ключеным словом New | 140 |
Резюме занятия | 140 |
Занятие З. Создание модулей классов | 141 |
Создание процедур-свойств | 141 |
Упражнение: разработка модуля класса | 141 |
Создание методов | 142 |
Использование класса СHouse | 143 |
Создание событий | 143 |
Определение собственных событий | 144 |
Использование RaiseEvent | 144 |
Обработка событий | 144 |
Ограничения, связанные с ключевым словом WithEvents | 145 |
Резюме занятия | 145 |
Занятие 4. Надстройка Class Builder | 146 |
Загрузка Class Builder | 146 |
Создание нового класса | 146 |
Создание интерфейса класса | 147 |
Модели объектов | 147 |
Взаимосвязи объектов | 148 |
Резюме занятия | 148 |
Резюме главы | 149 |
Упражнение: создание модулей классов | 150 |
Создание модуля классов с помощью Class Builder | 150 |
Закрепление материала | 152 |
Глава 7. Введение в ActiveX Data Objects (ADO) | 153 |
Занятие 1. Доступ к данным в Visual Basic | 154 |
Интерфейсы доступа к данным | 154 |
ОАО | 154 |
RDO | 155 |
ADO | 155 |
Концепции реляционных баз данных | 156 |
Таблицы | 156 |
Записи | 157 |
Поля | 157 |
Ключи | 157 |
Резюме занятия | 158 |
Занятие 2. Введение в OLE DB и АОО | 159 |
Что такое OLE DB | 159 |
Компоненты OLE DB | 159 |
Потребители данных | 160 |
Сервисные компоненты | 160 |
Провайдеры данных | 160 |
Взаимосвязь OLE DB и ADO | 161 |
Резюме занятия | 161 |
Занятие З. Язык SQL | 162 |
Оператор Select | 162 |
Блок WHERE IN | 163 |
Блок Where Between | 163 |
Оператор LIKE | 163 |
Блок ORDER BY | 164 |
Резюме занятия | 164 |
Занятие 4. Элемент управления ADO Data | 165 |
Использование ADO Data | 165 |
Подключение к источнику данных | 166 |
Настройка строки подключении | 167 |
Настройка свойства RecordSource | 167 |
Упражнение: подключение ADO Data к источнику данных | 169 |
Связывание элементов управления | 170 |
Настройка свойств DataSource и DataField | 170 |
Упражнение: связывание элементов управления | 171 |
Data Form Wizard | 171 |
Резюме занятия | 173 |
Занятие 5. Программирование элемента управления ADO Data | 174 |
Создание объекта Recordset | 174 |
Проверка текущей позиции в наборе записей | 174 |
Изменение записей в Recordset | 174 |
Добавление записей в Recordset | 175 |
Удаление записей из Recordset | 175 |
Поиск записей | 176 |
Проверка результатов поиска | 176 |
Формирование критериев с неполными значениями | 176 |
Упражнение: поиск записей в Recordset | 177 |
Резюме занятия | 178 |
Резюме главы | 179 |
Упражнение: использование ADO Data | 180 |
Подключение ADO Data к источнику данных | 180 |
Связывание элементов управления с ADO Data | 182 |
Закрепление материала | 184 |
Глава 8. Разработка программных решений с применением ADO | 185 |
Занятие 1. Введение в модель объектов ADO | 186 |
ADO объекты | 186 |
Наборы объектов в ADO | 187 |
Резюме занятия | 188 |
Занятие 2. Подключение к источнику данных | 189 |
Объект сonnection | 189 |
Создание объекта Connection | 190 |
Упражнение: программное подключение к базе данных | 191 |
События объекта Connection | 192 |
Включение событий ADO-объектов | 192 |
Резюме занятия | 193 |
Занятие 3. Выборка данных | 194 |
Выборка записей с помощью объекта Recordset | 194 |
Явное использование объекта Connection | 195 |
Неявное использование объекта Connection | 195 |
Доступ к записям в объекте Recordset | 196 |
Выборка записей с помощью объекта Command | 196 |
Упражнение: получение информации из базы данных | 198 |
Резюме занятия | 199 |
Занятие 4. Перемещение по записям | 200 |
Определение типа курсора | 200 |
Методы Reeesync и Reguery | 201 |
Представление данных пользователю | 201 |
Перемещение по набору записей | 201 |
Дополнительные навигационные методы и свойства | 202 |
Поиск в наборе записей | 203 |
Применение свойства Filter | 203 |
Резюме занятия | 204 |
Занятие 5. Модификация данных | 205 |
Блокировка набора записей | 205 |
Редактирование данных | 205 |
Отмена изменений | 206 |
Добавление новой записи | 206 |
Удаление записи | 206 |
Резюме занятия | 207 |
Занятие 6. Использование Data Environment | 208 |
Создание соединения | 208 |
Представление записей пользователю | 209 |
Упражнение: отображение записей с помощью Data Environment | 210 |
Резюме занятия | 211 |
Резюме главы | 212 |
Упражнение: использование ADO | 213 |
Создание ADO-объектов | 213 |
Написание ADO-кода | 214 |
Закрепление материала | 217 |
Глава 9. Подключение к СОМ-серверам | 219 |
Занятие 1. Подключение к СОМ-компонентам | 220 |
Основные сведения о СОМ-компонентах | 220 |
Регистрация компонента | 220 |
Утилита Regsvr 32 | 221 |
Библиотеки типов | 222 |
Установка ссылок | 222 |
Резюме занятия | 223 |
Занятие 2. Управление СОМ-компонентами | 224 |
Автоматизация | 224 |
Объявление объектных переменных | 225 |
Создание экземпляра объекта | 225 |
Использование функции GetObject | 226 |
Использование функции CreateObject | 226 |
Использование оператора Set с ключевым словом New | 227 |
Упражнение: использование функциональности Microsoft Excel | 227 |
Object Browser | 229 |
Резюме занятия | 230 |
Занятие 3. Вызов функций Win32 API | 231 |
СОМ-компоненты и Win32 DLL-библиотеки | 231 |
Использование Win32 API | 231 |
Расширение функциональности приложений на основе Win32 API | 232 |
Объявление DLL-функций | 232 |
Вызов DLL-функций | 234 |
Создание процедур обратного вызова | 234 |
Оператор AddrcssOf | 234 |
Упражнение: создание процедуры обратного вызова | 235 |
Резюме занятия | 237 |
Резюме главы | 238 |
Упрожнение: подключение к СОМ-компонентам | 239 |
Подключение к Microsoft Word | 239 |
Подключение к Microsoft Excel | 241 |
Закрепление материала | 243 |
Глава 10. Создание СОМ-компонентов | 245 |
Занятие 1. Принципы создания СОМ-компонентов | 246 |
Разработка СОМ-компонентов | 246 |
Внутренние и внешние компоненты | 246 |
Внутренние компоненты | 247 |
Внешние компоненты | 247 |
Шаблоны проектов компонентов | 247 |
Резюме занятия | 248 |
Задание 2. Создание ActiveX-элементов | 249 |
Что такое ActiveX-элемент? | 249 |
Классы элементов управления | 250 |
Файлы, связанные с UserControl | 250 |
Упражнение: создание ActiveX-элемента | 251 |
Реализация ActiveX-элемента | 252 |
Создание свойства | 252 |
Создание страниц свойств | 253 |
Сохранение значений свойств | 253 |
Получение значений свойств | 254 |
Значения свойств по умолчанию | 254 |
Инициализация значений свойств через событие InitProperties | 254 |
Упражнение: тестирование ActiveX-элемента | 256 |
Создание ActiveX-элемента — источника данных | 257 |
Упражнение: создание элемента — источника данных | 258 |
Резюме занятия | 260 |
Задание 3. Создание ActiveX-компонентов кода | 261 |
Что такое компоненты кода | 261 |
Создание ActiveX-компонента кода | 261 |
Упражнение: создание DLL-сервера ActiveX | 263 |
Свойство Instancing | 264 |
Зависимые объекты (PublicNotCreatable) | 265 |
Объекты создаваемые извне | 265 |
MultiUse и SingleUse | 265 |
Тестирование и отладка | 266 |
Создание текстового приложения | 266 |
Перехват ошибок в компонентах | 267 |
Использование Start With Full | 268 |
Выгрузка внутреннего компонента | 268 |
Проверка компонента в Object Browser | 268 |
Резюме занятия | 269 |
Занятие 4. Использование Visual Component Manager | 270 |
Visual Component Manager: обзор | 270 |
Секция Folders | 271 |
Секция Contens | 271 |
Секция Properties | 272 |
Visual Component Manager: установки и запуск | 272 |
Публикация компонeнтов | 272 |
Поиск компонентов | 274 |
Повторное использование компонентов | 275 |
Резюме занятия | 275 |
Резюме главы | 276 |
Упражнение: создание класса — источника данных | 277 |
Преобразование класса CReservation в источник данных | 277 |
Связывание элементов управления с классом CReservation | 278 |
Создание кнопок перемещения по набору записей | 279 |
Реализация функциональности для бронирования номеров и регистрации гостей | 281 |
Закрепление материала | 286 |
Глава 11. Создание приложений для Интернета | 287 |
Занятие 1. Создание DHTML-приложений | 289 |
Интернет и HTML | 289 |
Разработка Интернет-приложений на Visual Basic | 289 |
Введение в разработку DHTML-приложений | 290 |
Преимущества DHTML-приложений | 290 |
Работа с DHTML Page Designer | 290 |
Некоторые отличия DHMTL от HTML | 291 |
Упражнение: создание DHTML-приложения | 292 |
Резюме занятия | 295 |
Занятие 2. Создание ActiveX-документов | 296 |
Базовые сведения об ActiveX-документах | 296 |
Преимущества ActiveX-документов | 297 |
Объект UserDocument | 297 |
События объекта UserDocument | 297 |
Файлы, относящиеся к объекту UserDocument | 298 |
Разработка ActiveX-документа | 298 |
Преобразование существующего проекта Standard EXE | 299 |
Упражнение: создание ActiveX-документа | 299 |
Запуск и отладка проекта ActiveX-документа | 301 |
Резюме занятия | 302 |
Занятие 3. Создание приложений IIS с использованием Web-классов | 303 |
Приложения IIS: обзор | 303 |
Структура приложений IIS | 304 |
Обработка клиентских запросов с помощью Web-класса | 305 |
Обработка событий | 305 |
Web-классы и ASP-файлы | 306 |
Конструктор Web-класса | 306 |
Написание кода для Web-класса | 308 |
Отладка и развертывание приложения IIS | 308 |
Интеграция Visual Basic и других средств Web-разработки | 309 |
Использование Web-классов для создания распределенных приложений | 309 |
Резюме занятия | 309 |
Резюме главы | 310 |
Упражнение: разработка ActiveX-документов | 311 |
Преобразование форм в ActiveX-документы | 311 |
Закрепление материала | 313 |
Глава 12. Упаковка и распространение приложений | 315 |
Занятие 1. Создание справочной системы | 316 |
Свойства справочных файлов | 316 |
Свойство HelpFile | 316 |
Свойство HelpContextID | 317 |
Режим What's This Help | 317 |
Создание всплывающих подсказок | 318 |
Резюме занятия | 319 |
Занятие 2. Создание исполняемого файла | 320 |
Параметры компилятора | 320 |
Optimize for Fast Code | 321 |
Optimize for Small Code | 321 |
No Optimizations | 321 |
Favvor Pentium Pro | 321 |
Create Symbolic Debug Info | 322 |
Assume No Aliasing | 322 |
Remove Array Bounds Checks | 322 |
Remove Integer-Overflow Checks | 323 |
Remove Floating-Point Error Checks | 323 |
Remove Safe Pe ntium FDIV Checks | 323 |
Allow Unrounded Floating-Point Operations | 323 |
Условная компиляция | 324 |
Объявление констант условной компиляции | 324 |
Резюме занятия | 325 |
Занятие 3. Использование Package and Deployment Wizard | 326 |
Установка персонального приложения | 326 |
Package and Deployment Wizard | 326 |
Размещение приложения в Web | 327 |
Setup Toolkil | 328 |
Отмена установки | 328 |
Резюме занятия | 329 |
Резюме главы | 330 |
Упражнение: использование справочных файлов и Package and Deployment Wizard | 330 |
Использование справочных файлов | 331 |
Настройка параметров компиляции приложения | 332 |
Использование Package and Deployment Wizard | 333 |
Закрепление материала | 335 |
Приложение Вопросы и ответы | 337 |
Словарь терминов | 349 |
Предметный указатель | 361 |