Оглавл 1.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

Visual Basic 6.0

Содержание

  • Введение
    • Как построена книга
    • Специальные элементы книги
  • Глава 1. Первое знакомство с Visual Basic 6.0
    • Интегрированная среда разработки
      • Главное меню
      • Стандартная панель инструментов
      • Окно конструктора форм
      • Панель элементов управления
      • Окно редактора меню
      • Окно свойств
        • Свойства, определяющие внешний вид объекта
        • Свойства, определяющие поведение объекта
        • Свойства, определяющие шрифт.
        • Свойства позиционирования
        • Свойства шкалы размеров объекта
      • Окно просмотра объектов
      • Окно макета формы
      • Окно редактора исходного кода
      • Окно проводника проекта
      • Окно Locals
      • Окно Watches
      • Окно Immediate
    • Настройка среды разработки
      • Вкладка Editor
      • Вкладка Editor Format
      • Вкладка General
      • Вкладка Docking
      • Вкладка Environment
      • Вкладка Advanced
    • Справочная система
  • Глава 2. Разработка приложения при помощи мастеров и шаблонов
    • Мастера
      • Мастер приложения Application Wizard
      • Мастер форм баз данных Data Form Wizard
    • Шаблоны
      • Стандартные шаблоны форм
        • Шаблон About Dialog
        • Шаблон Web Browser
        • Шаблон Dialog
        • Шаблон Log in Dialog
        • Шаблон Splash Screen
        • Шаблон Tip of the Day
        • Шаблон ODBC Log In
        • Шаблон Options Dialog
  • Глава 3. Создание простого приложения
    • Создание проекта
    • Сохранение проекта
    • Открытие проекта
    • Выполнение приложения
    • Создание формы
    • Свойства объектов формы
      • Общие для всех объектов свойства
    • События и методы
    • Действия, выполняемые с объектами формы
      • Выделение объектов формы
      • Отмена выделения с объектов
      • Перемещение объектов в форме
      • Удаление объектов из формы
      • Изменение размеров объектов
      • Выравнивание объектов формы
      • Линии сетки
      • Порядок обхода объектов формы
    • Настройка параметров формы
      • Расположение формы и ее размеры
      • Заголовок формы
      • Стиль обрамления формы
      • События формы
    • Элементы управления формы . Текстовая информация
      • Текстовое поле
      • Кнопка
      • Флажок
      • Переключатель
      • Списки
    • Пример создания приложения
  • Глава 4. Управление проектом
    • Структура проекта
    • Проводник проекта
    • Использование браузера объектов для просмотра структуры проекта
    • Свойства проекта
      • Вкладка General
      • Вкладка Make
      • Вкладка Compile
      • Вкладка Component
      • Вкладка Debugging
    • Использование в проекте внешних библиотек объектов
    • Использование в проекте внешних компонентов
    • Файл ресурсов
    • Создание исполняемого файла проекта
  • Глава 5. Основные элементы программирования
    • Переменные
      • Имена переменных
      • Типы данных
      • Объявление переменной
      • Область действия переменных
      • Присвоение значения переменной
      • Особенности использования переменных типа Variant
        • Значение Empty
        • Значение Null
        • Значение Error
        • Внутреннее представление значений
    • Константы
      • Встроенные константы Visual Basic
      • Объявление констант
    • Массивы
      • Объявление массива
        • Объявление массива фиксированного размера
        • Объявление динамического массива
    • Математические операторы
    • Работа со строками
      • Функции Str и Val
      • Функции, удаляющие пробелы в символьной строке
      • Выделение подстроки
      • Преобразование строки
        • Функция UCase
        • Функция LCase
        • Функция StrConv
      • Определение положения строки в другой строке
      • Объединение строк
    • Оформление программных кодов
      • Комментарии
      • Размещение оператора на нескольких строках
      • Размещение нескольких операторов на одной строке
    • Программные модули
    • Редактирование исходных кодов
    • Процедуры
      • Процедуры Sub
      • Процедуры Function
      • Вызов процедур
      • Передача параметров
  • Глава 6. Управляющие конструкции и циклы
    • Управляющие конструкции Visual Basic
      • Условные выражения
      • Конструкция If... Then
      • Конструкция If... Then ... Else
      • Конструкция Select Case
    • Циклы
      • Цикл с использованием конструкции For...Next
      • Цикл с использованием конструкции For Each...Next
      • Цикл с использованием конструкции Do...Loop
    • Оператор Exit
  • Глава 7. Разработка пользовательского интерфейса
    • Общие советы по разработке интерфейса
    • Типы интерфейсов
      • SDI-интерфейс
      • MDI-интерфеис
        • Родительское окно MDI-интерфеиса
        • Дочернее окно MDI-интерфеиса
      • Интерфейс типа проводник
    • Элементы интерфейса
      • Меню
        • Редактор меню Menu Editor
        • Контекстное меню
      • Панели инструментов
        • Мастер панелей инструментов Toolbar Wizard
        • Элемент управления ToolBar
        • Элемент управления CoolBar
      • Диалоговые окна
        • Окно сообщения (MsgBox)
        • Диалоговое окно ввода информации (InputBox)
      • Использование элемента управления CommonDialog для создания диалоговых окон
        • Диалоговое окно открытия файла
        • Диалоговое окно сохранения файла
        • Диалоговое окно настройки цветовой палитры
        • Диалоговое окно настройки шрифтов текста
        • Диалоговое окно печати
        • Справочная система в стиле Windows
    • Строка состояния
  • Глава 8. Использование стандартных элементов управления Visual Basic
    • Метка
      • Свойство AutoSize
      • Свойство Wordwrap
      • Свойство UseMnemonic
    • Текстовое поле
      • Свойства, определяющие оформление текста
      • Многострочные текстовые поля
      • Управление текстом в объекте TextBox
      • Нередактируемые текстовые поля
      • Проверка правильности ввода данных
      • Использование текстового поля для ввода пароля
      • Подсказка
    • Кнопки управления
      • Клавиши быстрого доступа
      • Свойства Default и Cancel
      • Стиль оформления кнопки
      • Способы выбора кнопки управления
    • Список ListBox
      • Добавление элементов в список
      • Удаление элементов из списка
      • Свойства ListCount и Listlndex
      • Стиль оформления списка
      • Выбор нескольких элементов из списка
    • Списки типа ComboBox
      • Добавление элементов в список типа СотbоВох
      • Удаление элементов из списка типа СотbоВох
      • Доступ к элементам списка
    • Линии и контуры
      • Линия
      • Контуры
    • Полосы прокрутки
      • Размещение полосы прокрутки и настройка свойств
    • Элемент управления Frame
      • Создание группы элементов
    • Таймер
      • Использование таймера
    • Использование в форме графики
      • Элемент управления Image
        • Свойство Stretch
        • Способы загрузки изображения
      • Элемент управления Picture
        • Отображение графических изображений
        • Использование объекта Picture в роли контейнера
        • Использование объекта Picture для вывода текста и графических элементов
    • Стандартные элементы управления Microsoft
      • Элемент управления ImageList
      • Элемент управления ImageCombo
      • Элемент управления ProgressBar
      • Элемент управления Slider
      • Элемент управления Status Bar
        • Настройка панелей строки состояния
      • Элемент управления TabStrip
      • Элемент управления UpDown
      • Элемент управления Month View
        • Работа с календарем
  • Глава 9. Работа с файлами и организация печати
    • Традиционный подход при работе с файлами
      • Открытие файлов
      • Закрытие файлов
      • Работа с файлами последовательного доступа
        • Чтение данных
        • Переход на заданную позицию в файле
        • Запись данных
      • Работа с файлами произвольного доступа
        • Открытие файла произвольного доступа
        • Чтение данных из файла произвольного доступа
        • Запись в файл произвольного доступа
        • Изменение данных в файле произвольного доступа
      • Работа с двоичными файлами
        • Открытие двоичного файла
        • Чтение данных из двоичных файлов
        • Запись данных в двоичные файлы
      • Работа с атрибутами файлов
      • Работа с папками и устройствами
      • Организация печати
    • Система файловых объектов (FSO)
      • Класс Drive
      • Класс File
      • Класс Folder
      • Класс FileSystemObject
      • Класс TextStream
      • Программирование в системе FSO
      • Работа с устройствами и папками
      • Работа с файлами
        • Работа на уровне файлов
        • Работа на уровне данных
  • Глава 10. Отладка программ, обработка ошибок и оптимизация приложений
    • Редактор кода
    • Отладка программ
    • Обработка ошибок
    • Оптимизация приложении
      • Оптимизация скорости работы приложения
      • Оптимизация размера приложения
      • Оптимизация размера графики приложения
  • Глава 11. Использование графики
    • Простые элементы управления для работы с графикой
      • Элемент управления Line
      • Элемент управления Shape
      • Элемент управления Frame
    • Свойство Picture
    • Объекты для работы с изображениями
      • Задание изображений
      • Удаление изображений
    • Графические методы
      • Функции цвета
        • Метод Circle
        • Метод CIs
        • Метод Line
        • Метод Paint Picture
        • Метод Point
        • Метод Print
        • Метод Pset
    • Работа со шрифтами
    • Управление цветом
    • Анимационная графика
      • Массив элементов управления
      • Переключение изображений
      • Перемещение и переключение изображений
      • Совмещение изображения и текста
      • Элемент управления Animation
  • Глава 12. Мультимедиа в Visual Basic
    • Общие понятия
      • Типы файлов мультимедиа
      • Типы управляемых устройств
    • Интерфейс MCI
      • Элемент управления MCI
    • Разработка простого проигрывателя при помощи элемента управления MCI
      • Проигрыватель аудиофайлов WAV
      • Проигрыватель видеофайлов
      • Проигрыватель музыкальных компакт-дисков
  • Глава 13. Создание справочной системы приложения
    • Создание справочной системы в формате WinHelp
      • Темы справочной системы
      • Ключи для поиска тем
        • Перекрестные ссылки
      • Пояснения к терминам
      • Формирование файла проекта справочной системы
        • Раздел [Files]
        • Определение параметров компиляции
        • Раздел [Map]
      • Компиляция справочной системы
      • Содержание справочной системы
    • Создание справочной системы в формате HTML
      • Окно HTML Help Workshop
      • Определение параметров проекта справочной системы
      • Определение псевдонимов тем
      • Определение связи между псевдонимами и индексами тем
      • Создание содержания справочной системы
      • Создание ключей для поиска тем
      • Компиляция и тестирование справочной системы
    • Использование справочной системы в приложениях
      • Определение темы справочной системы для элементов управления
  • Глава 14. Разработка компонентов ActiveX
    • Основные сведения об ActiveX-компонентах
      • Модель составных объектов (СОМ)
      • Модель распределенных составных объектов (DCOM)
    • Создание элементов управления ActiveX
      • Проектирование вида элемента управления
      • Добавление событий
      • Добавление методов
      • Добавление свойств
      • Создание свойств, событий и методов с помощью мастера ActiveX Control Interface Wizard
      • Добавление страницы свойств с помощью мастера Property Page Wizard
    • Проверка и компиляция нового элемента управления ActiveX
      • Проверка элемента управления ActiveX
      • Доработка программного кода элемента ActiveX
      • Компиляция элемента управления в файл компонентов ActiveX
      • Пример подключения нового компонента к проекту
  • Глава 15. Создание собственных классов
    • Основные понятия ООП
      • Объект
      • Класс
        • Свойства класса
        • Методы класса
        • События класса
      • Свойства объекта
      • Понятие коллекции объектов
    • Создание собственных классов
      • Добавление свойств класса
      • Добавление методов в класс
      • Добавление событий в класс
    • Создание классов форм
      • Создание класса формы
      • Добавление свойств, методов, событий в класс формы
    • Создание классов с помощью VB Class Builder
      • Построитель классов
      • Добавление нового класса
      • Добавление свойств класса
      • Добавление методов класса
      • Добавление событий класса
      • Класс как способ многократного использования кода
  • Глава 16. Основы баз данных
    • Проектирование базы данных
    • Нормализация данных
    • Индексы
    • Использование Visual Data Manager для создания базы данных
      • Создание базы данных
      • Создание таблицы
      • Работа с таблицей в базе данных
        • Просмотр содержимого таблицы
        • Модификация структуры таблицы
        • Переименование таблицы
        • Удаление таблицы
        • Копирование структуры таблицы
    • Создание соединений с серверами баз данных
      • Таблицы
      • Схема базы данных
        • Создание новой таблицы
        • Добавление таблицы в схему
        • Установление связей между таблицами
        • Удаление таблиц
      • Представление данных
        • Типы объединения таблиц в представлении
  • Глава 17. Управление данными
    • Подключение компонентов ADO к проекту
    • Элемент управления ADO Data Control
      • Соединение элемента с источником данных
      • Определение источника записей
      • Использование элемента ADO Data Control в форме
    • Использование окружения данных при создании формы
      • Настройка объекта Command
        • Вкладка Parameters
        • Вкладка Relation
        • Вкладка Grouping
        • Вкладка Aggregates
        • Вкладка Advanced
      • Размещение полей объекта Commands форме
      • Использование элемента ADO Data Control для перемещения по данным
      • Настройка элемента ADO Data Control для отображения номера покупателя
    • Одновременная работа с несколькими записями
      • Использование элемента DataGrid
        • Добавление и удаление столбцов
        • Использование разделов
        • Настройка параметров элемента DataGrid с помощью диалогового окна Property Pages
        • Вкладка Keyboard
        • Вкладка Columns
        • Вкладка Layout
        • Вкладка Color
        • Вкладка Font
        • Вкладка Splits
        • Вкладка Format
    • Создание компонентов ActiveX для управления данными
      • Создание компонента own Navigator
        • Размещение элементов управления
        • Осуществление доступа к данным
        • Тестирование ActiveX-компонента
        • Добавление и вставка записей
        • Совершенствование созданного компонента
      • Компонент ownSlider
        • Добавление компонента к проекту
        • Связывание с объектом-источником
  • Глава 18. Отчеты
    • Конструктор отчетов DataReport
      • Элементы управления объекта DataReport
      • Свойства объекта DataReport
      • Методы объекта Data Report
        • Метод ExporlReport
        • Метод Print Report
        • Методы Show и Refresh
      • События объекта DataReport
    • Создание отчетов
      • Окружение данных отчета
      • Проектирование простого отчета
      • Изображения в отчете
      • Группировка данных в отчете
      • Проектирование отчета с группировкой данных
        • Создание источника данных отчета
        • Проектирование отчета
        • Вычисляемые поля в отчете
        • Функциональные поля в отчете
  • Глава 19. Создание простых Internet-приложений
    • Общие сведения о HTML.Что такое HTML?
      • Как создаются HTML-документы?
      • Тэги в HTML
      • Основные тэги в HTML
    • Введение в VBScript
      • Некоторые ограничения VBScript
      • Объектная модель и обработка событии
    • Пример использования DHTML
      • Пример создания DHTML-проекта
      • Отправка данных
    • Введение в Active Server Page
      • Переход от HTML к ASP
      • Виртуальные каталоги
    • Создание проекта типа IIS Application
    • Взаимодействие Internet-приложении с базами данных
  • Глава 20. Групповая разработка проекта
    • Администрирование SourceSafe
      • Запуск SourceSafe
      • Настройка
      • Работа с пользователями
      • Работа с данными
    • Работа пользователя в SourceSafe
      • Иерархия в SourceSafe
      • Работа с проектами
      • Работа с файлами проекта
    • SourceSafe в среде Visual Basic 6


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 1. Первое знакомство с Visual Basic 6.0

Вы приступаете к работе с Visual Basic 6. Многое из того, с чем вам придется работать (меню, панели инструментов, диалоговые окна), покажутся знакомыми, т. к. они характерны для среды Windows.

Для запуска программы из главного меню Windows выполните следующие действия:

1. Нажмите кнопку Пуск, расположенную в нижней части экрана.

2. В открывшемся главном меню Windows выберите команду Программы. Появится меню данной команды.

3. Выберите опцию Microsoft Visual Studio 6.0.

4. В появившемся подменю выберите Microsoft Visual Basic 6.

Для более быстрого запуска программы Visual Basic б вы можете создать на рабочем столе ярлык и назначить ему клавиши быстрого вызова. Тогда вам достаточно нажать заданную комбинацию клавиш, в каком бы окне Windows вы ни находились, и программа запустится.

При запуске Visual Basic 6 (рис. 1.1) на экране появляется диалоговое окно New Project (Новый проект), используя которое можно выбрать шаблон для нового проекта, запустить мастера создания проекта или открыть ранее созданный проект. Это окно содержит три вкладки следующего назначения:

  • New (Новый) — содержит шаблоны и мастера для создания нового проекта;
  • Existing (Существующий) — позволяет открыть ранее созданный проект или проекты-примеры, поставляемые с Visual Basic 6. Вкладка имеет раскрывающийся список, с помощью которого можно выбрать любую папку на имеющихся ресурсах компьютера;
  • Recent (Недавно созданный) — содержит список проектов, открывавшихся в последнее время;

Для создания нового проекта используется вкладка New. На ней можно выбрать один из следующих типов шаблона проекта:

  • Standard EXE — стандартное выполняемое приложение;
  • ActiveX EXE — выполняемое приложение ActiveX;
  • ActiveX DLL — динамическая библиотека ActiveX;
  • ActiveX Control — элемент управления ActiveX;
  • VB Application Wizard — мастер приложений;
  • VB Wizard Manager — мастер создания пользовательских мастеров;
  • Data Project — проект управления б"азой данных;
  • IIS Application — приложение, размещаемое на сервере Web-узла (IIS — Internet Information Server);
  • Addin — надстройка, дополнительные утилиты, расширяющие возможности приложений;
  • ActiveX Document DLL — динамическая библиотека документов ActiveX;
  • ActiveX Document EXE — выполняемое приложение документов ActiveX;
  • DHTML Application — приложение, создающее динамические HTML-страницы.

Рис. 1.1. Окно New Project для выбора типа создаваемого проекта

После выбора типа проекта пользователь переходит непосредственно в инструментальную среду проектирования Visual Basic 6.

Если вы не хотите, чтобы диалоговое окно New Project появлялось при последующих запусках Visual Basic 6, установите флажок Don't show this dialog in the future (He показывать этот диалог в дальнейшем), находящийся в нижней части окна. При этом окно New Project можно при необходимости вызвать командой New Project (Новый проект) меню File (Файл), но уже без вкладок Recent и Existing. Окно с этими вкладками вызывается с помощью команды Open Project (Открыть проект) меню File или одноименной кнопки на стандартной панели инструментов.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 1. Первое знакомство с Visual Basic 6.0

Вы приступаете к работе с Visual Basic 6. Многое из того, с чем вам придется работать (меню, панели инструментов, диалоговые окна), покажутся знакомыми, т. к. они характерны для среды Windows.

Для запуска программы из главного меню Windows выполните следующие действия:

1. Нажмите кнопку Пуск, расположенную в нижней части экрана.

2. В открывшемся главном меню Windows выберите команду Программы. Появится меню данной команды.

3. Выберите опцию Microsoft Visual Studio 6.0.

4. В появившемся подменю выберите Microsoft Visual Basic 6.

Для более быстрого запуска программы Visual Basic б вы можете создать на рабочем столе ярлык и назначить ему клавиши быстрого вызова. Тогда вам достаточно нажать заданную комбинацию клавиш, в каком бы окне Windows вы ни находились, и программа запустится.

При запуске Visual Basic 6 (рис. 1.1) на экране появляется диалоговое окно New Project (Новый проект), используя которое можно выбрать шаблон для нового проекта, запустить мастера создания проекта или открыть ранее созданный проект. Это окно содержит три вкладки следующего назначения:

  • New (Новый) — содержит шаблоны и мастера для создания нового проекта;
  • Existing (Существующий) — позволяет открыть ранее созданный проект или проекты-примеры, поставляемые с Visual Basic 6. Вкладка имеет раскрывающийся список, с помощью которого можно выбрать любую папку на имеющихся ресурсах компьютера;
  • Recent (Недавно созданный) — содержит список проектов, открывавшихся в последнее время;

Для создания нового проекта используется вкладка New. На ней можно выбрать один из следующих типов шаблона проекта:

  • Standard EXE — стандартное выполняемое приложение;
  • ActiveX EXE — выполняемое приложение ActiveX;
  • ActiveX DLL — динамическая библиотека ActiveX;
  • ActiveX Control — элемент управления ActiveX;
  • VB Application Wizard — мастер приложений;
  • VB Wizard Manager — мастер создания пользовательских мастеров;
  • Data Project — проект управления б"азой данных;
  • IIS Application — приложение, размещаемое на сервере Web-узла (IIS — Internet Information Server);
  • Addin — надстройка, дополнительные утилиты, расширяющие возможности приложений;
  • ActiveX Document DLL — динамическая библиотека документов ActiveX;
  • ActiveX Document EXE — выполняемое приложение документов ActiveX;
  • DHTML Application — приложение, создающее динамические HTML-страницы.

Рис. 1.1. Окно New Project для выбора типа создаваемого проекта

После выбора типа проекта пользователь переходит непосредственно в инструментальную среду проектирования Visual Basic 6.

Если вы не хотите, чтобы диалоговое окно New Project появлялось при последующих запусках Visual Basic 6, установите флажок Don't show this dialog in the future (He показывать этот диалог в дальнейшем), находящийся в нижней части окна. При этом окно New Project можно при необходимости вызвать командой New Project (Новый проект) меню File (Файл), но уже без вкладок Recent и Existing. Окно с этими вкладками вызывается с помощью команды Open Project (Открыть проект) меню File или одноименной кнопки на стандартной панели инструментов.

Интегрированная среда разработки

Интегрированная среда разработки (IDE) представляет собой знакомый нам по другим приложениям Microsoft графический интерфейс. Ее внешний вид показан на рис. 1.2.

Рис. 1.2. Интегрированная среда проектирования (разработки) Visual Basic 6

В состав среды проектирования включен набор следующих основных элементов:

  • главное меню;
  • стандартная панель инструментов (Standard);
  • панель элементов управления;
  • окно проводника проекта (Project);
  • конструктор форм;
  • редактор меню (Menu Editor);
  • окно свойств (Properties);
  • окно макета формы (Form Layout);
  • окно просмотра объектов (Object Browser);
  • редактор исходного кода.

Главное меню

Главное меню, как и во всех приложениях Microsoft, представляет собой линейку раскрывающихся меню. Оно содержит следующие основные команды: File (Файл), Edit (Правка), View (Вид), Project (Проект), Format (Формат), Debug (Отладка), Run (Запуск), Query (Запрос), Diagram (Диаграмма), Tools (Сервис), Add-Ins (Надстройки), Window (Окно), Help (Справка). Вид главного меню показан на рис. 1.3. Наиболее часто используемые команды меню отображены в виде кнопок со значками на стандартной панели инструментов, размещенной ниже меню.

Многие команды окажутся знакомыми, поскольку главное меню Visual Basic 6 организовано и работает так же, как и в других приложениях Microsoft, — например, в текстовом редакторе Microsoft Word или в электронной таблице Microsoft Excel.

Рис. 1.3. Главное меню Visual Basic 6

Рассмотрим основные команды главного меню. В меню File (Файл) сгруппированы команды для работы с файлами проекта. Используя эти команды, можно выполнять такие действия, как создание нового проекта, открытие проекта для внесения изменений, добавление проекта для параллельной работы над несколькими проектами или копирование форм из проекта в проект и т. п. Все команды этого меню перечислены в табл. 1.1.

Таблица 1.1. Команды меню File
Команда | Назначение
New Project (Новый проект) | Создает новый проект
Open Project (Открыть проект) | Открывает существующий проект
Add Project (Добавить проект) | Добавляет проект в группу для параллельной работы над несколькими проектами, копирования форм из проекта в проект или для его отладки
Remove Project (Исключить проект) | Удаляет проект из группы проектов
Save Project Group (Сохранить группу проектов) | Сохраняет группу проектов
Save Project Group As (Сохранить группу проектов как) | Сохраняет группу проектов под другим именем
Save <имя формы> (Сохранить форму) | Сохраняет форму с прежним именем
Save <имя формы> As (Сохранить форму как) | Сохраняет форму под другим именем
Print (Печать) | Открывает диалоговое окно Print
Print Setup (Настройка печати) | Открывает диалоговое окно настройки печати
Make <имя проекта>.ехе (Создать ехе-файл проекта) | Создает выполняемый файл текущего проекта
Make Project Group (Создать группу проектов) | Создает группу проектов
Exit (Выход) | Осуществляет выход из Visual Basic 6. В том случае, если в окне программы находятся не сохраненные результаты работы, появятся запросы о необходимости сохранения проектов, форм и других файлов

Меню Edit (Правка) содержит команды, предназначенные для редактирования (табл. 1.2). Часть из них соответствует подобным командам редактирования других приложений Microsoft, например, отменить предыдущую команду, повторить предыдущую команду, вырезать фрагмент текста, скопировать фрагмент в буфер обмена. В составе этого меню целый набор команд для работы с таблицами базы данных: добавлять и удалять поля, назначать первичный ключ в таблице базы данных.

Таблица 1.2. Команды меню Edit
Команда | Назначение
Undo (Отменить) | Отменяет предыдущую команду
Redo (Повторить) | Восстанавливает предыдущую команду
Cut (Вырезать) | Вырезает фрагмент текста
Сору (Копировать) | Копирует фрагмент в буфер обмена
Paste (Вставить) | Копирует содержимое из буфера обмена
Remove (Переместить) | Перемещает выделенное
Delete (Удалить) | Удаляет выделенное
Delete Table from Database (Удалить таблицу из базы данных) | Удаляет таблицу из базы данных
Select All (Выделить все) | Выделяет все
Select All Columns (Выделить все колонки) | Выделяет все колонки
Table: Set Primary Key (Таблица: Установить первичный ключ) | Определяет первичный ключ таблицы
Table: Insert Column (Таблица: Вставить поле) | Вставляет поле в таблицу
Table: Delete Column (Таблица: Удалить поле) | Удаляет поле из таблицы
Find (Найти) | Вызывает диалоговое окно поиска
Find Next (Найти следующее) | Ищет следующее значение, заданное для поиска
Replace (Заменить) | Ищет значение, заданное для поиска, и заменяет его новым значением
Go To Row: First (Перейти на запись: Первая) | Устанавливает указатель на первую запись
Go To Row: Last (Перейти на запись: Последняя) | Устанавливает указатель на последнюю запись
Go To Row: Next (Перейти на запись: Следующая) | Устанавливает указатель на следующую запись
Go To Row: Previous (Перейти на запись: Предыдущая) | Устанавливает указатель на предыдущую запись
Go To Row: Row (Перейти на запись: Запись) | Устанавливает указатель на запись с заданным номером
Go To Row: New (Перейти на запись: Новая) | Вставляет новую запись

В составе меню View (Вид) содержатся команды вызова окон и панелей инструментальной среды Visual Basic 6 (табл. 1.3).

Таблица 1.3. Команды меню View
Команда | Назначение
Code (Код) | Открывает окно редактора программного кода
Object (Объект) | Открывает окно конструктора форм
Object Browser (Браузер объектов) | Открывает окно браузера объектов
Immediate Window (Окно непосредственного выполнения) | Открывает окно, предназначенное для ввода и непосредственного выполнения команд
Locals Window (Окно Локальные) | Открывает окно, предназначенное для просмотра значений переменных
Watch Window (Окно Наблюдение) | Открывает окно просмотра значений выражений
Project Explorer (Проводник проекта) | Открывает окно проводника проектов
Properties Window (Окно свойств) | Открывает окно свойств объектов Properties
Form Layout Window (Окно макета формы) | Открывает окно макета формы
Toolbox (Панель инструментов) | Отображает панель элементов управления
Data View Window (Окно просмотра данных) | Открывает окно просмотра данных
Color Palette (Цветовая палитра) | Отображает цветовую палитру
Toolbars (Панели инструментов) | Открывает меню, предназначенное для отображения в окне программы Visual Basic следующих панелей: Debug (Отладка), Editor (Редактор), Form Edit (Редактор форм), Standard (Стандартная панель инструментов)

В меню Project (Проект) сгруппированы команды управления проектом и его элементами (табл. 1.4). Они позволяют добавить в проект и удалить из него элементы проекта, такие как форма, программный модуль, класс и другие. С помощью команд данного меню вы также можете открыть окно свойств приложения, добавить ссылки на подключаемые библиотеки, добавить дополнительные компоненты на панель элементов.

Таблица 1.4. Команды меню Project
Команда | Назначение
Add Form (Добавить форму) | Добавляет в окно проекта форму
Add MDI Form (Добавить форму окна MDI) | Добавляет MDI-форму
Add Module (Добавить модуль) | Добавляет программный модуль
Add Class Module (Добавить класс) | Добавляет пользовательский класс
Add User Control (Добавить элемент управления) | Добавляет пользовательский элемент управления
Add Property Page (Добавить страницу свойств) | Добавляет стандартную форму настройки свойств
Add WebClass (Добавить Web-класс) | Добавляет Web-класс
Add Data Report (Добавить отчет) | Добавляет в проект отчет
Add DHTML Page (Добавить страницу DHTML) | Добавляет страницу DHTML
Add Data Environment (Добавить среду данных) | Добавляет среду базы данных
Add File (Добавить файл) | Добавляет файл
Remove (Исключить) | Исключает файл из проекта
References (Ссылки) | Вызывает окно включения ссылок проекта на библиотеки
Components (Компоненты) | Открывает диалоговое окно Components, позволяющее добавить на панель элементов управления компоненты для их дальнейшего включения в проект приложения
Project Properties (Свойства проекта) | Открывает окно свойств проекта Project Properties

Меню Format (Формат) содержит большое количество команд форматирования объектов в форме (табл. 1.5).

Таблица 1.5. Команды меню Format
Команда | Назначение
Align (Выровнять) | Открывает меню, содержащее команды выравнивания объектов
Make Same Size (Установить подобный размер) | Открывает меню, содержащее команды, управляющие размерами объектов в форме
Horizontal Spacing (Горизонтальный интервал) | Устанавливает интервал между объектами в горизонтальном направлении
Vertical Spacing (Вертикальный интервал) | Устанавливает интервал между объектами в вертикальном направлении
Center in Form (Центрирование в форме) | Центрирует объекты в форме
Order (Порядок) | Направляет выбранный объект в нижний или верхний слой формы

В меню Debug (Отладка) сгруппированы команды (табл. 1.6), предназначенные для отладки приложения. Используя команды этого меню, можно установить точки останова программы и проверить значения выражении и переменных, выполняя программу по шагам.

Таблица 1.6. Команды меню Debug
Команда | Назначение
Step Into (Шаг с заходом в процедуры) | Осуществляет пошаговое выполнение процедуры, включая также вызываемые ею процедуры
Step Over (Шаг без захода в процедуры) | Осуществляет пошаговое выполнение процедуры без трассировки вызываемых ею процедур
Step Out (Шаг с выходом из процедуры) | Выполнение программы осуществляется до выхода из текущей процедуры
Add Watch (Добавить окно Watch) | Открывает окно Add Watch (Добавить наблюдение) для ввода выражений, за значениями которых будет вестись наблюдение
Edit Watch (Открыть окно Edit Watch) | Открывает диалоговое окно Edit Watch для редактирования или удаления выражений, за значениями которых ведется наблюдение
Quick Watch (Открыть окно Quick Watch) | Открывает окно Quick Watch для просмотра значения выбранного выражения
Toggle Breakpoint (Установить точку останова) | Устанавливает точку останова
Clear All Breakpoints (Отменить все точки останова) | Удаляет все точки останова
Set Next Statement (Определить следующий оператор) | Устанавливает следующий оператор
Show Next Statement (Показать следующий оператор) | Показывает следующий оператор

Команды меню Run (Запуск) используются для управления запуском приложения (табл. 1.7). Используя команды данного меню, можно запустить приложение на выполнение с компиляцией или без компиляции, приостановить или прервать выполнение приложения.

Таблица 1.7. Команды меню Run
Команда | Назначение
Start (Запустить) | Запускает приложение на выполнение
Start with Full Compile (Запустить с полной компиляцией) | Запускает приложение на выполнение с полной компиляцией
Break (Приостановить) | Останавливает выполнение приложения
End (Конец) | Прекращает выполнение приложения
Restart (Перезапустить) | Перезапускает приложение

Меню Query (Запрос) содержит команды для создания и выполнения запросов к базе данных (табл. 1.8). При помощи этого меню, например, можно выполнить запрос, преобразовать результаты запроса в табличный вид.

Таблица 1.8. Команды меню Query
Команда | Назначение
Run (Запустить) | Выполняет запрос
Clear Results (Очистить результаты) | Очищает результаты запроса
Verify SQL Syntax (Проверить синтаксис SQL) | Проверяет синтаксис запроса
Group By (Группировать) | Группирует данные в запросе
Change Type: Select (Модификация: Выбрать) | Создает запрос для выборки данных
Change Type: Insert (Модификация: Вставить) | Создает запрос, предназначенный для добавления данных в таблицу, используя значения других таблиц
Change Type: Insert Values (Модификация: Вставить значения) | Создает запрос, предназначенный для добавления данных в таблицу, используя заданные значения
Change Type: Update (Модификация: Изменить) | Создает запрос, предназначенный для изменения данных
Change Type: Delete (Модификация: Удалить) | Создает" запрос, предназначенный для удаления данных
Change Type: Make Table (Модификация: Создать таблицу) | Создает новую таблицу на основе результатов выборки
Add to Output (Добавить поля) | Добавляет поля в список полей формируемой выборки
Sort Ascending (Сортировка по возрастанию) | Назначает сортировку по возрастанию
Sort Descending (Сортировка по убыванию) | Назначает сортировку по убыванию
Remove Filter (Удалить фильтр) | Удаляет фильтр
Select All Rows From <Table A > (Выбрать все записи из первой таблицы) | Создает внешнее соединение, которое выбирает все записи из первой таблицы, даже если они отсутствуют во второй таблице
Select All Rows From <ТаЫе В > (Выбрать все записи из второй таблицы) | Создает внешнее соединение, которое выбирает все записи из второй таблицы, даже если они отсутствуют в первой таблице

В меню Diagram (Диаграмма) сгруппированы команды для построения диаграммы, отображающей структуру базы данных (табл. 1.9).

Таблица 1.9. Команды меню Diagram
Команда | Назначение
New Text Annotation (Новый текст пояснения) | Добавляет пояснительный текст
Set Text Font (Установить шрифт) | Устанавливает шрифт
Add Related Tables (Добавить связанную таблицу) | Добавляет связанную таблицу
Show Relationship Labels (Показать связи) | Показывает наименования связей
Modify Custom View (Изменить представление) | Изменяет вид отображения таблиц в диаграмме
View Page Break (Показывает постраничную разбивку) | Показывает разбивку на страницы
Recalculate Page Break (Пересчитать постраничную разбивку) | Пересчитывает разбивку на страницы
Arrange Selection (Выравнивать выбранные) | Выравнивает выбранные таблицы
Arrange Tables (Выравнивать все таблицы) | Выравнивает все таблицы
Autosize Selected Tables (Авторазмер выделенных таблиц) | Автоматически устанавливает размер выбранных таблиц

Команды меню Tools (Сервис) управляют настройками (табл. 1.10) инструментария среды Visual Basic 6. Они позволяют добавить процедуру и определять ее атрибуты, вызвать окно редактора меню, изменить настройки программы в диалоговом окне Options (Параметры), а также управлять хранилищем проектов SourseSafe.

Таблица 1.10. Команды меню Tools
Команда | Назначение
Add Procedure (Добавить процедуру) | Добавляет процедуру
Procedure Attributes (Атрибуты процедуры) | Устанавливает атрибуты процедуры
Menu Editors (Редактор меню) | Вызывает окно редактора меню
Options (Параметры) | Открывает диалоговое окно Options для настройки параметров программы Visual Basic
SourseSafe (Хранилище) | Управляет хранилищем проектов

В меню Add-Ins (Надстройки) содержатся команды (табл. 1.11) вызова дополнительных утилит, часто называемых надстройками (add-ins).

Таблица 1.11. Команды меню Add-Ins
Команда | Назначение
Visual Data Manager (Менеджер баз данных) | Запускает менеджера управления базой данных
Add-In Manager (Менеджер надстроек) | Открывает диалоговое окно Add-In Manager, позволяющее добавить надстройку в Visual Basic 6

Меню Window (Окно) содержит стандартные команды управления окнами (табл. 1.12).

Таблица 1.12. Команды меню Window
Команда | Назначение
Split (Разделить) | Разделяет окно
Tile Horizontally (Горизонтально) | Размещает окна горизонтально
Tile Vertically (Вертикально) | Размещает окна вертикально
Cascade (Каскадом) | Размещает окна каскадом
Arrange Icons (Упорядочение значков) | Изменяет размещение значков окон

При вызове окон приложения меню Window пополняется соответствующими командами активизации окон приложения. При этом команды активизации окон называются по именам открытых окон.

В меню Help (Справка) сгруппированы команды вызова справочной системы Visual Basic б (табл. 1.13). При помощи этого меню можно вызывать справочную систему с различными вариантами представления информации. Отличие между ними состоит в открывающейся по умолчанию вкладке.

Таблица 1.13. Команды меню Help
Команда | Назначение
Context (Содержание) | Вызывает справочную систему с активной вкладкой Содержание
Index (Указатель) | Вызывает справочную систему с активной вкладкой Индекс
Search (Поиск) | Вызывает справочную систему с активной вкладкой Поиск
Technical Support (Техническая поддержка) | Вызывает справочную систему с информацией о службе технической поддержки Microsoft
Microsoft on the Web (Microsoft в Web) | Вызывает страницу Microsoft в Internet
About Visual Basic (0 Visual Basic) | Вызывает справочную информацию о пакете Visual Basic 6

Замечание Команда Microsoft on the Web (Microsoft в Web) позволит вам получить нужную информацию только в том случае, если у вас есть подключение к Internet.

Команды, которые часто используются при работе, можно разместить в виде кнопок на панели инструментов. Можно также исключить из панели редко применяемые команды. Для добавления команды на панель инструментов выполните следующие действия:

1. Установите указатель на стандартной панели инструментов и щелкните правой кнопкой мыши, а затем выберите из появившегося контекстного меню команду Customize (Настройка). Откроется диалоговое окно Customize.

Совет Для открытия диалогового окна Customize можно также в меню View (Вид) выбрать команду Toolbars (Панели инструментов), а затем значение Customize.

2. Перейдите на вкладку Commands (Команды) (рис. 1.4).

Рис. 1.4. Диалоговое окно Customize

3. Из списка Categories (Категории) выберите наименование категории, из которой хотите выбрать команду.

4. В списке Commands установите курсор на команду, помещаемую на панель инструментов.

5. Нажмите и, удерживая в нажатом состоянии правую кнопку мыши, перетащите выбранную команду на панель инструментов.

6. Завершив перемещение, отпустите кнопку мыши.

7. Повторяя пункты с 3-го по 6-й, перенесите на панель инструментов требуемые вам команды.

8. Нажмите кнопку Close (Закрыть) для закрытия диалогового окна.

Используя диалоговое окно Customize, можно менять порядок расположения кнопок на панели инструментов. Для этого выполните следующие действия:

1. Откройте диалоговое окно Customize (Настройка) любым удобным для вас способом.

2. На вкладке Toolbars (Панели инструментов) установите флажок рядом с наименованием той панели инструментов, на которой хотите изменить порядок расположения кнопок. Если панель уже присутствует на экране, то флажок для нее установлен, и этот пункт не выполняется.

3. На выбранной панели инструментов нажмите кнопку, расположение которой хотите изменить, и, удерживая ее в нажатом состоянии, переместите в новое положение. При этом появляющийся маркер (указатель) позиции "¦" помогает точно перенести кнопку на требуемое место.

4. Аналогичным образом измените порядок требуемых кнопок.

5. Сформировав нужный порядок кнопок, нажмите Close (Закрыть) для закрытия диалогового окна Customize.

Стандартная панель инструментов

Стандартная панель инструментов расположена под главным меню. Если эта панель отсутствует в главном окне программы, для ее отображения в меню View (Вид) выберите команду Toolbars (Панели инструментов), а затем значение Standard (Стандартная).

На стандартной панели инструментов расположены кнопки для вызова наиболее часто употребляемых команд меню. Вы можете изменить расположение стандартной панели инструментов, разместив ее в нижней части главного окна, справа или слева. Для этого с помощью кнопки мыши захватите любую границу панели и переместите ее в любое удобное для вас место.

Рис. 1.5. Стандартная панель инструментов Visual Basic 6

На рис. 1.5 показана панель инструментов в том виде, в каком она настроена при установке Visual Basic 6. В составе панели целый набор кнопок, выполняющих наиболее часто используемые команды. Их назначение описано в табл. 1.14.

Таблица 1.14. Кнопки стандартной панели инструментов

Кнопка | Название | Назначение
 | Add Standard EXE Project (Добавить стандартный проект) | Добавляет стандартный ехе-проект
 | Add Form (Добавить форму) | Добавляет форму в проект
 | Menu Editor (Редактор меню) | Вызывает редактор меню
 | Open Project (Открыть проект) | Открывает проект
 | Save Project (Сохранить проект) | Сохраняет проект
 | Cut (Вырезать) | Вырезает информацию в буфер обмена
 | Copy (Копировать) | Копирует в буфер обмена
 | Paste (Вставить) | Вставляет информацию из буфера обмена
 | Find (Найти) | Осуществляет поиск информации по контексту
 | Can't Undo (Отмена предыдущего) | Отменяет предыдущее действие
 | Can't Redo (Отмена повторного) | Восстанавливает отмененное действие
 | Start (Запустить) | Запускает программу на выполнение
 | End (Закончить) | Прекращает выполнение программы
 | Break (Прервать) | Прерывает выполнение программы
 | Project Explorer (Проводник проекта) | Открывает окно проводника проектов
 | Properties Window (Окно свойств) | Открывает окно свойств
 | Form Layout Window (Окно макета форм) | Открывает окно макета формы
 | Object Browser (Браузер объектов) | Открывает окно браузера объектов
 | Toolbox (Панель элементов управления) | Открывает панель элементов управления
 | Data View Window (Окно просмотра данных) | Открывает окно просмотра данных
 | Visual Component Manager (Менеджер визуальных компонентов) | Открывает окно управления визуальными компонентами Visual Component Manager

Окно конструктора форм

Окно конструктора форм является основным рабочим окном, в котором выполняется визуальное проектирование приложения (рис. 1.6). Вызвать это окно можно из главного меню командой Object (Объект) меню View (Вид) или командой View Object контекстного меню объекта, находящегося в группе Forms в проводнике проекта.

В окне конструктора форм визуально конструируются все формы приложения с использованием инструментария среды разработки. Для точного позиционирования объектов в форме в окне имеется сетка. Размер ячеек сетки можно менять. При необходимости сетку можно отключать, воспользовавшись параметрами диалогового окна Options, открываемого командой Options (Параметры) из меню View (Вид).

Рис. 1.6. Окно конструктора форм Visual Basic 6

Размер формы в окне можно изменять, используя маркеры выделения формы и мышь. Для изменения размера формы необходимо установить указатель мыши на маркер и, когда он примет вид двунаправленной стрелки, перемещать до получения требуемого размера.

Панель элементов управления

Панель элементов управления — основной рабочий инструмент при визуальной разработке форм приложения (рис. 1.7). Панель элементов управления вызывается из меню View (Вид) командой Toolbox (Панель элементов управления). Для вызова этой панели можно воспользоваться также кнопкой Toolbox на стандартной панели инструментов.

В составе панели элементов управления содержатся основные элементы управления форм — метки, текстовые поля, кнопки, списки и другие элементы для быстрого визуального проектирования макета формы. На панели представлены кнопки, назначение которых описано в табл. 1.15.

Рис. 1.7. Панель элементов управления Visual Basic 6

Таблица 1.15. Кнопки панели элементов управления

Кнопка | Название | Назначение
 | Pointer (Указатель) | Используется для позиционирования маркера (указателя) мыши
 | PictureBox (Графическое окно) | Размещает в форме графическое окно, предназначенное для объединения элементов в группы, для вывода в него графических изображений, а также текста, графических элементов и анимации
 | Label (Метка) | Размещает в форме объекты, предназначенные для создания текстовой информации, надписей и примечаний
 | TextBox (Текстовое поле) | Размещает в форме текстовое поле, предназначенное для ввода текстовой информации, чисел и дат
 | Frame (Рамка) | Создает в форме рамку с заголовком для группировки объектов в логическую группу
 | CommandButton (Кнопка управления) | Размещает в форме кнопки управления для инициации действий, выполнения команд, запуска программ
 | CheckBox (Флажок) | Размещает в форме флажок, предназначенный для формирования условий выполнения программ или каких-либо настроек, работающий по принципу "да — нет"
 | OptionBufrton (Переключатель) | Создает в форме переключатели для выбора режима работы или настроек выполнения программы
 | ComboBox (Поле со списком) | Создает в форме объект, содержащий одновременно поле ввода и раскрывающийся список
 | ListBox (Список) | Создает в форме список для выбора одного или нескольких значений из предлагаемого списка значений
 | HScrollBar (Горизонтальная полоса прокрутки) | Размещает в форме горизонтальную полосу прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона
 | VScrollBar (Вертикальная полоса прокрутки) | Размещает в форме вертикальную полосу прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона
 | Timer (Таймер) | Размещает в форме таймер
 | DriveListBox (Список устройств) | Создает в форме список устройств
 | DirListBox (Список папок) | Создает в форме древовидный список папок
 | FileListBox (Список файлов) | Создает в форме список файлов
 | Shape (Очертание) | Создает в форме геометрические фигуры, такие как прямоугольник, квадрат, круг, эллипс, прямоугольник и квадрат со скругленными углами
 | Line (Линия) | Создает линии
 | Image (Изображение) | Создает в форме поля, предназначенные для отображения графических изображений
 | Data (Данные) | Создает элемент управления данными в базе данных для перемещения по записям и отображения результата навигации

Для размещения элементов управления в форме с помощью панели элементов выполните следующие действия:

1. Выделите требуемый элемент управления с помощью мыши.

2. Перейдите в окно конструктора форм. Указатель мыши при этом превратится в крестик, при помощи которого можно установить местоположение размещаемого объекта. Левой кнопкой мыши зафиксируйте позицию нового объекта и, удерживая кнопку, задайте размеры объекта.

Окно редактора меню

В окне редактора меню Menu Editor (рис. 1.8) можно создавать или редактировать строку меню для формы.

Более подробно о работе в редакторе меню описано в главе 7.

Рис. 1.8. Окно редактора меню Visual Basic 6

Окно свойств

Окно Properties (Свойства) предназначено для отображения и настройки свойств формы, а также размещенных в ней объектов. В нем, например, содержатся такие свойства выбранного объекта, как позиция в форме, высота, ширина, цвет (рис. 1.9).

Диалоговое окно Properties вызывается командой Properties Window (Окно свойств) из меню View (Вид), кнопкой Properties Window на стандартной панели инструментов или командой Properties контекстного меню выбранного объекта.

Поскольку форма и элементы управления каждый сами по себе являются объектами, набор свойств в этом окне меняется в зависимости от выбранного объекта. При помощи вкладок Alphabetic (По алфавиту) и Categorized (По категориям) свойства объекта можно просмотреть в алфавитном порядке или по группам (категориям) соответственно.

Рис. 1.9. Окно свойств объектов Properties

В нижней части окна вы всегда найдете подсказку, поясняющую назначение выбранного атрибута объекта. Более подробную информацию найдете в справочной системе Visual Basic 6, нажав клавишу <Fl>. При этом необходимо предварительно выделить интересующее вас свойство.

Используя диалоговое окно Properties, можно изменить установленные по умолчанию свойства объектов. Часть свойств объекта, например, размеры и расположение объектов, можно задать перемещением объекта и изменением его размеров с помощью мыши в конструкторе форм. Свойства, установленные в окне свойств, допускается изменять при выполнении приложения, написав соответствующие коды в процедурах, создаваемых с помощью редактора кода.

Как правило, форма содержит много объектов. Если выбрать сразу несколько объектов, то в окне свойств отобразятся общие для этих объектов свойства.

Совет В начале изучения Visual Basic 6 в окне свойств Properties предпочтительнее пользоваться вкладкой Categorized (По категориям), так как на ней все свойства сгруппированы по типам и поэтому более понятны. На рис. 1.9 показана именно эта вкладка. В дальнейшем лучше пользоваться вкладкой Alphabetic (По алфавиту), где требуемое свойство можно быстрее найти по алфавиту.

Рассмотрим основные группы свойств, представленные на вкладке Categorized окна Properties.

Свойства, определяющие внешний вид объекта

В группе Appearance (Оформление) окна Properties содержатся свойства объекта, которые задают атрибуты его внешнего вида. Основные свойства данной группы приведены в табл. 1.16.

Таблица 1.16. Свойства объектов группы Appearance

Свойство | Назначение
Caption | Задает текст в строке заголовка объекта
BorderStyle | Задает стиль рамки объекта
Palette | Устанавливает цветовую палитру
Picture | Назначает значок, картинку для объекта. Используя данное свойство формы, можно задать фоновое графическое изображение

Свойства, определяющие поведение объекта

Свойства объектов, отвечающие за их поведение, собраны в группе Behavior (Поведение). Основные свойства данной группы приведены в табл. 1.17.

Таблица 1.17. Свойства объектов группы Behavior

Свойство | Назначение
Causes Validation | Устанавливает признак проверки условия достоверности данных при выходе из объекта
Enabled | Разрешает или запрещает доступ к объекту
MaxLength | Устанавливает максимальную длину данных в объекте
Visible | Устанавливает видимость объекта

Свойства, определяющие шрифт

Группа Font (Шрифт) содержит всего одно свойство Font, позволяющее с помощью диалогового окна Выбор шрифта задать шрифт текста объекта, размер, начертание.

Общие свойства

Свойства группы Misc задают общие атрибуты объекта, в том числе для его идентификации. Основные свойства этой группы указаны в табл. 1.18.

Таблица 1.18. Свойства объектов группы Misc

Свойство | Назначение
Name | Задает имя объекта
Text | Устанавливает текст в поле по умолчанию
Index | Задает уникальный индекс объекта в коллекции

По имени, указанному в свойстве Name (Имя), объект идентифицируется в форме и в тексте программы. Поэтому необходимо иметь в виду, что в одной форме не может быть двух объектов с одинаковыми именами. По умолчанию это свойство устанавливается автоматически. Вместо имени, заданного по умолчанию, лучше использовать имя, отражающее его смысловое значение.

Свойства позиционирования

Группа Position (Расположение) окна Properties служит для позиционирования объектов в системе координат формы и установки размеров объектов. Основные свойства этой группы указаны в табл. 1.19.

Таблица 1.19. Свойства объектов группы Position

Свойство | Назначение
Left | Задает положение объекта по горизонтальной оси от левого края формы или, в общем случае, от объекта-контейнера
Top | Задает положение объекта по вертикальной оси от его верхнего края до верхней стороны формы
Width | Задает горизонтальный размер (ширину) объекта
Height | Задает вертикальный размер (высоту) объекта

Свойства шкалы размеров объекта

Свойства группы Scale (Масштаб) устанавливают шкалу максимальных размеров объектов в системе координат формы. Основные свойства этой группы указаны в табл. 1.20.

Таблица 1.20. Свойства объектов группы Scale

Свойство | Назначение
ScaleLeft | Задает максимальное положение объекта по горизонтальной оси
ScaleTop | Задает максимальное положение объекта по вертикальной оси
ScaleWidth | Задает максимальный горизонтальный размер (максимальная ширина)
ScaleHeight | Задает максимальный вертикальный размер (максимальная высота)

Окно просмотра объектов

Для просмотра всех элементов, входящих в состав проекта. Visual Basic 6 предоставляет очень удобную возможность — окно просмотра объектов Object Browser (рис. 1.10). В этом окне можно получить доступ не только ко всем элементам, которые входят в проект, но и их свойствам, методам, событиям. Окно просмотра объектов обычно не визуализировано и его можно вызвать командой Object Browser (Браузер объектов) из меню View (Вид).

Рис. 1.10. Окно просмотра объектов Object Browser Visual Basic 6

Окно макета формы

Окно макета формы Form Layout (Макет формы) (рис. 1.11) вызывается командой Form Layout Window из меню View. В этом окне показывается уменьшенное изображение проектируемой формы в том виде, как эта форма будет выглядеть на экране монитора при выполнении приложения. Размеры формы в окне макета Form Layout пропорциональны размерам изображения монитора в этом же окне, то есть все реальные пропорции в точности соблюдены.

Для проверки формы в работающем приложении откройте окно макета формы и запустите форму командой Start (Старт) из меню Run (Запуск). При этом форма запускается точно в том виде, как она будет выглядеть в работающем приложении.

Рис. 1.11. Окно макета формы Visual Basic 6

Окно редактора исходного кода

Редактор кода — это мощный встроенный редактор с удобными средствами ввода исходного кода программы. Из меню View (Вид) перейти в редактор кода можно с помощью команды Code (Код).

Для быстрого открытия окна редактора кода достаточно дважды щелкнуть левой кнопкой мыши, установив указатель на форме приложения. После начала редактирование кода программы имя открытого окна появляется и в списке команд перехода между окнами Window (Окно) главного меню.

Совет

Переход между макетом и окном редактора кода можно выполнять, используя список меню Window.

Окно проводника проекта

Окно проводника проекта Project (рис. 1.12) очень похоже на аналогичное окно проводника системы Windows и позволяет легко и быстро просматривать состав и свойства выбранного проекта, перемещаться между проектами, если их открыто сразу несколько, копировать необходимые объекты из окна одною проекта в другой, как это осуществляется в проводнике системы Windows.

Проводник проекта можно вызвать командой Project Explorer (Проводник проекта) меню View (Вид) или комбинацией клавиш <Ctrl>+<R>.

Рис. 1.12. Окно проводника проекта Visual Basic 6

Панель управления окна проводника проекта содержит три кнопки, которые имеют следующее назначение:

Кнопка | Назначение
 | Открывает окно редактора с кодом программы, выбранного в проводнике объекта
 | Открывает в конструкторе форм выбранный объект
 | Включает/выключает отображение папок

При нажатии правой кнопки мыши в окне проводника появляется контекстное меню, содержащее команды для добавления, сохранения, удаления форм, элементов управления и других объектов. В контекстном меню продублированы действия кнопок окна проводника.

Окно Locals

Окно Locals (Локальные) предназначено для просмотра списка локальных переменных приложения и контроля за их значениями (рис. 1.13). Вызывается это окно командой Locals Window (Окно локальных переменных) меню View (Вид).

В окне Locals можно просмотреть локальные переменные, объявленные в текущей процедуре, их тип и значения. Эта информация автоматически появляется в окне при его вызове. Данное окно используется для отладки и проверки работы приложений. С помощью него можно проконтролировать все локальные переменные в точках останова программы.

Рис. 1.13. Окно Locals среды проектирования Visual Basic

Замечание

При работе с окном Locals (Локальные) необходимо иметь в виду, что глобальные переменные в этом окне для просмотра недоступны.

Для выбора интересующей процедуры используется поле со списком. Нажав на кнопку с многоточием, можно выбрать интересующую процедуру из списка. Если значения переменных или их названия не помещаются в столбцах, то требуемые столбцы можно расширить, перемещая при помощи левой кнопки мыши границы столбцов в заголовке.

Если окно открыто постоянно, то данные между точками останова программы при работе приложения автоматически обновляются.

В окне Locals можно не только просматривать переменные и их значения в данный момент работы программы. Очень полезным свойством этого окна является возможность изменять значения переменных для проверки реакции программы на эти значения. Для этого в столбце Value (Значение) необходимо щелкнуть на изменяемом значении. При этом значение переведется в режим редактирования, и его можно будет изменить. Клавишей <Enter> или перемещением указателя мыши на другое поле устанавливается новое значение, если оно имеет допустимое значение.

Окно Watches

Для более полного контроля работы приложения (рис. 1.14) используется окно Watches (Наблюдение). Это окно вызывается командой Watch Window (Окно наблюдения) меню View (Вид) и предназначено для определения значений выражений. В окне Watches можно выполнять действия, аналогичные выполняемым в окне Locals (Локальные).

Так же, как и Locals, окно Watches используется при отладке приложения и проверке его работы.

Рис. 1.14. Окно Watches среды проектирования Visual Basic

Окно Immediate

Окно Immediate (Непосредственное выполнение) предназначено для ручного ввода и выполнения команд Visual Basic 6 (рис. 1.15). Это окно появляется автоматически при прерывании работы программы в точках останова программы. Для выполнения команды или оператора Visual Basic необходимо набрать строку команды и нажать клавишу <Enter>.

В сочетании с окнами Locals (Локальные) и Watches (Наблюдение), окно Immediate является удобным средством для отладки и проверки работы программы в пошаговом режиме. Проверяемые части или блоки программы можно копировать из программных модулей приложения в окно Immediate, и после проверки и внесения необходимых изменений по результатам контроля возвращать в модуль приложения.

Рис. 1.15. Окно Immediate среды проектирования Visual Basic

Настройка среды разработки

Для настройки среды разработки программы Visual Basic используется диалоговое окно Options (Параметры), вызываемое из меню Tools (Сервис) командой Options (Параметры). Окно содержит шесть вкладок:

  • Editor (Редактор)
  • Editor Format (Форматы редактирования)
  • General (Основные настройки)
  • Docking (Инструменты среды)
  • Environment (Среда проектирования)
  • Advanced (Расширенные настройки)

Ниже подробно описаны все параметры настройки среды разработки. Для настройки среды разработки (IDE) на вкладках используются группы флажков, переключателей, раскрывающиеся списки.

В начале изучения Visual Basic 6 некоторые параметры настройки могут показаться непонятными. Не стоит огорчаться по этому поводу. В процессе изучения среды и языка придет понимание всех режимов настройки. При изменении параметров для сохранения варианта настройки необходимо выйти из диалогового окна Options, нажав кнопку ОК. Для отказа от всех осуществленных на вкладках изменений нажмите кнопку Отмена.

Рис. 1.16. Вкладка Editor настройки среды проектирования

Рассмотрим более подробно все вкладки диалогового окна Options и настраиваемые с их помощью параметры.

Вкладка Editor

Самая первая вкладка диалогового окна Options — Editor (Редактор). Здесь можно установить параметры работы редактора исходного кода приложения (рис. 1.16). Используя флажки группы Code Settings (Установки редактора кода), устанавливаются следующие параметры:

  • Auto Syntax Check (Автоматический контроль синтаксиса) — автоматический контроль синтаксиса при вводе исходного кода приложения в редакторе;
  • Require Variable Declaration (Требование объявления переменных) — если этот флажок установлен, любые переменные можно использовать только после их объявления;
  • Auto List Members (Автоматический вывод списка возможных свойств и методов объекта) — автоматический вывод свойств и методов объекта при вводе текста программы. При этом методы и свойства отображаются в позиции курсора и их можно легко выбрать;
  • Auto Quick Info (Автоматический вывод синтаксиса функций) — разрешение или запрет вывода информации о функциях и их параметрах при вводе текста программы;
  • Auto Data Tips (Автоматическое отображение значений) — при отладке приложения отображает значение переменной, находящейся под указателем мыши;
  • Auto Indent (Автоматическая расстановка) — автоматическая расстановка отступа при вводе программы. Отступы делают программу структурированной и понятной при чтении. Для сложных программ отступы просто обязательны.

В поле Tab Width указывается количество пробелов отступа при нажатии клавиши <ТаЬ>. По умолчанию установлено значение 8, но его можно изменить.

В группе Window Settings (Настройки окна) устанавливаются параметры, связанные с фрагментами текста:

  • Drag-and-Drop Text Editing (Перетаскивание текста) — разрешает перетаскивание фрагментов текста программы;
  • Default to Full Module View (Отображение всех процедур) — позволяет отображать в редакторе сразу все процедуры текущего объекта. Если этот флажок не установлен, процедуры можно просматривать по очереди;
  • Procedure Separator (Разделитель текста процедур) — в режиме просмотра всех процедур проекта устанавливает между ними разделитель.

Вкладка Editor Format

Вкладка Editor Format (Форматы редактора) диалогового окна Options показана на рис. 1.17. На этой вкладке настраиваются стили текста исходного кода приложения — используемый шрифт, цвета, размер текста исходного кода в зависимости от назначения текста кода. Используя параметры данной вкладки, можно выделить цветом, шрифтом и размером шрифта основные элементы программы, например, основной текст, текст комментариев, точки остановки.

Для настройки форматов элементов кода необходимо выполнить следующее:

  1. Выбрать в области Code Colors из списка типов программного текста настраиваемый тип.
  2. Используя раскрывающиеся списки Foreground и Background, установить цвет текста и фона.
  3. С помощью списков Font и Size задать наименование шрифта и его размер.
  4. В области Sample просмотреть полученный результат осуществленных изменений.
  5. Повторяя пункты с 1-го по 4-й, изменить все необходимые стили текста окна редактора кода.
  6. Для сохранения установленных параметров, нажать кнопку ОК.

Рис. 1.17. Вкладка Editor Format настройки IDE

Вкладка General

На вкладке General диалогового окна Options размещены параметры, которые предназначены для управления общими свойствами среды проектирования (рис. 1.18). В области Form Grid Settings (Настройка сетки форм) находятся следующие параметры настройки:

  • Show Grid (Отображать сетку) — устанавливает режим отображения линий координатной сетки при разработке макетов форм. Используя расположенные под флажком поля Width (Ширина) и Height (Высота), можно установить ширину и высоту ячеек сетки.
  • Align Controls to Grid (Привязать элементы управления к сетке) — задает привязку элементов управления к шагу сетки при размещении их в макете формы.

В области Error Trapping (Реакция на ошибки) можно установить один из трех переключателей, которые задают вариант реакции приложения на возникающие при его работе ошибки:

  • Break on All Errors (Приостанавливаться по всем ошибкам) — приостанавливать выполнение приложения при возникновении любой ошибки;
  • Break in Class Module (Приостанавливаться по ошибкам в классах) — приостанавливать выполнение приложения при возникновении любой ошибки в модуле класса;
  • Break on Unhandled Errors (Приостанавливаться по неуправляемым ошибкам) — приостанавливать выполнение приложения при возникновении любой необработанной ошибки, то есть при такой ошибке, для которой нет функции перехвата.

В области Compile (Компиляция) можно установить флажки, управляющие процессом компиляции программы:

  • Compile on Demand (Компиляция по мере необходимости) — компиляция будет осуществляться только для тех разделов программы, которые необходимо выполнять. При этом при выполнении команды Start (Запустить) из меню Run (Запуск) приложение будет запускаться быстрее;
  • Background Compile (Фоновая компиляция) — этот флажок дает возможность использовать время ожидания программы для ее компиляции.

Кроме перечисленных параметров, на этой вкладке есть еще два флажка следующего назначения:

  • Show ToolTips (Отображать подсказки) — при установке этого флажка Visual Basic 6 отображает подсказку с описанием свойств объекта в макете формы, когда указатель мыши удерживается на объекте некоторое время;
  • Collapse Proj, Hides Windows (Сворачивать проект, скрыть окна) — этот флажок заставляет сворачиваться все связанные с проектом окна при свертывании окна проекта.

Рис. 1.18. Вкладка General настройки IDE

Вкладка Docking

На вкладке Docking диалогового окна Options все флажки объединены в одну группу Dockable (рис. 1.19). Эти флажки определяют, какие окна среды разработки могут закрепляться ("приклеиваться") к краям главного окна программы Visual Basic. Наименования окон среды разработки перечислены в виде флажков. Настройка заключается в установке флажков для соответствующих им окон.

  • Immediate Window — окно Immediate (Непосредственное выполнение)
  • Locals Window — окно Locals (Локальные)
  • Watch Window — окно Watches (Наблюдение)
  • Project Explorer — проводник проекта
  • Properties Window — окно свойств
  • Object Browser — браузер объектов
  • Form Layout — окно макета форм
  • Toolbox — панель элементов управления
  • Color Palette — цветовая палитра

Рис. 1.19. Вкладка Docking настройки IDE

Вкладка Environment

Вкладка Environment диалогового окна Options содержит три области (рис. 1.20). В области When Visual Basic starts (При запуске Visual Basic) можно установить переключатели:

  • Prompt for project (Приглашение для выбора образца проекта) — указывает на необходимость открытия диалогового окна New Project (Новый проект) при запуске Visual Basic 6;
  • Create default project (Создавать проект по умолчанию) — при запуске Visual Basic 6 создается установленный по умолчанию тип проекта.

Область When a program starts (При запуске программы) управляет возможностью сохранения проекта при запуске его на выполнение. Впоследствии при работе с большим проектом от сохранения можно отказаться для экономии времени. В данной группе переключателей устанавливается одна из следующих опций:

  • Save Changes (Сохранять изменения) — сохранять изменения всегда;
  • Prompt To Save Changes (Сохранять изменения по запросу) — сохранять проект с предварительным запросом на сохранение;
  • Don't Save Changes (He сохранять изменений) — не сохранять осуществленных изменений.

Рис. 1.20. Вкладка Environment настройки IDE

Область Show Templates For (Показывать шаблоны) содержит список шаблонов, появляющихся в соответствующих диалоговых окнах при создании объектов. Используя расположенные здесь флажки, можно отказаться от части шаблонов, которые в данный момент не интересны. Для этого необходимо снять соответствующий флажок. Например, если вы не хотите, чтобы при создании форм появлялось диалоговое окно со списком шаблонов форм, вам необходимо снять флажок Form.

Поле Template Directory (Каталог шаблонов) вкладки назначает папку поиска шаблонов по умолчанию.

Вкладка Advanced

На вкладке Advanced диалогового окна Options (рис. 1.21) расположены три флажка, имеющих следующее назначение:

  • Background Project Load (Фоновая загрузка проекта) — разрешает загрузку проекта в фоновом режиме, что дает возможность во время загрузки другого проекта продолжать работу над текущим;
  • Notify when changing shared project items (Сообщать об изменениях элементов проекта) — сообщает об изменении общего для нескольких проектов объекта при одновременной работе над этими проектами;
  • SDI Development Environment (Назначить однодокументныи интерфейс) — устанавливает однодокументныи интерфейс (SDI, Single-Document Interface) среды проектирования. По умолчанию используется многодокументный интерфейс (MDI, Multiple-Document Interface).

Используя поле External HTML Editor (Внешний редактор HTML) вкладки Advanced, можно установить редактор для работы с HTML-страницами.

Рис. 1.21. Вкладка Advanced настройки IDE

Справочная система

Справочная система Visual Basic 6 позволяет разработчику достаточно легко находить требуемую информацию. Для ее вызова используются следующие средства:

  • клавиша <F1>;
  • команды Contents (Содержание), Index (Указатель) или Search (Поиск) из меню Help (Справка).

Отличие между тремя этими командами состоит только в названии вкладки, открываемой при запуске справочной системы. Так, например, при выборе команды Contents будет активна вкладка Содержание. При выборе двух остальных команд в окне справки будут активны вкладки Указатель или Поиск, соответственно.

Справочная система является контекстно-зависимой. Иными словами, программа Visual Basic 6 содержит элементы, при выборе которых нажатие клавиши <F1> приводит не только к открытию окна справочной системы, но и к одновременному открытию раздела справочной системы, в котором можно найти информацию об этом элементе.

Окно справочной системы содержит меню, панель инструментов, поле выбора подмножества справки, вкладки для работы с содержанием справочной системы, окно для вывода текста выбранной темы.

Окно справочной системы имеет собственное меню и панель инструментов.

Левая область окна справочной системы содержит четыре вкладки, предназначенные для упрощения поиска необходимой информации:

Вкладка | Назначение
Содержание | Поиск информации по оглавлению справочной системы
Указатель | Поиск тем по начальным буквам названия темы
Поиск | Поиск ключевых слов и фраз в темах
Избранное | Содержит избранные темы справочной системы

Рассмотрим более подробно работу с вкладками справочной системы.

Первой вкладкой окна справочной системы является вкладка Содержание. Эта вкладка реализует наиболее традиционный подход к получению справочной информации.

Когда вы первый раз открываете вкладку Содержание, то видите перечень разделов, по которым может быть предоставлена справка. Перед наименованием каждого раздела отображается значок. В начальный момент все разделы закрыты, чему соответствует значок закрытой книги.

Для открытия какого-либо из разделов установите курсор на открываемый раздел и нажмите кнопку мыши. В результате значок примет вид открытой книги. При повторном нажатии кнопки мыши на значке открытой книги раздел закрывается.

Открытый раздел может содержать подразделы и темы (см. рис. 2.11). Теме соответствует значок, имеющий вид открытой страницы. Для вывода содержимого определенной темы в правой области окна справки установите курсор на ее название или соответствующий ей значок и нажмите кнопку мыши.

Для более быстрого поиска информации в справочной системе можно использовать вкладку Указатель. В верхней части вкладки расположено поле, предназначенное для ввода ключевого слова, по которому будет осуществляться поиск. Ниже него находится список ключевых слов, упорядоченный по алфавиту.

По мере ввода букв в поле ввода, в списке ключевых слов появляются разделы, первые буквы названий которых совпадают с уже введенными буквами. Кнопкой Показать можно вывести информацию об указанной теме в правую область окна справочной системы.

Вкладка Поиск позволяет организовать произвольный поиск информации в материалах справочной системы. Для поиска требуемого слова нужно ввести его в поле Искать следующие слова и нажать кнопку Разделы. После завершения поиска в списке появятся разделы, в которых упоминается искомое слово. Поиск можно ограничить или расширить при помощи флажков:

Флажок | Назначение
Предыдущий поиск | Поиск среди тем справочной системы, которые были отобраны в предыдущем поиске
Похожие слова | Поиск не только слов, заданных в выражении поиска, но и слов, похожих на них
Только в заголовках | Поиск только в заголовках тем справок

Вкладка Избранное позволяет создать список тем, которые наиболее часто используются в данный период времени. По умолчанию данная вкладка пуста. Для добавления темы справки на вкладку Избранное вам необходимо выполнить следующие действия:

1. Используя другие вкладки окна справочной системы, найдите тему, название которой хотите расположить на данной вкладке.

2. Отобразите найденную информацию в правой области окна справки.

3. Перейдите на вкладку Избранное. Название просматриваемой темы отображается в поле Текущий раздел данной вкладки.

4. Нажмите кнопку Добавить. Наименование текущей темы справочной системы будет добавлено в список избранных тем.

Аналогичным образом добавьте в данную область все необходимые разделы справочной системы. Для удаления разделов с этой вкладки используйте кнопку Удалить.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Интегрированная среда разработки

Интегрированная среда разработки (IDE) представляет собой знакомый нам по другим приложениям Microsoft графический интерфейс. Ее внешний вид показан на рис. 1.2.

Рис. 1.2. Интегрированная среда проектирования (разработки) Visual Basic 6

В состав среды проектирования включен набор следующих основных элементов:

  • главное меню;
  • стандартная панель инструментов (Standard);
  • панель элементов управления;
  • окно проводника проекта (Project);
  • конструктор форм;
  • редактор меню (Menu Editor);
  • окно свойств (Properties);
  • окно макета формы (Form Layout);
  • окно просмотра объектов (Object Browser);
  • редактор исходного кода.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Главное меню

Главное меню, как и во всех приложениях Microsoft, представляет собой линейку раскрывающихся меню. Оно содержит следующие основные команды: File (Файл), Edit (Правка), View (Вид), Project (Проект), Format (Формат), Debug (Отладка), Run (Запуск), Query (Запрос), Diagram (Диаграмма), Tools (Сервис), Add-Ins (Надстройки), Window (Окно), Help (Справка). Вид главного меню показан на рис. 1.3. Наиболее часто используемые команды меню отображены в виде кнопок со значками на стандартной панели инструментов, размещенной ниже меню.

Многие команды окажутся знакомыми, поскольку главное меню Visual Basic 6 организовано и работает так же, как и в других приложениях Microsoft, — например, в текстовом редакторе Microsoft Word или в электронной таблице Microsoft Excel.

Рис. 1.3. Главное меню Visual Basic 6

Рассмотрим основные команды главного меню. В меню File (Файл) сгруппированы команды для работы с файлами проекта. Используя эти команды, можно выполнять такие действия, как создание нового проекта, открытие проекта для внесения изменений, добавление проекта для параллельной работы над несколькими проектами или копирование форм из проекта в проект и т. п. Все команды этого меню перечислены в табл. 1.1.

Таблица 1.1. Команды меню File
Команда | Назначение
New Project (Новый проект) | Создает новый проект
Open Project (Открыть проект) | Открывает существующий проект
Add Project (Добавить проект) | Добавляет проект в группу для параллельной работы над несколькими проектами, копирования форм из проекта в проект или для его отладки
Remove Project (Исключить проект) | Удаляет проект из группы проектов
Save Project Group (Сохранить группу проектов) | Сохраняет группу проектов
Save Project Group As (Сохранить группу проектов как) | Сохраняет группу проектов под другим именем
Save <имя формы> (Сохранить форму) | Сохраняет форму с прежним именем
Save <имя формы> As (Сохранить форму как) | Сохраняет форму под другим именем
Print (Печать) | Открывает диалоговое окно Print
Print Setup (Настройка печати) | Открывает диалоговое окно настройки печати
Make <имя проекта>.ехе (Создать ехе-файл проекта) | Создает выполняемый файл текущего проекта
Make Project Group (Создать группу проектов) | Создает группу проектов
Exit (Выход) | Осуществляет выход из Visual Basic 6. В том случае, если в окне программы находятся не сохраненные результаты работы, появятся запросы о необходимости сохранения проектов, форм и других файлов

Меню Edit (Правка) содержит команды, предназначенные для редактирования (табл. 1.2). Часть из них соответствует подобным командам редактирования других приложений Microsoft, например, отменить предыдущую команду, повторить предыдущую команду, вырезать фрагмент текста, скопировать фрагмент в буфер обмена. В составе этого меню целый набор команд для работы с таблицами базы данных: добавлять и удалять поля, назначать первичный ключ в таблице базы данных.

Таблица 1.2. Команды меню Edit
Команда | Назначение
Undo (Отменить) | Отменяет предыдущую команду
Redo (Повторить) | Восстанавливает предыдущую команду
Cut (Вырезать) | Вырезает фрагмент текста
Сору (Копировать) | Копирует фрагмент в буфер обмена
Paste (Вставить) | Копирует содержимое из буфера обмена
Remove (Переместить) | Перемещает выделенное
Delete (Удалить) | Удаляет выделенное
Delete Table from Database (Удалить таблицу из базы данных) | Удаляет таблицу из базы данных
Select All (Выделить все) | Выделяет все
Select All Columns (Выделить все колонки) | Выделяет все колонки
Table: Set Primary Key (Таблица: Установить первичный ключ) | Определяет первичный ключ таблицы
Table: Insert Column (Таблица: Вставить поле) | Вставляет поле в таблицу
Table: Delete Column (Таблица: Удалить поле) | Удаляет поле из таблицы
Find (Найти) | Вызывает диалоговое окно поиска
Find Next (Найти следующее) | Ищет следующее значение, заданное для поиска
Replace (Заменить) | Ищет значение, заданное для поиска, и заменяет его новым значением
Go To Row: First (Перейти на запись: Первая) | Устанавливает указатель на первую запись
Go To Row: Last (Перейти на запись: Последняя) | Устанавливает указатель на последнюю запись
Go To Row: Next (Перейти на запись: Следующая) | Устанавливает указатель на следующую запись
Go To Row: Previous (Перейти на запись: Предыдущая) | Устанавливает указатель на предыдущую запись
Go To Row: Row (Перейти на запись: Запись) | Устанавливает указатель на запись с заданным номером
Go To Row: New (Перейти на запись: Новая) | Вставляет новую запись

В составе меню View (Вид) содержатся команды вызова окон и панелей инструментальной среды Visual Basic 6 (табл. 1.3).

Таблица 1.3. Команды меню View
Команда | Назначение
Code (Код) | Открывает окно редактора программного кода
Object (Объект) | Открывает окно конструктора форм
Object Browser (Браузер объектов) | Открывает окно браузера объектов
Immediate Window (Окно непосредственного выполнения) | Открывает окно, предназначенное для ввода и непосредственного выполнения команд
Locals Window (Окно Локальные) | Открывает окно, предназначенное для просмотра значений переменных
Watch Window (Окно Наблюдение) | Открывает окно просмотра значений выражений
Project Explorer (Проводник проекта) | Открывает окно проводника проектов
Properties Window (Окно свойств) | Открывает окно свойств объектов Properties
Form Layout Window (Окно макета формы) | Открывает окно макета формы
Toolbox (Панель инструментов) | Отображает панель элементов управления
Data View Window (Окно просмотра данных) | Открывает окно просмотра данных
Color Palette (Цветовая палитра) | Отображает цветовую палитру
Toolbars (Панели инструментов) | Открывает меню, предназначенное для отображения в окне программы Visual Basic следующих панелей: Debug (Отладка), Editor (Редактор), Form Edit (Редактор форм), Standard (Стандартная панель инструментов)

В меню Project (Проект) сгруппированы команды управления проектом и его элементами (табл. 1.4). Они позволяют добавить в проект и удалить из него элементы проекта, такие как форма, программный модуль, класс и другие. С помощью команд данного меню вы также можете открыть окно свойств приложения, добавить ссылки на подключаемые библиотеки, добавить дополнительные компоненты на панель элементов.

Таблица 1.4. Команды меню Project
Команда | Назначение
Add Form (Добавить форму) | Добавляет в окно проекта форму
Add MDI Form (Добавить форму окна MDI) | Добавляет MDI-форму
Add Module (Добавить модуль) | Добавляет программный модуль
Add Class Module (Добавить класс) | Добавляет пользовательский класс
Add User Control (Добавить элемент управления) | Добавляет пользовательский элемент управления
Add Property Page (Добавить страницу свойств) | Добавляет стандартную форму настройки свойств
Add WebClass (Добавить Web-класс) | Добавляет Web-класс
Add Data Report (Добавить отчет) | Добавляет в проект отчет
Add DHTML Page (Добавить страницу DHTML) | Добавляет страницу DHTML
Add Data Environment (Добавить среду данных) | Добавляет среду базы данных
Add File (Добавить файл) | Добавляет файл
Remove (Исключить) | Исключает файл из проекта
References (Ссылки) | Вызывает окно включения ссылок проекта на библиотеки
Components (Компоненты) | Открывает диалоговое окно Components, позволяющее добавить на панель элементов управления компоненты для их дальнейшего включения в проект приложения
Project Properties (Свойства проекта) | Открывает окно свойств проекта Project Properties

Меню Format (Формат) содержит большое количество команд форматирования объектов в форме (табл. 1.5).

Таблица 1.5. Команды меню Format
Команда | Назначение
Align (Выровнять) | Открывает меню, содержащее команды выравнивания объектов
Make Same Size (Установить подобный размер) | Открывает меню, содержащее команды, управляющие размерами объектов в форме
Horizontal Spacing (Горизонтальный интервал) | Устанавливает интервал между объектами в горизонтальном направлении
Vertical Spacing (Вертикальный интервал) | Устанавливает интервал между объектами в вертикальном направлении
Center in Form (Центрирование в форме) | Центрирует объекты в форме
Order (Порядок) | Направляет выбранный объект в нижний или верхний слой формы

В меню Debug (Отладка) сгруппированы команды (табл. 1.6), предназначенные для отладки приложения. Используя команды этого меню, можно установить точки останова программы и проверить значения выражении и переменных, выполняя программу по шагам.

Таблица 1.6. Команды меню Debug
Команда | Назначение
Step Into (Шаг с заходом в процедуры) | Осуществляет пошаговое выполнение процедуры, включая также вызываемые ею процедуры
Step Over (Шаг без захода в процедуры) | Осуществляет пошаговое выполнение процедуры без трассировки вызываемых ею процедур
Step Out (Шаг с выходом из процедуры) | Выполнение программы осуществляется до выхода из текущей процедуры
Add Watch (Добавить окно Watch) | Открывает окно Add Watch (Добавить наблюдение) для ввода выражений, за значениями которых будет вестись наблюдение
Edit Watch (Открыть окно Edit Watch) | Открывает диалоговое окно Edit Watch для редактирования или удаления выражений, за значениями которых ведется наблюдение
Quick Watch (Открыть окно Quick Watch) | Открывает окно Quick Watch для просмотра значения выбранного выражения
Toggle Breakpoint (Установить точку останова) | Устанавливает точку останова
Clear All Breakpoints (Отменить все точки останова) | Удаляет все точки останова
Set Next Statement (Определить следующий оператор) | Устанавливает следующий оператор
Show Next Statement (Показать следующий оператор) | Показывает следующий оператор

Команды меню Run (Запуск) используются для управления запуском приложения (табл. 1.7). Используя команды данного меню, можно запустить приложение на выполнение с компиляцией или без компиляции, приостановить или прервать выполнение приложения.

Таблица 1.7. Команды меню Run
Команда | Назначение
Start (Запустить) | Запускает приложение на выполнение
Start with Full Compile (Запустить с полной компиляцией) | Запускает приложение на выполнение с полной компиляцией
Break (Приостановить) | Останавливает выполнение приложения
End (Конец) | Прекращает выполнение приложения
Restart (Перезапустить) | Перезапускает приложение

Меню Query (Запрос) содержит команды для создания и выполнения запросов к базе данных (табл. 1.8). При помощи этого меню, например, можно выполнить запрос, преобразовать результаты запроса в табличный вид.

Таблица 1.8. Команды меню Query
Команда | Назначение
Run (Запустить) | Выполняет запрос
Clear Results (Очистить результаты) | Очищает результаты запроса
Verify SQL Syntax (Проверить синтаксис SQL) | Проверяет синтаксис запроса
Group By (Группировать) | Группирует данные в запросе
Change Type: Select (Модификация: Выбрать) | Создает запрос для выборки данных
Change Type: Insert (Модификация: Вставить) | Создает запрос, предназначенный для добавления данных в таблицу, используя значения других таблиц
Change Type: Insert Values (Модификация: Вставить значения) | Создает запрос, предназначенный для добавления данных в таблицу, используя заданные значения
Change Type: Update (Модификация: Изменить) | Создает запрос, предназначенный для изменения данных
Change Type: Delete (Модификация: Удалить) | Создает" запрос, предназначенный для удаления данных
Change Type: Make Table (Модификация: Создать таблицу) | Создает новую таблицу на основе результатов выборки
Add to Output (Добавить поля) | Добавляет поля в список полей формируемой выборки
Sort Ascending (Сортировка по возрастанию) | Назначает сортировку по возрастанию
Sort Descending (Сортировка по убыванию) | Назначает сортировку по убыванию
Remove Filter (Удалить фильтр) | Удаляет фильтр
Select All Rows From <Table A > (Выбрать все записи из первой таблицы) | Создает внешнее соединение, которое выбирает все записи из первой таблицы, даже если они отсутствуют во второй таблице
Select All Rows From <ТаЫе В > (Выбрать все записи из второй таблицы) | Создает внешнее соединение, которое выбирает все записи из второй таблицы, даже если они отсутствуют в первой таблице

В меню Diagram (Диаграмма) сгруппированы команды для построения диаграммы, отображающей структуру базы данных (табл. 1.9).

Таблица 1.9. Команды меню Diagram
Команда | Назначение
New Text Annotation (Новый текст пояснения) | Добавляет пояснительный текст
Set Text Font (Установить шрифт) | Устанавливает шрифт
Add Related Tables (Добавить связанную таблицу) | Добавляет связанную таблицу
Show Relationship Labels (Показать связи) | Показывает наименования связей
Modify Custom View (Изменить представление) | Изменяет вид отображения таблиц в диаграмме
View Page Break (Показывает постраничную разбивку) | Показывает разбивку на страницы
Recalculate Page Break (Пересчитать постраничную разбивку) | Пересчитывает разбивку на страницы
Arrange Selection (Выравнивать выбранные) | Выравнивает выбранные таблицы
Arrange Tables (Выравнивать все таблицы) | Выравнивает все таблицы
Autosize Selected Tables (Авторазмер выделенных таблиц) | Автоматически устанавливает размер выбранных таблиц

Команды меню Tools (Сервис) управляют настройками (табл. 1.10) инструментария среды Visual Basic 6. Они позволяют добавить процедуру и определять ее атрибуты, вызвать окно редактора меню, изменить настройки программы в диалоговом окне Options (Параметры), а также управлять хранилищем проектов SourseSafe.

Таблица 1.10. Команды меню Tools
Команда | Назначение
Add Procedure (Добавить процедуру) | Добавляет процедуру
Procedure Attributes (Атрибуты процедуры) | Устанавливает атрибуты процедуры
Menu Editors (Редактор меню) | Вызывает окно редактора меню
Options (Параметры) | Открывает диалоговое окно Options для настройки параметров программы Visual Basic
SourseSafe (Хранилище) | Управляет хранилищем проектов

В меню Add-Ins (Надстройки) содержатся команды (табл. 1.11) вызова дополнительных утилит, часто называемых надстройками (add-ins).

Таблица 1.11. Команды меню Add-Ins
Команда | Назначение
Visual Data Manager (Менеджер баз данных) | Запускает менеджера управления базой данных
Add-In Manager (Менеджер надстроек) | Открывает диалоговое окно Add-In Manager, позволяющее добавить надстройку в Visual Basic 6

Меню Window (Окно) содержит стандартные команды управления окнами (табл. 1.12).

Таблица 1.12. Команды меню Window
Команда | Назначение
Split (Разделить) | Разделяет окно
Tile Horizontally (Горизонтально) | Размещает окна горизонтально
Tile Vertically (Вертикально) | Размещает окна вертикально
Cascade (Каскадом) | Размещает окна каскадом
Arrange Icons (Упорядочение значков) | Изменяет размещение значков окон

При вызове окон приложения меню Window пополняется соответствующими командами активизации окон приложения. При этом команды активизации окон называются по именам открытых окон.

В меню Help (Справка) сгруппированы команды вызова справочной системы Visual Basic б (табл. 1.13). При помощи этого меню можно вызывать справочную систему с различными вариантами представления информации. Отличие между ними состоит в открывающейся по умолчанию вкладке.

Таблица 1.13. Команды меню Help
Команда | Назначение
Context (Содержание) | Вызывает справочную систему с активной вкладкой Содержание
Index (Указатель) | Вызывает справочную систему с активной вкладкой Индекс
Search (Поиск) | Вызывает справочную систему с активной вкладкой Поиск
Technical Support (Техническая поддержка) | Вызывает справочную систему с информацией о службе технической поддержки Microsoft
Microsoft on the Web (Microsoft в Web) | Вызывает страницу Microsoft в Internet
About Visual Basic (0 Visual Basic) | Вызывает справочную информацию о пакете Visual Basic 6

Замечание Команда Microsoft on the Web (Microsoft в Web) позволит вам получить нужную информацию только в том случае, если у вас есть подключение к Internet.

Команды, которые часто используются при работе, можно разместить в виде кнопок на панели инструментов. Можно также исключить из панели редко применяемые команды. Для добавления команды на панель инструментов выполните следующие действия:

1. Установите указатель на стандартной панели инструментов и щелкните правой кнопкой мыши, а затем выберите из появившегося контекстного меню команду Customize (Настройка). Откроется диалоговое окно Customize.

Совет Для открытия диалогового окна Customize можно также в меню View (Вид) выбрать команду Toolbars (Панели инструментов), а затем значение Customize.

2. Перейдите на вкладку Commands (Команды) (рис. 1.4).

Рис. 1.4. Диалоговое окно Customize

3. Из списка Categories (Категории) выберите наименование категории, из которой хотите выбрать команду.

4. В списке Commands установите курсор на команду, помещаемую на панель инструментов.

5. Нажмите и, удерживая в нажатом состоянии правую кнопку мыши, перетащите выбранную команду на панель инструментов.

6. Завершив перемещение, отпустите кнопку мыши.

7. Повторяя пункты с 3-го по 6-й, перенесите на панель инструментов требуемые вам команды.

8. Нажмите кнопку Close (Закрыть) для закрытия диалогового окна.

Используя диалоговое окно Customize, можно менять порядок расположения кнопок на панели инструментов. Для этого выполните следующие действия:

1. Откройте диалоговое окно Customize (Настройка) любым удобным для вас способом.

2. На вкладке Toolbars (Панели инструментов) установите флажок рядом с наименованием той панели инструментов, на которой хотите изменить порядок расположения кнопок. Если панель уже присутствует на экране, то флажок для нее установлен, и этот пункт не выполняется.

3. На выбранной панели инструментов нажмите кнопку, расположение которой хотите изменить, и, удерживая ее в нажатом состоянии, переместите в новое положение. При этом появляющийся маркер (указатель) позиции "¦" помогает точно перенести кнопку на требуемое место.

4. Аналогичным образом измените порядок требуемых кнопок.

5. Сформировав нужный порядок кнопок, нажмите Close (Закрыть) для закрытия диалогового окна Customize.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стандартная панель инструментов

Стандартная панель инструментов расположена под главным меню. Если эта панель отсутствует в главном окне программы, для ее отображения в меню View (Вид) выберите команду Toolbars (Панели инструментов), а затем значение Standard (Стандартная).

На стандартной панели инструментов расположены кнопки для вызова наиболее часто употребляемых команд меню. Вы можете изменить расположение стандартной панели инструментов, разместив ее в нижней части главного окна, справа или слева. Для этого с помощью кнопки мыши захватите любую границу панели и переместите ее в любое удобное для вас место.

Рис. 1.5. Стандартная панель инструментов Visual Basic 6

На рис. 1.5 показана панель инструментов в том виде, в каком она настроена при установке Visual Basic 6. В составе панели целый набор кнопок, выполняющих наиболее часто используемые команды. Их назначение описано в табл. 1.14.

Таблица 1.14. Кнопки стандартной панели инструментов

Кнопка | Название | Назначение
 | Add Standard EXE Project (Добавить стандартный проект) | Добавляет стандартный ехе-проект
 | Add Form (Добавить форму) | Добавляет форму в проект
 | Menu Editor (Редактор меню) | Вызывает редактор меню
 | Open Project (Открыть проект) | Открывает проект
 | Save Project (Сохранить проект) | Сохраняет проект
 | Cut (Вырезать) | Вырезает информацию в буфер обмена
 | Copy (Копировать) | Копирует в буфер обмена
 | Paste (Вставить) | Вставляет информацию из буфера обмена
 | Find (Найти) | Осуществляет поиск информации по контексту
 | Can't Undo (Отмена предыдущего) | Отменяет предыдущее действие
 | Can't Redo (Отмена повторного) | Восстанавливает отмененное действие
 | Start (Запустить) | Запускает программу на выполнение
 | End (Закончить) | Прекращает выполнение программы
 | Break (Прервать) | Прерывает выполнение программы
 | Project Explorer (Проводник проекта) | Открывает окно проводника проектов
 | Properties Window (Окно свойств) | Открывает окно свойств
 | Form Layout Window (Окно макета форм) | Открывает окно макета формы
 | Object Browser (Браузер объектов) | Открывает окно браузера объектов
 | Toolbox (Панель элементов управления) | Открывает панель элементов управления
 | Data View Window (Окно просмотра данных) | Открывает окно просмотра данных
 | Visual Component Manager (Менеджер визуальных компонентов) | Открывает окно управления визуальными компонентами Visual Component Manager


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно конструктора форм

Окно конструктора форм является основным рабочим окном, в котором выполняется визуальное проектирование приложения (рис. 1.6). Вызвать это окно можно из главного меню командой Object (Объект) меню View (Вид) или командой View Object контекстного меню объекта, находящегося в группе Forms в проводнике проекта.

В окне конструктора форм визуально конструируются все формы приложения с использованием инструментария среды разработки. Для точного позиционирования объектов в форме в окне имеется сетка. Размер ячеек сетки можно менять. При необходимости сетку можно отключать, воспользовавшись параметрами диалогового окна Options, открываемого командой Options (Параметры) из меню View (Вид).

Рис. 1.6. Окно конструктора форм Visual Basic 6

Размер формы в окне можно изменять, используя маркеры выделения формы и мышь. Для изменения размера формы необходимо установить указатель мыши на маркер и, когда он примет вид двунаправленной стрелки, перемещать до получения требуемого размера.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Панель элементов управления

Панель элементов управления — основной рабочий инструмент при визуальной разработке форм приложения (рис. 1.7). Панель элементов управления вызывается из меню View (Вид) командой Toolbox (Панель элементов управления). Для вызова этой панели можно воспользоваться также кнопкой Toolbox на стандартной панели инструментов.

В составе панели элементов управления содержатся основные элементы управления форм — метки, текстовые поля, кнопки, списки и другие элементы для быстрого визуального проектирования макета формы. На панели представлены кнопки, назначение которых описано в табл. 1.15.

Рис. 1.7. Панель элементов управления Visual Basic 6

Таблица 1.15. Кнопки панели элементов управления

Кнопка | Название | Назначение
 | Pointer (Указатель) | Используется для позиционирования маркера (указателя) мыши
 | PictureBox (Графическое окно) | Размещает в форме графическое окно, предназначенное для объединения элементов в группы, для вывода в него графических изображений, а также текста, графических элементов и анимации
 | Label (Метка) | Размещает в форме объекты, предназначенные для создания текстовой информации, надписей и примечаний
 | TextBox (Текстовое поле) | Размещает в форме текстовое поле, предназначенное для ввода текстовой информации, чисел и дат
 | Frame (Рамка) | Создает в форме рамку с заголовком для группировки объектов в логическую группу
 | CommandButton (Кнопка управления) | Размещает в форме кнопки управления для инициации действий, выполнения команд, запуска программ
 | CheckBox (Флажок) | Размещает в форме флажок, предназначенный для формирования условий выполнения программ или каких-либо настроек, работающий по принципу "да — нет"
 | OptionBufrton (Переключатель) | Создает в форме переключатели для выбора режима работы или настроек выполнения программы
 | ComboBox (Поле со списком) | Создает в форме объект, содержащий одновременно поле ввода и раскрывающийся список
 | ListBox (Список) | Создает в форме список для выбора одного или нескольких значений из предлагаемого списка значений
 | HScrollBar (Горизонтальная полоса прокрутки) | Размещает в форме горизонтальную полосу прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона
 | VScrollBar (Вертикальная полоса прокрутки) | Размещает в форме вертикальную полосу прокрутки, используемую в качестве ползунка для выбора значения из заданного диапазона
 | Timer (Таймер) | Размещает в форме таймер
 | DriveListBox (Список устройств) | Создает в форме список устройств
 | DirListBox (Список папок) | Создает в форме древовидный список папок
 | FileListBox (Список файлов) | Создает в форме список файлов
 | Shape (Очертание) | Создает в форме геометрические фигуры, такие как прямоугольник, квадрат, круг, эллипс, прямоугольник и квадрат со скругленными углами
 | Line (Линия) | Создает линии
 | Image (Изображение) | Создает в форме поля, предназначенные для отображения графических изображений
 | Data (Данные) | Создает элемент управления данными в базе данных для перемещения по записям и отображения результата навигации

Для размещения элементов управления в форме с помощью панели элементов выполните следующие действия:

1. Выделите требуемый элемент управления с помощью мыши.

2. Перейдите в окно конструктора форм. Указатель мыши при этом превратится в крестик, при помощи которого можно установить местоположение размещаемого объекта. Левой кнопкой мыши зафиксируйте позицию нового объекта и, удерживая кнопку, задайте размеры объекта.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно редактора меню

В окне редактора меню Menu Editor (рис. 1.8) можно создавать или редактировать строку меню для формы.

Более подробно о работе в редакторе меню описано в главе 7.

Рис. 1.8. Окно редактора меню Visual Basic 6


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно свойств

Окно Properties (Свойства) предназначено для отображения и настройки свойств формы, а также размещенных в ней объектов. В нем, например, содержатся такие свойства выбранного объекта, как позиция в форме, высота, ширина, цвет (рис. 1.9).

Диалоговое окно Properties вызывается командой Properties Window (Окно свойств) из меню View (Вид), кнопкой Properties Window на стандартной панели инструментов или командой Properties контекстного меню выбранного объекта.

Поскольку форма и элементы управления каждый сами по себе являются объектами, набор свойств в этом окне меняется в зависимости от выбранного объекта. При помощи вкладок Alphabetic (По алфавиту) и Categorized (По категориям) свойства объекта можно просмотреть в алфавитном порядке или по группам (категориям) соответственно.

Рис. 1.9. Окно свойств объектов Properties

В нижней части окна вы всегда найдете подсказку, поясняющую назначение выбранного атрибута объекта. Более подробную информацию найдете в справочной системе Visual Basic 6, нажав клавишу <Fl>. При этом необходимо предварительно выделить интересующее вас свойство.

Используя диалоговое окно Properties, можно изменить установленные по умолчанию свойства объектов. Часть свойств объекта, например, размеры и расположение объектов, можно задать перемещением объекта и изменением его размеров с помощью мыши в конструкторе форм. Свойства, установленные в окне свойств, допускается изменять при выполнении приложения, написав соответствующие коды в процедурах, создаваемых с помощью редактора кода.

Как правило, форма содержит много объектов. Если выбрать сразу несколько объектов, то в окне свойств отобразятся общие для этих объектов свойства.

Совет В начале изучения Visual Basic 6 в окне свойств Properties предпочтительнее пользоваться вкладкой Categorized (По категориям), так как на ней все свойства сгруппированы по типам и поэтому более понятны. На рис. 1.9 показана именно эта вкладка. В дальнейшем лучше пользоваться вкладкой Alphabetic (По алфавиту), где требуемое свойство можно быстрее найти по алфавиту.

Рассмотрим основные группы свойств, представленные на вкладке Categorized окна Properties.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства, определяющие внешний вид объекта

В группе Appearance (Оформление) окна Properties содержатся свойства объекта, которые задают атрибуты его внешнего вида. Основные свойства данной группы приведены в табл. 1.16.

Таблица 1.16. Свойства объектов группы Appearance

Свойство | Назначение
Caption | Задает текст в строке заголовка объекта
BorderStyle | Задает стиль рамки объекта
Palette | Устанавливает цветовую палитру
Picture | Назначает значок, картинку для объекта. Используя данное свойство формы, можно задать фоновое графическое изображение


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства, определяющие поведение объекта

Свойства объектов, отвечающие за их поведение, собраны в группе Behavior (Поведение). Основные свойства данной группы приведены в табл. 1.17.

Таблица 1.17. Свойства объектов группы Behavior

Свойство | Назначение
Causes Validation | Устанавливает признак проверки условия достоверности данных при выходе из объекта
Enabled | Разрешает или запрещает доступ к объекту
MaxLength | Устанавливает максимальную длину данных в объекте
Visible | Устанавливает видимость объекта


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства, определяющие шрифт

Группа Font (Шрифт) содержит всего одно свойство Font, позволяющее с помощью диалогового окна Выбор шрифта задать шрифт текста объекта, размер, начертание.

Общие свойства

Свойства группы Misc задают общие атрибуты объекта, в том числе для его идентификации. Основные свойства этой группы указаны в табл. 1.18.

Таблица 1.18. Свойства объектов группы Misc

Свойство | Назначение
Name | Задает имя объекта
Text | Устанавливает текст в поле по умолчанию
Index | Задает уникальный индекс объекта в коллекции

По имени, указанному в свойстве Name (Имя), объект идентифицируется в форме и в тексте программы. Поэтому необходимо иметь в виду, что в одной форме не может быть двух объектов с одинаковыми именами. По умолчанию это свойство устанавливается автоматически. Вместо имени, заданного по умолчанию, лучше использовать имя, отражающее его смысловое значение.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства позиционирования

Группа Position (Расположение) окна Properties служит для позиционирования объектов в системе координат формы и установки размеров объектов. Основные свойства этой группы указаны в табл. 1.19.

Таблица 1.19. Свойства объектов группы Position

Свойство | Назначение
Left | Задает положение объекта по горизонтальной оси от левого края формы или, в общем случае, от объекта-контейнера
Top | Задает положение объекта по вертикальной оси от его верхнего края до верхней стороны формы
Width | Задает горизонтальный размер (ширину) объекта
Height | Задает вертикальный размер (высоту) объекта


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства шкалы размеров объекта

Свойства группы Scale (Масштаб) устанавливают шкалу максимальных размеров объектов в системе координат формы. Основные свойства этой группы указаны в табл. 1.20.

Таблица 1.20. Свойства объектов группы Scale

Свойство | Назначение
ScaleLeft | Задает максимальное положение объекта по горизонтальной оси
ScaleTop | Задает максимальное положение объекта по вертикальной оси
ScaleWidth | Задает максимальный горизонтальный размер (максимальная ширина)
ScaleHeight | Задает максимальный вертикальный размер (максимальная высота)


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно просмотра объектов

Для просмотра всех элементов, входящих в состав проекта. Visual Basic 6 предоставляет очень удобную возможность — окно просмотра объектов Object Browser (рис. 1.10). В этом окне можно получить доступ не только ко всем элементам, которые входят в проект, но и их свойствам, методам, событиям. Окно просмотра объектов обычно не визуализировано и его можно вызвать командой Object Browser (Браузер объектов) из меню View (Вид).

Рис. 1.10. Окно просмотра объектов Object Browser Visual Basic 6


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно макета формы

Окно макета формы Form Layout (Макет формы) (рис. 1.11) вызывается командой Form Layout Window из меню View. В этом окне показывается уменьшенное изображение проектируемой формы в том виде, как эта форма будет выглядеть на экране монитора при выполнении приложения. Размеры формы в окне макета Form Layout пропорциональны размерам изображения монитора в этом же окне, то есть все реальные пропорции в точности соблюдены.

Для проверки формы в работающем приложении откройте окно макета формы и запустите форму командой Start (Старт) из меню Run (Запуск). При этом форма запускается точно в том виде, как она будет выглядеть в работающем приложении.

Рис. 1.11. Окно макета формы Visual Basic 6


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно редактора исходного кода

Редактор кода — это мощный встроенный редактор с удобными средствами ввода исходного кода программы. Из меню View (Вид) перейти в редактор кода можно с помощью команды Code (Код).

Для быстрого открытия окна редактора кода достаточно дважды щелкнуть левой кнопкой мыши, установив указатель на форме приложения. После начала редактирование кода программы имя открытого окна появляется и в списке команд перехода между окнами Window (Окно) главного меню.

Совет

Переход между макетом и окном редактора кода можно выполнять, используя список меню Window.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно проводника проекта

Окно проводника проекта Project (рис. 1.12) очень похоже на аналогичное окно проводника системы Windows и позволяет легко и быстро просматривать состав и свойства выбранного проекта, перемещаться между проектами, если их открыто сразу несколько, копировать необходимые объекты из окна одною проекта в другой, как это осуществляется в проводнике системы Windows.

Проводник проекта можно вызвать командой Project Explorer (Проводник проекта) меню View (Вид) или комбинацией клавиш <Ctrl>+<R>.

Рис. 1.12. Окно проводника проекта Visual Basic 6

Панель управления окна проводника проекта содержит три кнопки, которые имеют следующее назначение:

Кнопка | Назначение
 | Открывает окно редактора с кодом программы, выбранного в проводнике объекта
 | Открывает в конструкторе форм выбранный объект
 | Включает/выключает отображение папок

При нажатии правой кнопки мыши в окне проводника появляется контекстное меню, содержащее команды для добавления, сохранения, удаления форм, элементов управления и других объектов. В контекстном меню продублированы действия кнопок окна проводника.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно Locals

Окно Locals (Локальные) предназначено для просмотра списка локальных переменных приложения и контроля за их значениями (рис. 1.13). Вызывается это окно командой Locals Window (Окно локальных переменных) меню View (Вид).

В окне Locals можно просмотреть локальные переменные, объявленные в текущей процедуре, их тип и значения. Эта информация автоматически появляется в окне при его вызове. Данное окно используется для отладки и проверки работы приложений. С помощью него можно проконтролировать все локальные переменные в точках останова программы.

Рис. 1.13. Окно Locals среды проектирования Visual Basic

Замечание

При работе с окном Locals (Локальные) необходимо иметь в виду, что глобальные переменные в этом окне для просмотра недоступны.

Для выбора интересующей процедуры используется поле со списком. Нажав на кнопку с многоточием, можно выбрать интересующую процедуру из списка. Если значения переменных или их названия не помещаются в столбцах, то требуемые столбцы можно расширить, перемещая при помощи левой кнопки мыши границы столбцов в заголовке.

Если окно открыто постоянно, то данные между точками останова программы при работе приложения автоматически обновляются.

В окне Locals можно не только просматривать переменные и их значения в данный момент работы программы. Очень полезным свойством этого окна является возможность изменять значения переменных для проверки реакции программы на эти значения. Для этого в столбце Value (Значение) необходимо щелкнуть на изменяемом значении. При этом значение переведется в режим редактирования, и его можно будет изменить. Клавишей <Enter> или перемещением указателя мыши на другое поле устанавливается новое значение, если оно имеет допустимое значение.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно Watches

Для более полного контроля работы приложения (рис. 1.14) используется окно Watches (Наблюдение). Это окно вызывается командой Watch Window (Окно наблюдения) меню View (Вид) и предназначено для определения значений выражений. В окне Watches можно выполнять действия, аналогичные выполняемым в окне Locals (Локальные).

Так же, как и Locals, окно Watches используется при отладке приложения и проверке его работы.

Рис. 1.14. Окно Watches среды проектирования Visual Basic


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно Immediate

Окно Immediate (Непосредственное выполнение) предназначено для ручного ввода и выполнения команд Visual Basic 6 (рис. 1.15). Это окно появляется автоматически при прерывании работы программы в точках останова программы. Для выполнения команды или оператора Visual Basic необходимо набрать строку команды и нажать клавишу <Enter>.

В сочетании с окнами Locals (Локальные) и Watches (Наблюдение), окно Immediate является удобным средством для отладки и проверки работы программы в пошаговом режиме. Проверяемые части или блоки программы можно копировать из программных модулей приложения в окно Immediate, и после проверки и внесения необходимых изменений по результатам контроля возвращать в модуль приложения.

Рис. 1.15. Окно Immediate среды проектирования Visual Basic


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка среды разработки

Для настройки среды разработки программы Visual Basic используется диалоговое окно Options (Параметры), вызываемое из меню Tools (Сервис) командой Options (Параметры). Окно содержит шесть вкладок:

  • Editor (Редактор)
  • Editor Format (Форматы редактирования)
  • General (Основные настройки)
  • Docking (Инструменты среды)
  • Environment (Среда проектирования)
  • Advanced (Расширенные настройки)

Ниже подробно описаны все параметры настройки среды разработки. Для настройки среды разработки (IDE) на вкладках используются группы флажков, переключателей, раскрывающиеся списки.

В начале изучения Visual Basic 6 некоторые параметры настройки могут показаться непонятными. Не стоит огорчаться по этому поводу. В процессе изучения среды и языка придет понимание всех режимов настройки. При изменении параметров для сохранения варианта настройки необходимо выйти из диалогового окна Options, нажав кнопку ОК. Для отказа от всех осуществленных на вкладках изменений нажмите кнопку Отмена.

Рис. 1.16. Вкладка Editor настройки среды проектирования

Рассмотрим более подробно все вкладки диалогового окна Options и настраиваемые с их помощью параметры.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Editor

Самая первая вкладка диалогового окна Options — Editor (Редактор). Здесь можно установить параметры работы редактора исходного кода приложения (рис. 1.16). Используя флажки группы Code Settings (Установки редактора кода), устанавливаются следующие параметры:

  • Auto Syntax Check (Автоматический контроль синтаксиса) — автоматический контроль синтаксиса при вводе исходного кода приложения в редакторе;
  • Require Variable Declaration (Требование объявления переменных) — если этот флажок установлен, любые переменные можно использовать только после их объявления;
  • Auto List Members (Автоматический вывод списка возможных свойств и методов объекта) — автоматический вывод свойств и методов объекта при вводе текста программы. При этом методы и свойства отображаются в позиции курсора и их можно легко выбрать;
  • Auto Quick Info (Автоматический вывод синтаксиса функций) — разрешение или запрет вывода информации о функциях и их параметрах при вводе текста программы;
  • Auto Data Tips (Автоматическое отображение значений) — при отладке приложения отображает значение переменной, находящейся под указателем мыши;
  • Auto Indent (Автоматическая расстановка) — автоматическая расстановка отступа при вводе программы. Отступы делают программу структурированной и понятной при чтении. Для сложных программ отступы просто обязательны.

В поле Tab Width указывается количество пробелов отступа при нажатии клавиши <ТаЬ>. По умолчанию установлено значение 8, но его можно изменить.

В группе Window Settings (Настройки окна) устанавливаются параметры, связанные с фрагментами текста:

  • Drag-and-Drop Text Editing (Перетаскивание текста) — разрешает перетаскивание фрагментов текста программы;
  • Default to Full Module View (Отображение всех процедур) — позволяет отображать в редакторе сразу все процедуры текущего объекта. Если этот флажок не установлен, процедуры можно просматривать по очереди;
  • Procedure Separator (Разделитель текста процедур) — в режиме просмотра всех процедур проекта устанавливает между ними разделитель.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Editor Format

Вкладка Editor Format (Форматы редактора) диалогового окна Options показана на рис. 1.17. На этой вкладке настраиваются стили текста исходного кода приложения — используемый шрифт, цвета, размер текста исходного кода в зависимости от назначения текста кода. Используя параметры данной вкладки, можно выделить цветом, шрифтом и размером шрифта основные элементы программы, например, основной текст, текст комментариев, точки остановки.

Для настройки форматов элементов кода необходимо выполнить следующее:

  1. Выбрать в области Code Colors из списка типов программного текста настраиваемый тип.
  2. Используя раскрывающиеся списки Foreground и Background, установить цвет текста и фона.
  3. С помощью списков Font и Size задать наименование шрифта и его размер.
  4. В области Sample просмотреть полученный результат осуществленных изменений.
  5. Повторяя пункты с 1-го по 4-й, изменить все необходимые стили текста окна редактора кода.
  6. Для сохранения установленных параметров, нажать кнопку ОК.

Рис. 1.17. Вкладка Editor Format настройки IDE


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка General

На вкладке General диалогового окна Options размещены параметры, которые предназначены для управления общими свойствами среды проектирования (рис. 1.18). В области Form Grid Settings (Настройка сетки форм) находятся следующие параметры настройки:

  • Show Grid (Отображать сетку) — устанавливает режим отображения линий координатной сетки при разработке макетов форм. Используя расположенные под флажком поля Width (Ширина) и Height (Высота), можно установить ширину и высоту ячеек сетки.
  • Align Controls to Grid (Привязать элементы управления к сетке) — задает привязку элементов управления к шагу сетки при размещении их в макете формы.

В области Error Trapping (Реакция на ошибки) можно установить один из трех переключателей, которые задают вариант реакции приложения на возникающие при его работе ошибки:

  • Break on All Errors (Приостанавливаться по всем ошибкам) — приостанавливать выполнение приложения при возникновении любой ошибки;
  • Break in Class Module (Приостанавливаться по ошибкам в классах) — приостанавливать выполнение приложения при возникновении любой ошибки в модуле класса;
  • Break on Unhandled Errors (Приостанавливаться по неуправляемым ошибкам) — приостанавливать выполнение приложения при возникновении любой необработанной ошибки, то есть при такой ошибке, для которой нет функции перехвата.

В области Compile (Компиляция) можно установить флажки, управляющие процессом компиляции программы:

  • Compile on Demand (Компиляция по мере необходимости) — компиляция будет осуществляться только для тех разделов программы, которые необходимо выполнять. При этом при выполнении команды Start (Запустить) из меню Run (Запуск) приложение будет запускаться быстрее;
  • Background Compile (Фоновая компиляция) — этот флажок дает возможность использовать время ожидания программы для ее компиляции.

Кроме перечисленных параметров, на этой вкладке есть еще два флажка следующего назначения:

  • Show ToolTips (Отображать подсказки) — при установке этого флажка Visual Basic 6 отображает подсказку с описанием свойств объекта в макете формы, когда указатель мыши удерживается на объекте некоторое время;
  • Collapse Proj, Hides Windows (Сворачивать проект, скрыть окна) — этот флажок заставляет сворачиваться все связанные с проектом окна при свертывании окна проекта.

Рис. 1.18. Вкладка General настройки IDE


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Docking

На вкладке Docking диалогового окна Options все флажки объединены в одну группу Dockable (рис. 1.19). Эти флажки определяют, какие окна среды разработки могут закрепляться ("приклеиваться") к краям главного окна программы Visual Basic. Наименования окон среды разработки перечислены в виде флажков. Настройка заключается в установке флажков для соответствующих им окон.

  • Immediate Window — окно Immediate (Непосредственное выполнение)
  • Locals Window — окно Locals (Локальные)
  • Watch Window — окно Watches (Наблюдение)
  • Project Explorer — проводник проекта
  • Properties Window — окно свойств
  • Object Browser — браузер объектов
  • Form Layout — окно макета форм
  • Toolbox — панель элементов управления
  • Color Palette — цветовая палитра

Рис. 1.19. Вкладка Docking настройки IDE


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Environment

Вкладка Environment диалогового окна Options содержит три области (рис. 1.20). В области When Visual Basic starts (При запуске Visual Basic) можно установить переключатели:

  • Prompt for project (Приглашение для выбора образца проекта) — указывает на необходимость открытия диалогового окна New Project (Новый проект) при запуске Visual Basic 6;
  • Create default project (Создавать проект по умолчанию) — при запуске Visual Basic 6 создается установленный по умолчанию тип проекта.

Область When a program starts (При запуске программы) управляет возможностью сохранения проекта при запуске его на выполнение. Впоследствии при работе с большим проектом от сохранения можно отказаться для экономии времени. В данной группе переключателей устанавливается одна из следующих опций:

  • Save Changes (Сохранять изменения) — сохранять изменения всегда;
  • Prompt To Save Changes (Сохранять изменения по запросу) — сохранять проект с предварительным запросом на сохранение;
  • Don't Save Changes (He сохранять изменений) — не сохранять осуществленных изменений.

Рис. 1.20. Вкладка Environment настройки IDE

Область Show Templates For (Показывать шаблоны) содержит список шаблонов, появляющихся в соответствующих диалоговых окнах при создании объектов. Используя расположенные здесь флажки, можно отказаться от части шаблонов, которые в данный момент не интересны. Для этого необходимо снять соответствующий флажок. Например, если вы не хотите, чтобы при создании форм появлялось диалоговое окно со списком шаблонов форм, вам необходимо снять флажок Form.

Поле Template Directory (Каталог шаблонов) вкладки назначает папку поиска шаблонов по умолчанию.


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Advanced

На вкладке Advanced диалогового окна Options (рис. 1.21) расположены три флажка, имеющих следующее назначение:

  • Background Project Load (Фоновая загрузка проекта) — разрешает загрузку проекта в фоновом режиме, что дает возможность во время загрузки другого проекта продолжать работу над текущим;
  • Notify when changing shared project items (Сообщать об изменениях элементов проекта) — сообщает об изменении общего для нескольких проектов объекта при одновременной работе над этими проектами;
  • SDI Development Environment (Назначить однодокументныи интерфейс) — устанавливает однодокументныи интерфейс (SDI, Single-Document Interface) среды проектирования. По умолчанию используется многодокументный интерфейс (MDI, Multiple-Document Interface).

Используя поле External HTML Editor (Внешний редактор HTML) вкладки Advanced, можно установить редактор для работы с HTML-страницами.

Рис. 1.21. Вкладка Advanced настройки IDE


1 начало.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Справочная система

Справочная система Visual Basic 6 позволяет разработчику достаточно легко находить требуемую информацию. Для ее вызова используются следующие средства:

  • клавиша <F1>;
  • команды Contents (Содержание), Index (Указатель) или Search (Поиск) из меню Help (Справка).

Отличие между тремя этими командами состоит только в названии вкладки, открываемой при запуске справочной системы. Так, например, при выборе команды Contents будет активна вкладка Содержание. При выборе двух остальных команд в окне справки будут активны вкладки Указатель или Поиск, соответственно.

Справочная система является контекстно-зависимой. Иными словами, программа Visual Basic 6 содержит элементы, при выборе которых нажатие клавиши <F1> приводит не только к открытию окна справочной системы, но и к одновременному открытию раздела справочной системы, в котором можно найти информацию об этом элементе.

Окно справочной системы содержит меню, панель инструментов, поле выбора подмножества справки, вкладки для работы с содержанием справочной системы, окно для вывода текста выбранной темы.

Окно справочной системы имеет собственное меню и панель инструментов.

Левая область окна справочной системы содержит четыре вкладки, предназначенные для упрощения поиска необходимой информации:

Вкладка | Назначение
Содержание | Поиск информации по оглавлению справочной системы
Указатель | Поиск тем по начальным буквам названия темы
Поиск | Поиск ключевых слов и фраз в темах
Избранное | Содержит избранные темы справочной системы

Рассмотрим более подробно работу с вкладками справочной системы.

Первой вкладкой окна справочной системы является вкладка Содержание. Эта вкладка реализует наиболее традиционный подход к получению справочной информации.

Когда вы первый раз открываете вкладку Содержание, то видите перечень разделов, по которым может быть предоставлена справка. Перед наименованием каждого раздела отображается значок. В начальный момент все разделы закрыты, чему соответствует значок закрытой книги.

Для открытия какого-либо из разделов установите курсор на открываемый раздел и нажмите кнопку мыши. В результате значок примет вид открытой книги. При повторном нажатии кнопки мыши на значке открытой книги раздел закрывается.

Открытый раздел может содержать подразделы и темы (см. рис. 2.11). Теме соответствует значок, имеющий вид открытой страницы. Для вывода содержимого определенной темы в правой области окна справки установите курсор на ее название или соответствующий ей значок и нажмите кнопку мыши.

Для более быстрого поиска информации в справочной системе можно использовать вкладку Указатель. В верхней части вкладки расположено поле, предназначенное для ввода ключевого слова, по которому будет осуществляться поиск. Ниже него находится список ключевых слов, упорядоченный по алфавиту.

По мере ввода букв в поле ввода, в списке ключевых слов появляются разделы, первые буквы названий которых совпадают с уже введенными буквами. Кнопкой Показать можно вывести информацию об указанной теме в правую область окна справочной системы.

Вкладка Поиск позволяет организовать произвольный поиск информации в материалах справочной системы. Для поиска требуемого слова нужно ввести его в поле Искать следующие слова и нажать кнопку Разделы. После завершения поиска в списке появятся разделы, в которых упоминается искомое слово. Поиск можно ограничить или расширить при помощи флажков:

Флажок | Назначение
Предыдущий поиск | Поиск среди тем справочной системы, которые были отобраны в предыдущем поиске
Похожие слова | Поиск не только слов, заданных в выражении поиска, но и слов, похожих на них
Только в заголовках | Поиск только в заголовках тем справок

Вкладка Избранное позволяет создать список тем, которые наиболее часто используются в данный период времени. По умолчанию данная вкладка пуста. Для добавления темы справки на вкладку Избранное вам необходимо выполнить следующие действия:

1. Используя другие вкладки окна справочной системы, найдите тему, название которой хотите расположить на данной вкладке.

2. Отобразите найденную информацию в правой области окна справки.

3. Перейдите на вкладку Избранное. Название просматриваемой темы отображается в поле Текущий раздел данной вкладки.

4. Нажмите кнопку Добавить. Наименование текущей темы справочной системы будет добавлено в список избранных тем.

Аналогичным образом добавьте в данную область все необходимые разделы справочной системы. Для удаления разделов с этой вкладки используйте кнопку Удалить.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 10. Отладка программ, обработка ошибок и оптимизация приложений.

Ошибки при работе над проектом, особенно сложным и большим, неизбеж-ны. Поэтому при создании проекта важным этапом является отладка приложения. Отладка — непременный этап работы над любым проектом. Как правило, это проверка функционирования проекта и исправление ошибок перед передачей его на тестирование. Для выполнения отладки в Visual Basic 6 существует набор специальных инструментов, который рассматривается в этой главе.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Редактор кода

Редактор кода программы Visual Basic 6 — это достаточно мощный текстовый редактор с большим количеством возможностей и являющийся основным инструментом программиста для создания и отладки приложения.

В окне редактора (рис. 10.1) представлены следующие элементы управления:

  • раскрывающийся список Object (Объект) — обеспечивает выбор объектов приложения. Этот список находится в левом верхнем углу окна редактора. При выборе объекта в этом списке синхронно изменяется содержимое списка Procedure;
  • раскрывающийся список Procedure (Процедура) — дает возможность выбора членов объекта (событий) и автоматического вывода процедуры или шаблона для выбранного члена в окне редактора. Этот список находится справа от списка Object;
  • кнопка Procedure View (Просмотр процедур) — включает режим просмотра процедур для каждого объекта по отдельности. Располагается в левом, нижнем углу окна редактора;
  • кнопка Full Module View (Полный просмотр модулей) — включает режим работы полного просмотра процедур, при котором в окне редактора показаны все процедуры, разделенные горизонтальной линией (если установлен соответствующий флаг настройки). Располагается в левом нижнем углу окна редактора;
  • горизонтальная и вертикальная полосы прокрутки — позволяют просмотреть текст, который не помещается в текущем окне редактора.

Рис. 10.1. Редактор кода в режиме полного просмогра процедур

Как можно понять из списка элементов управления, редактор кода работает в двух режимах: в режиме просмотра всего текста приложения (полный просмотр процедур) (рис. 10.1) и в режиме просмотра процедур по отдельности (просмотр отдельных процедур) (рис. 10.2).

Рис. 10.2. Редактор кода в режиме просмотра процедур

Редактор кода вызывается автоматически при двойном щелчке мыши на форме проекта или командой Code (Код) меню View (Вид). Для каждого элемента проекта (формы или программного модуля) открывается отдельное окно редактора кода. Соответственно это окно появляется в списке окон меню Window (Окно). В большом проекте удобнее всего работать из Проводника проекта. В этом случае редактор кода вызывается кнопкой View Code (Просмотр кода) панели инструментов окна Проводника.

Для работы в окне редактора можно использовать контекстное меню (рис. 10.3). Оно содержит команды, приведенные в табл. 10.1.

Рис. 10.3. Контекстное меню редактора кода

Таблица 10.1. Команды контекстного меню редактора кода
Команда | Назначение
Cut (Вырезать) | Вырезает выделенный текст и вставляет его в буфер обмена
Copy (Копировать) | Копирует выделенный текст в буфер обмена
Paste (Вставить) | Вставляет текст из буфера обмена
List Properties/Methods (Список свойств/методов) | Показывает список свойств и методов для указанного объекта
List Constants | Показывает список констант
(Список констант) |
Quick Info (Быстрая информация) | Выводит синтаксис вводимого оператора
Parameter Info (Информация о параметрах) | Выводит список параметров отдельной функции или оператора
Complete Word (Полное слово) | Вызывает список свойств и методов. При этом позиционирование курсора в списке осуществляется по начальным буквам введенного текста кода. Например, если вами введена буква "V", то курсор в списке будет установлен на свойстве Value. Выбранное свойство или метод можно вставить из этого списка в текст кода двойным щелчком мыши
Toggle (Установка) | Вызывает меню для установки точек останова, прерываний работы приложения по ошибкам, установки закладок в исходном тексте
Object Browser (Просмотр объектов) | Открывает окно Object Browser (Просмотр объектов)
Add Watch (Добавить наблюдение) | Открывает диалоговое окно Add Watch (Добавить наблюдение)
Definition (Описание) | Приводит описание указанного объекта (вызывая окно Object Browser) переменной или константы
Last Position (Последняя позиция) | Позиционирует курсор на команде в редакторе кода, которая была отредактирована (просмотрена) последней
Hide (Подавить) | Закрывает текущее окно

В свою очередь, Toggle (Установка) открывает меню, содержащее команды, описанные в табл. 10.2.

Таблица 10.2. Команды меню Toggle
Команда | Назначение
Breakpoint (Точка останова) | Устанавливает точку останова в текущей строке
Break on All Errors (Прерывать на всех ошибках) | Устанавливает автоматический переход в режим прерывания программы с возможностью продолжения работы с места прерывания при возникновении любой ошибки
Break in Class Module (Прервать в модуле класса) | Назначает прерывание работы программы при возникновении ошибок в модулях классов
Break on Unhandled Errors (Прервать по неуправляемым ошибкам) | Назначает прерывание работы программы по неуправляемым ошибкам
Bookmark (Закладка) | Устанавливает специальные метки (закладки) в левом вертикальном поле редактора

Замечание

Настройка редактора была описана в главе 1 при рассмотрении общих настроек среды проектирования. Напомним, что настройка параметров редактора осуществляется на вкладках Editor (Редактор) и Editor Format (Форматы редактора) диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Отладка программ

Как правило, отладка — это проверка работы и исправление ошибок программистом перед передачей проекта на тестирование.

Инструментарии отладки позволяет проконтролировать избранные участки кода приложения для локализации ошибки, выполняя приложение по шагам, останавливаясь в точках останова, дает возможность проверить значения переменных, свойств объектов и другую интересующую информацию и выяснить, таким образом, источник ошибки.

В набор инструментария отладки Visual Basic 6 входят такие основные инструменты, как:

  • панель инструментов Debug (Отладка) с кнопками команд для выполнения отладки приложения;
  • окно Immediate (Непосредственное выполнение), предназначенное для непосредственного ввода команд, требующих немедленного выполнения;
  • окно Watches (Наблюдение), предназначенное для просмотра значений выражений, включенных в список просмотра;
  • окно Locals (Локальные), предназначенное для просмотра значений переменных;
  • редактор кода со встроенными возможностями просмотра переменных, констант, свойств, выражений при отладке приложения в точках останова и пошаговом выполнении приложения;
  • окно Call Stack (Стек вызовов) для просмотра вызванных, но незавершенных процедур.

Панель инструментов Debug (рис. 10.4) активизируется при выборе из меню View (Вид) команды Toolbars (Панели инструментов), а затем значения Debug (Отладка).

Рис. 10.4. Панель инструментов Debug, используемая для отладки приложения

На панели инструментов Debug находятся кнопки, обеспечивающие работу по отладке приложения. Назначение этих кнопок описано в табл. 10.3.

Таблица 10.3. Кнопки панели инструментов Debug
Кнопка | Название | Назначение
 | Start/Continue (Продолжить) | Запускает программу или продолжает ее выполнение после прерывания
 | Break (Остановка) | Вызывает прерывание программы в необходимом месте (без использования точек останова)
 | End(Завершение) | Завершает выполнение программы
 | Toggle Breakpoint (Установить точку останова) | Устанавливает точку останова на текущей строке кода
 | Step Into (Шаг с заходом в процедуры) | Осуществляет пошаговое выполнение процедуры, включая также вызываемые ею процедуры
 | Step Over (Шаг без захода в процедуры) | Осуществляет пошаговое выполнение процедуры без трассировки вызываемых ею процедур
 | Step Out (Шаг с выходом из процедуры) | Выполняет пошаговое выполнение текущей процедуры до выхода из нее
 | Locals Window (Окно Locals) | Открывает диалоговое окно Locals для контроля значений переменных
 | Immediate Window (Окно Immediate) | Открывает окно Immediate для ввода и выполнения команд
 | Watch Window (Окно Watch) | Открывает диалоговое окно Watches для просмотра выражений, включенных в список наблюдения
 | Quick Watch (Быстрый просмотр) | Открывает окно Quick Watch для просмотра выражения и значения, которое оно возвращает в данный момент в точке останова программы или на определенном шаге при пошаговом запуске программы
 | Call Stack (Стек вызовов) | Открывает окно Call Stack, в котором представлен список выполняемых процедур

С остальными инструментами вы сможете познакомиться при рассмотрении процесса отладки. Откройте любое из ранее разработанных приложений, например приложение для изучения записи/чтения данных из файла. Установите точку останова в процедуре записи данных. Для этого щелкните кнопкой мыши, установив указатель в сером вертикальном поле редактора кода напротив интересующей строки, или выполните команду Toggle Break-point (Установить точку останова) меню Debug (Отладка). При этом в сером вертикальном поле рядом с выбранной командой устанавливается жирная точка (рис. 10.5), остановка выполнения программы произойдет именно в этом месте кода.

Рис. 10.5. Точка останова в окне редактора кода

При запуске программы в точке останова выполнение программы приостанавливается и для контроля работы приложения можно использовать весь отладочный инструментарий: просматривать значения переменных и выражений при позиционировании маркера на выбранной переменной или выражении (рис. 10.6).

Рис. 10.6. Просмотр значения выражения в точке останова

Для более тщательного контроля работы приложения можно использовать окна просмотра: Immediate (Немедленное выполнение), Watches (Наблюдение), Locals (Локальные), Quick Watch (Быстрый просмотр). Call Stack (Стек вызовов).

Кроме прямого ввода и выполнения команд, окно Immediate служит для выяснения значения переменных и выражении. Для этого необходимо выполнить команду ? с указанием интересующего выражения, как это показано на рис. 10.7. Значение выражения выводится в следующей строке этого же окна.

Рис. 10.7. Окно Immediate для ввода команд и получения результатов

При работе с окном Immediate удобно использовать объект Debug и его метод print. В режиме запуска метод Debug. Print выводит текстовое сообщение в окне Immediate. Синтаксис этого метода очень простой:

Debug.Print StringMessage где StringMessage — текст выводимого в окно Immediate сообщения.

В окне Locals можно просмотреть все переменные и их значения, используемые в данный момент приложением (рис. 10.8)

Основным окном для просмотра значений выражений является окно Watches (рис. 10.9). В этом окне можно проконтролировать любое выражение из списка введенных для проверки.

Рис. 10.8. Окно Locals для контроля за переменными

Рис. 10.9. Окно Watches для контроля за значениями выражений

Список проверяемых выражений пополняется в диалоговом окне Add Watch (рис. 10.10), открываемом командой Add Watch (Добавить наблюдение) контекстного меню редактора кода или одноименной кнопкой на панели инструментов Debug (Отладка). Для добавления выражения в список контролируемых необходимо ввести его в текстовое поле Expression (Выражение) этого окна.

Замечание

Если в тексте кода выделить выражение, то при вызове окна Add Watch это выражение по умолчанию вставляется в поле Expression.

Рис. 10.10. Окно Add Watch для добавления контролируемого выражения

Область Context диалогового окна Add Watch позволяет установить область видимости переменных, наблюдаемых в выражении. Раскрывающийся список Procedure (Процедура) задает видимость внутри процедур, а список Module (Модуль) — внутри программных модулей.

Переключатель Watch Type (Тип просмотра) определяет, как Visual Basic реагирует на наблюдаемое выражение. При установке опции Watch Expression (Выражение наблюдения) значение выражения отображается в диалоговом окне Watches в режиме прерывания. Опция Break When Value Is True (Приостановить при равенстве выражения значению Истина) автоматически задает режим прерываний и обращение к контролю выражений при условии равенства выражения значению True или ненулевому значению для числовых выражений. Опция Break When Value Changes (Приостановить при из менении значения выражения) аналогична опции Break When Value Is True, но приложение входит в режим прерывания при изменении значения выражения.

В дополнение к окну Watches, для просмотра выражений можно использовать окно Quick Watch (Быстрый просмотр) для быстрого доступа к значению выражения (рис. 10.11). Для этого окна не требуется вводить список контролируемых выражений, а достаточно выделить интересующее выражение в тексте кода и вызвать окно Quick Watch одноименной кнопкой на панели инструментов Debug,

Для контроля выполняемых процедур используется окно Call Stack (Стек вызовов), в котором показаны все вызванные и активные в данный момент процедуры (рис. 10.12).

Рис. 10.11. Окно Quick Watch для быстрого просмотра

Рис. 10.12. Окно Call Stack для просмотра вызванных процедур

Рис. 10.13. Место вызова процедуры, выбранной на рис. 10.12

Из окна Call Stack можно перейти к коду программы (рис. 10.13), откуда был выполнен вызов выбранной в списке процедуры, с помощью кнопки Show (Показать). На рис. 10.13 показано место вызова процедуры, выбранной в окне Call Stack (рис. 10.12).


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Обработка ошибок

Обработка ошибок и неправильных действий пользователя — обязательная составляющая любого проекта. Для работы с ошибками в Visual Basic 6 есть специальный оператор on Error.

Существует несколько вариантов синтаксиса этого оператора. Первый вариант имеет вид:

On Error Go To StringLabel

где StringLabel — метка оператора. Она должна быть уникальной в пределах процедуры.

Метка оператора — это любое текстовое значение, начинающееся с буквы и завершающееся двоеточием. В этом варианте синтаксиса при возникновении ошибки программа будет переходить к оператору, следующему непосредственно за меткой StringLabel. Например, приведенный ниже код выполняет обработку ошибки:

On Error Go To ErrorLabel

текст кода процедуры ErrorLabel:

Call ErrorProcedure ()

End

В данном случае при возникновении ошибки будет выполняться оператор call ErrorProcedure о, вызывающий процедуру обработки ошибки.

Для игнорирования ошибки необходимо использовать следующий вариант оператора on Error:

On Error Resume Next

Для того чтобы отключить обработку ошибок в какой-либо процедуре, оператор on Error записывается в виде:

On Error Go To 0

При обработке ошибок хорошо бы выдать сообщение о том, что это за ошибка. Для этого предназначены перечисленные ниже встроенные возможности Visual Basic 6:

  • служебная переменная Err, которая содержит код ошибки;
  • служебная переменная Error, которая содержит текст системного сообщения об ошибке;
  • объект Err, который содержит одновременно код и сообщение об ошибке.

Для выполнения действии программы после обнаружения ошибки служит оператор Resume, который имеет различные варианты использования. Например:

  • Resume Next

    При этом выполняется оператор, следующий за оператором с ошибкой.

  • On Resume NextLabel

    где NextLabel — метка оператора, который будет выполняться после обработки ошибки.

Приведенный ниже код обрабатывает ошибки:

On Error Go To ErrorLabel

текст кода процедуры

ErrorLabel:

Call ErrorProcedure ()

Resume NextStatement

текст кода процедуры

NextStatement:

текст кода

При использовании этого варианта обработки ошибки выполнение программы не остановится, как в случае с предыдущим кодом, а будут выполняться операторы кода, расположенного после метки продолжения работы.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оптимизация приложений

Целью любой разработки является создание максимально эффективного приложения. Однако часто некоторые параметры приложений могут быть противоречивыми (например, размер приложения и скорость его работы), и требуется подобрать оптимальное решение для их реализации в проекте. Поиск реализации эффективно работающего приложения в условиях противоречий и ограничений и есть оптимизация.

Как правило, целью оптимизации является создание приложения, выполняющего все поставленные перед ним функциональные задачи максимально быстро и при этом с использованием минимального количества ресурсов системы, в частности места на диске и памяти компьютера при загрузке приложения. Перед проведением оптимизации необходимо ясно представлять, какие параметры являются более важными: скорость или ресурсы. Оптимизация приложения, таким образом, это целая стратегия создания эффективного приложения.

Рассмотрим оптимизацию приложения, включающую в себя следующие основные разделы:

  • оптимизацию скорости выполнения приложением вычислений и других действии, измеряемых временем;
  • оптимизацию размера приложения;
  • оптимизацию размера графики приложения.

Конечно, это далеко не полный список, но главные направления оптимизации он отражает.

Перед тем как строить стратегию оптимизации, рекомендуется ответить на следующие три вопроса:

  • Что оптимизировать?
  • Где оптимизировать?
  • Когда завершить оптимизацию?

Отвечая на первый вопрос, необходимо выделить цели оптимизации. Например, приложение для расчета заработной платы должно работать максимально быстро, при этом можно пожертвовать его размером. Наоборот, создавая приложение для Internet, необходимо помнить, что проект большого размера не будет работать в сети Internet, т. к. исполняемый файл приложения размером 1 Мбайт и более практически неработоспособен в сети.

Второй вопрос определяет место оптимизации для достижения максимального эффекта за определенное время. Оптимизировать приложение можно до бесконечности. Однако, как правило, на эту процедуру отводится определенное время, которое можно использовать на решение других вопросов или на разработку других приложений. Поэтому надо стремиться добиваться максимальной оптимизации минимальными усилиями. Например, если оптимизируется скорость приложения, первым делом нужно обратить внимание на циклы и на работу приложения внутри циклов, т. е. уменьшить количество шагов цикла до необходимого. И наоборот, на процедуры, вызываемые редко, следует видимо обратить внимание в последнюю очередь или вообще не оптимизировать их.

Третий вопрос подразумевает, что оптимизацию не следует проводить до бесконечности, если существуют ограничения, не связанные с работой кода приложения. Некоторые параметры приложения могут прямо зависеть от параметров системы: скорости работы диска или сети. Поэтому следует вовремя остановиться в оптимизации параметров приложения, когда ее результат уже в малой степени зависит от приложения. Например, при работе с диском таким ограничением будет скорость выполнения операций записи/чтения данных с диска.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оптимизация скорости работы приложения

Основной способ оптимизации скорости работы — это оптимизация кода приложения. При этом желательно прислушаться к рекомендациям разработчиков Visual Basic 6.

  • Избегайте переменных типа variant и присваивайте соответствующие их применению типы. При использовании в выражениях переменных типа Variant теряется время на их приведение к конкретному типу в соответствии с типом выражения. Причем, необходимо иметь в виду, что при множественном описании ключевые слова As Type относятся только к одной переменной, то есть Dim А, в, с As String означает, что А и В— переменные типа variant (по умолчанию) и только с — строковая. В этом случае лучше написать Dim A As string, в As String, с As string.
  • Используйте для арифметических вычислений переменные типа Long или Integer, поскольку они, в отличие от currency, single или Double, более всего соответствуют машинному коду. В табл. 10.4 приведено ранжирование по относительной скорости типов переменных при арифметических вычислениях.

Таблица 10.4. Относительная скорость вычисления для типов переменных
Тип переменной | Относительная скорость
Long | Самая высокая скорость
Integer | Ниже чем у Long
Byte | Ниже чем у Integer
Single | Ниже чем у Byte
Double | Ниже чем у Single
Currency | Самая низкая скорость

  • Назначайте часто используемое свойство объекта в переменные, так как назначение и чтение переменных работает быстрее (от 10 до 20 раз). Для сравнения приведены два примера с двумя вариантами текста кода, при этом второй вариант кода более быстрый, чем первый, и в том и в другом примере.

    1. Первый пример.

    Первый вариант кода:

    For nCounter = 1 То 20

    Object(nCounter).Property = ObjectDef.Property

    Next nCounter

    Второй вариант кода:

    valProperty = ObjectDef.Property For nCounter = 1 To 20

    Object(nCounter).Property = valProperty

    Next nCounter

    2. Второй пример.

    Первый вариант кода:

    For nCounter = 1 То 20

    Object.Property = Object.Property & sValue

    Next nCounter

    Второй вариант кода:

    For nCounter = 1 To 20

    sValueAll = sValueAll & sValue

    Next nCounter

    Object.Property = sValueAll

  • Для хранения одинаковых значений в процедурах вместо переменных типа Static используйте переменные уровня модуля, поскольку они работают быстрее. При этом, правда, текст кода приложения увеличивается за счет дублирования и становится менее читабельным и понятным.
  • Для критичных по времени вычисления случаев используйте код процедур непосредственно в месте их выполнения взамен вызова этих процедур, который занимает определенное время. Правда при этом необходимо помнить, что размер кода увеличивается за счет дублирования кода процедур.
  • Вместо переменных, насколько это возможно, используйте константы, поскольку значения констант включаются при компиляции в код приложения, а переменные каждый раз должны быть найдены в памяти и считаны, что, конечно, занимает определенное время.

    Замечание

    Оптимизация кода приложения, конечно, связана и с оптимизацией его размера. Как видно из некоторых способов оптимизации кода, размер кода либо увеличивается, либо уменьшается при оптимизации скорости приложения.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оптимизация размера приложения

При оптимизации размера приложения под размером будем понимать как размер исполняемого файла, так и размер загруженного в память приложения. Особенно критичным размер является для приложений, работающих в сети Internet. Поэтому такие приложения следует делать как можно меньшего размера. Если это не получается, можно разделить большое приложение на несколько небольших, которые будут выполнять законченные функции и загружаться по мере необходимости.

Частичную оптимизацию размера кода выполняет сам Visual Basic 6. При компиляции приложения в исполняемый файл пустые строки и строки комментариев пропускаются, поэтому на них можно не экономить. В том числе можно не экономить на длине имен идентификаторов, которые также оптимизируются компилятором.

Для оптимизации размера кода подойдут такие основные рекомендации:

  • уменьшайте количество загруженных форм. Для форм, которые закрываются, применяйте оператор: set Form = Nothing;
  • уменьшайте в формах, насколько это возможно, количество элементов управления. При этом лучше пользоваться массивами элементов управления;
  • для вывода тестовых значений максимально используйте объекты Label
  • вместо TextBox;
  • для хранения данных используйте файл ресурсов и загружайте данные только при необходимости;
  • избегайте переменных типа variant, требующих 16 байт для хранения. Для сравнения переменные типа integer требуют 2 байта, переменные типа Double — 8 байт;
  • избегайте "мертвого" кода — то есть процедур и переменных, которые когда-то требовались, но в настоящее время не используются. Их надо удалить или закомментировать.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оптимизация размера графики приложения

Графика занимает существенный размер приложения, поэтому важно использовать ее оптимально. Для этого подходят такие рекомендации:

  • для вывода изображений используйте элемент управления типа image, а не Picture, поскольку последний имеет атрибуты окна и, соответственно требует больше ресурсов;
  • загружайте изображения только при необходимости, а не храните их в элементах управления;
  • если необходимость присутствия изображения не требуется, назначайте свойству Picture объектов значение Nothing: Set Object. Picture = Nothing.

    Замечание

    Приведенный здесь список не содержит всевозможные рекомендации и приемы оптимизации приложений. В этом вопросе помощь вам может оказать только большая практика работы с Visual Basic 6, поскольку создание оптимальных приложений сродни мастерству, оттачиваемому разработкой приложений для Visual Basic 6.


Ch 10.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 10. Отладка программ, обработка ошибок и оптимизация приложений.

Ошибки при работе над проектом, особенно сложным и большим, неизбеж-ны. Поэтому при создании проекта важным этапом является отладка приложения. Отладка — непременный этап работы над любым проектом. Как правило, это проверка функционирования проекта и исправление ошибок перед передачей его на тестирование. Для выполнения отладки в Visual Basic 6 существует набор специальных инструментов, который рассматривается в этой главе.

Редактор кода

Редактор кода программы Visual Basic 6 — это достаточно мощный текстовый редактор с большим количеством возможностей и являющийся основным инструментом программиста для создания и отладки приложения.

В окне редактора (рис. 10.1) представлены следующие элементы управления:

  • раскрывающийся список Object (Объект) — обеспечивает выбор объектов приложения. Этот список находится в левом верхнем углу окна редактора. При выборе объекта в этом списке синхронно изменяется содержимое списка Procedure;
  • раскрывающийся список Procedure (Процедура) — дает возможность выбора членов объекта (событий) и автоматического вывода процедуры или шаблона для выбранного члена в окне редактора. Этот список находится справа от списка Object;
  • кнопка Procedure View (Просмотр процедур) — включает режим просмотра процедур для каждого объекта по отдельности. Располагается в левом, нижнем углу окна редактора;
  • кнопка Full Module View (Полный просмотр модулей) — включает режим работы полного просмотра процедур, при котором в окне редактора показаны все процедуры, разделенные горизонтальной линией (если установлен соответствующий флаг настройки). Располагается в левом нижнем углу окна редактора;
  • горизонтальная и вертикальная полосы прокрутки — позволяют просмотреть текст, который не помещается в текущем окне редактора.

Рис. 10.1. Редактор кода в режиме полного просмогра процедур

Как можно понять из списка элементов управления, редактор кода работает в двух режимах: в режиме просмотра всего текста приложения (полный просмотр процедур) (рис. 10.1) и в режиме просмотра процедур по отдельности (просмотр отдельных процедур) (рис. 10.2).

Рис. 10.2. Редактор кода в режиме просмотра процедур

Редактор кода вызывается автоматически при двойном щелчке мыши на форме проекта или командой Code (Код) меню View (Вид). Для каждого элемента проекта (формы или программного модуля) открывается отдельное окно редактора кода. Соответственно это окно появляется в списке окон меню Window (Окно). В большом проекте удобнее всего работать из Проводника проекта. В этом случае редактор кода вызывается кнопкой View Code (Просмотр кода) панели инструментов окна Проводника.

Для работы в окне редактора можно использовать контекстное меню (рис. 10.3). Оно содержит команды, приведенные в табл. 10.1.

Рис. 10.3. Контекстное меню редактора кода

Таблица 10.1. Команды контекстного меню редактора кода
Команда | Назначение
Cut (Вырезать) | Вырезает выделенный текст и вставляет его в буфер обмена
Copy (Копировать) | Копирует выделенный текст в буфер обмена
Paste (Вставить) | Вставляет текст из буфера обмена
List Properties/Methods (Список свойств/методов) | Показывает список свойств и методов для указанного объекта
List Constants | Показывает список констант
(Список констант) |
Quick Info (Быстрая информация) | Выводит синтаксис вводимого оператора
Parameter Info (Информация о параметрах) | Выводит список параметров отдельной функции или оператора
Complete Word (Полное слово) | Вызывает список свойств и методов. При этом позиционирование курсора в списке осуществляется по начальным буквам введенного текста кода. Например, если вами введена буква "V", то курсор в списке будет установлен на свойстве Value. Выбранное свойство или метод можно вставить из этого списка в текст кода двойным щелчком мыши
Toggle (Установка) | Вызывает меню для установки точек останова, прерываний работы приложения по ошибкам, установки закладок в исходном тексте
Object Browser (Просмотр объектов) | Открывает окно Object Browser (Просмотр объектов)
Add Watch (Добавить наблюдение) | Открывает диалоговое окно Add Watch (Добавить наблюдение)
Definition (Описание) | Приводит описание указанного объекта (вызывая окно Object Browser) переменной или константы
Last Position (Последняя позиция) | Позиционирует курсор на команде в редакторе кода, которая была отредактирована (просмотрена) последней
Hide (Подавить) | Закрывает текущее окно

В свою очередь, Toggle (Установка) открывает меню, содержащее команды, описанные в табл. 10.2.

Таблица 10.2. Команды меню Toggle
Команда | Назначение
Breakpoint (Точка останова) | Устанавливает точку останова в текущей строке
Break on All Errors (Прерывать на всех ошибках) | Устанавливает автоматический переход в режим прерывания программы с возможностью продолжения работы с места прерывания при возникновении любой ошибки
Break in Class Module (Прервать в модуле класса) | Назначает прерывание работы программы при возникновении ошибок в модулях классов
Break on Unhandled Errors (Прервать по неуправляемым ошибкам) | Назначает прерывание работы программы по неуправляемым ошибкам
Bookmark (Закладка) | Устанавливает специальные метки (закладки) в левом вертикальном поле редактора

Замечание

Настройка редактора была описана в главе 1 при рассмотрении общих настроек среды проектирования. Напомним, что настройка параметров редактора осуществляется на вкладках Editor (Редактор) и Editor Format (Форматы редактора) диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).

Отладка программ

Как правило, отладка — это проверка работы и исправление ошибок программистом перед передачей проекта на тестирование.

Инструментарии отладки позволяет проконтролировать избранные участки кода приложения для локализации ошибки, выполняя приложение по шагам, останавливаясь в точках останова, дает возможность проверить значения переменных, свойств объектов и другую интересующую информацию и выяснить, таким образом, источник ошибки.

В набор инструментария отладки Visual Basic 6 входят такие основные инструменты, как:

  • панель инструментов Debug (Отладка) с кнопками команд для выполнения отладки приложения;
  • окно Immediate (Непосредственное выполнение), предназначенное для непосредственного ввода команд, требующих немедленного выполнения;
  • окно Watches (Наблюдение), предназначенное для просмотра значений выражений, включенных в список просмотра;
  • окно Locals (Локальные), предназначенное для просмотра значений переменных;
  • редактор кода со встроенными возможностями просмотра переменных, констант, свойств, выражений при отладке приложения в точках останова и пошаговом выполнении приложения;
  • окно Call Stack (Стек вызовов) для просмотра вызванных, но незавершенных процедур.

Панель инструментов Debug (рис. 10.4) активизируется при выборе из меню View (Вид) команды Toolbars (Панели инструментов), а затем значения Debug (Отладка).

Рис. 10.4. Панель инструментов Debug, используемая для отладки приложения

На панели инструментов Debug находятся кнопки, обеспечивающие работу по отладке приложения. Назначение этих кнопок описано в табл. 10.3.

Таблица 10.3. Кнопки панели инструментов Debug
Кнопка | Название | Назначение
 | Start/Continue (Продолжить) | Запускает программу или продолжает ее выполнение после прерывания
 | Break (Остановка) | Вызывает прерывание программы в необходимом месте (без использования точек останова)
 | End(Завершение) | Завершает выполнение программы
 | Toggle Breakpoint (Установить точку останова) | Устанавливает точку останова на текущей строке кода
 | Step Into (Шаг с заходом в процедуры) | Осуществляет пошаговое выполнение процедуры, включая также вызываемые ею процедуры
 | Step Over (Шаг без захода в процедуры) | Осуществляет пошаговое выполнение процедуры без трассировки вызываемых ею процедур
 | Step Out (Шаг с выходом из процедуры) | Выполняет пошаговое выполнение текущей процедуры до выхода из нее
 | Locals Window (Окно Locals) | Открывает диалоговое окно Locals для контроля значений переменных
 | Immediate Window (Окно Immediate) | Открывает окно Immediate для ввода и выполнения команд
 | Watch Window (Окно Watch) | Открывает диалоговое окно Watches для просмотра выражений, включенных в список наблюдения
 | Quick Watch (Быстрый просмотр) | Открывает окно Quick Watch для просмотра выражения и значения, которое оно возвращает в данный момент в точке останова программы или на определенном шаге при пошаговом запуске программы
 | Call Stack (Стек вызовов) | Открывает окно Call Stack, в котором представлен список выполняемых процедур

С остальными инструментами вы сможете познакомиться при рассмотрении процесса отладки. Откройте любое из ранее разработанных приложений, например приложение для изучения записи/чтения данных из файла. Установите точку останова в процедуре записи данных. Для этого щелкните кнопкой мыши, установив указатель в сером вертикальном поле редактора кода напротив интересующей строки, или выполните команду Toggle Break-point (Установить точку останова) меню Debug (Отладка). При этом в сером вертикальном поле рядом с выбранной командой устанавливается жирная точка (рис. 10.5), остановка выполнения программы произойдет именно в этом месте кода.

Рис. 10.5. Точка останова в окне редактора кода

При запуске программы в точке останова выполнение программы приостанавливается и для контроля работы приложения можно использовать весь отладочный инструментарий: просматривать значения переменных и выражений при позиционировании маркера на выбранной переменной или выражении (рис. 10.6).

Рис. 10.6. Просмотр значения выражения в точке останова

Для более тщательного контроля работы приложения можно использовать окна просмотра: Immediate (Немедленное выполнение), Watches (Наблюдение), Locals (Локальные), Quick Watch (Быстрый просмотр). Call Stack (Стек вызовов).

Кроме прямого ввода и выполнения команд, окно Immediate служит для выяснения значения переменных и выражении. Для этого необходимо выполнить команду ? с указанием интересующего выражения, как это показано на рис. 10.7. Значение выражения выводится в следующей строке этого же окна.

Рис. 10.7. Окно Immediate для ввода команд и получения результатов

При работе с окном Immediate удобно использовать объект Debug и его метод print. В режиме запуска метод Debug. Print выводит текстовое сообщение в окне Immediate. Синтаксис этого метода очень простой:

Debug.Print StringMessage где StringMessage — текст выводимого в окно Immediate сообщения.

В окне Locals можно просмотреть все переменные и их значения, используемые в данный момент приложением (рис. 10.8)

Основным окном для просмотра значений выражений является окно Watches (рис. 10.9). В этом окне можно проконтролировать любое выражение из списка введенных для проверки.

Рис. 10.8. Окно Locals для контроля за переменными

Рис. 10.9. Окно Watches для контроля за значениями выражений

Список проверяемых выражений пополняется в диалоговом окне Add Watch (рис. 10.10), открываемом командой Add Watch (Добавить наблюдение) контекстного меню редактора кода или одноименной кнопкой на панели инструментов Debug (Отладка). Для добавления выражения в список контролируемых необходимо ввести его в текстовое поле Expression (Выражение) этого окна.

Замечание

Если в тексте кода выделить выражение, то при вызове окна Add Watch это выражение по умолчанию вставляется в поле Expression.

Рис. 10.10. Окно Add Watch для добавления контролируемого выражения

Область Context диалогового окна Add Watch позволяет установить область видимости переменных, наблюдаемых в выражении. Раскрывающийся список Procedure (Процедура) задает видимость внутри процедур, а список Module (Модуль) — внутри программных модулей.

Переключатель Watch Type (Тип просмотра) определяет, как Visual Basic реагирует на наблюдаемое выражение. При установке опции Watch Expression (Выражение наблюдения) значение выражения отображается в диалоговом окне Watches в режиме прерывания. Опция Break When Value Is True (Приостановить при равенстве выражения значению Истина) автоматически задает режим прерываний и обращение к контролю выражений при условии равенства выражения значению True или ненулевому значению для числовых выражений. Опция Break When Value Changes (Приостановить при из менении значения выражения) аналогична опции Break When Value Is True, но приложение входит в режим прерывания при изменении значения выражения.

В дополнение к окну Watches, для просмотра выражений можно использовать окно Quick Watch (Быстрый просмотр) для быстрого доступа к значению выражения (рис. 10.11). Для этого окна не требуется вводить список контролируемых выражений, а достаточно выделить интересующее выражение в тексте кода и вызвать окно Quick Watch одноименной кнопкой на панели инструментов Debug,

Для контроля выполняемых процедур используется окно Call Stack (Стек вызовов), в котором показаны все вызванные и активные в данный момент процедуры (рис. 10.12).

Рис. 10.11. Окно Quick Watch для быстрого просмотра

Рис. 10.12. Окно Call Stack для просмотра вызванных процедур

Рис. 10.13. Место вызова процедуры, выбранной на рис. 10.12

Из окна Call Stack можно перейти к коду программы (рис. 10.13), откуда был выполнен вызов выбранной в списке процедуры, с помощью кнопки Show (Показать). На рис. 10.13 показано место вызова процедуры, выбранной в окне Call Stack (рис. 10.12).

Обработка ошибок

Обработка ошибок и неправильных действий пользователя — обязательная составляющая любого проекта. Для работы с ошибками в Visual Basic 6 есть специальный оператор on Error.

Существует несколько вариантов синтаксиса этого оператора. Первый вариант имеет вид:

On Error Go To StringLabel

где StringLabel — метка оператора. Она должна быть уникальной в пределах процедуры.

Метка оператора — это любое текстовое значение, начинающееся с буквы и завершающееся двоеточием. В этом варианте синтаксиса при возникновении ошибки программа будет переходить к оператору, следующему непосредственно за меткой StringLabel. Например, приведенный ниже код выполняет обработку ошибки:

On Error Go To ErrorLabel

текст кода процедуры ErrorLabel:

Call ErrorProcedure ()

End

В данном случае при возникновении ошибки будет выполняться оператор call ErrorProcedure о, вызывающий процедуру обработки ошибки.

Для игнорирования ошибки необходимо использовать следующий вариант оператора on Error:

On Error Resume Next

Для того чтобы отключить обработку ошибок в какой-либо процедуре, оператор on Error записывается в виде:

On Error Go To 0

При обработке ошибок хорошо бы выдать сообщение о том, что это за ошибка. Для этого предназначены перечисленные ниже встроенные возможности Visual Basic 6:

  • служебная переменная Err, которая содержит код ошибки;
  • служебная переменная Error, которая содержит текст системного сообщения об ошибке;
  • объект Err, который содержит одновременно код и сообщение об ошибке.

Для выполнения действии программы после обнаружения ошибки служит оператор Resume, который имеет различные варианты использования. Например:

  • Resume Next

    При этом выполняется оператор, следующий за оператором с ошибкой.

  • On Resume NextLabel

    где NextLabel — метка оператора, который будет выполняться после обработки ошибки.

Приведенный ниже код обрабатывает ошибки:

On Error Go To ErrorLabel

текст кода процедуры

ErrorLabel:

Call ErrorProcedure ()

Resume NextStatement

текст кода процедуры

NextStatement:

текст кода

При использовании этого варианта обработки ошибки выполнение программы не остановится, как в случае с предыдущим кодом, а будут выполняться операторы кода, расположенного после метки продолжения работы.

Оптимизация приложений

Целью любой разработки является создание максимально эффективного приложения. Однако часто некоторые параметры приложений могут быть противоречивыми (например, размер приложения и скорость его работы), и требуется подобрать оптимальное решение для их реализации в проекте. Поиск реализации эффективно работающего приложения в условиях противоречий и ограничений и есть оптимизация.

Как правило, целью оптимизации является создание приложения, выполняющего все поставленные перед ним функциональные задачи максимально быстро и при этом с использованием минимального количества ресурсов системы, в частности места на диске и памяти компьютера при загрузке приложения. Перед проведением оптимизации необходимо ясно представлять, какие параметры являются более важными: скорость или ресурсы. Оптимизация приложения, таким образом, это целая стратегия создания эффективного приложения.

Рассмотрим оптимизацию приложения, включающую в себя следующие основные разделы:

  • оптимизацию скорости выполнения приложением вычислений и других действии, измеряемых временем;
  • оптимизацию размера приложения;
  • оптимизацию размера графики приложения.

Конечно, это далеко не полный список, но главные направления оптимизации он отражает.

Перед тем как строить стратегию оптимизации, рекомендуется ответить на следующие три вопроса:

  • Что оптимизировать?
  • Где оптимизировать?
  • Когда завершить оптимизацию?

Отвечая на первый вопрос, необходимо выделить цели оптимизации. Например, приложение для расчета заработной платы должно работать максимально быстро, при этом можно пожертвовать его размером. Наоборот, создавая приложение для Internet, необходимо помнить, что проект большого размера не будет работать в сети Internet, т. к. исполняемый файл приложения размером 1 Мбайт и более практически неработоспособен в сети.

Второй вопрос определяет место оптимизации для достижения максимального эффекта за определенное время. Оптимизировать приложение можно до бесконечности. Однако, как правило, на эту процедуру отводится определенное время, которое можно использовать на решение других вопросов или на разработку других приложений. Поэтому надо стремиться добиваться максимальной оптимизации минимальными усилиями. Например, если оптимизируется скорость приложения, первым делом нужно обратить внимание на циклы и на работу приложения внутри циклов, т. е. уменьшить количество шагов цикла до необходимого. И наоборот, на процедуры, вызываемые редко, следует видимо обратить внимание в последнюю очередь или вообще не оптимизировать их.

Третий вопрос подразумевает, что оптимизацию не следует проводить до бесконечности, если существуют ограничения, не связанные с работой кода приложения. Некоторые параметры приложения могут прямо зависеть от параметров системы: скорости работы диска или сети. Поэтому следует вовремя остановиться в оптимизации параметров приложения, когда ее результат уже в малой степени зависит от приложения. Например, при работе с диском таким ограничением будет скорость выполнения операций записи/чтения данных с диска.

Оптимизация скорости работы приложения

Основной способ оптимизации скорости работы — это оптимизация кода приложения. При этом желательно прислушаться к рекомендациям разработчиков Visual Basic 6.

  • Избегайте переменных типа variant и присваивайте соответствующие их применению типы. При использовании в выражениях переменных типа Variant теряется время на их приведение к конкретному типу в соответствии с типом выражения. Причем, необходимо иметь в виду, что при множественном описании ключевые слова As Type относятся только к одной переменной, то есть Dim А, в, с As String означает, что А и В— переменные типа variant (по умолчанию) и только с — строковая. В этом случае лучше написать Dim A As string, в As String, с As string.
  • Используйте для арифметических вычислений переменные типа Long или Integer, поскольку они, в отличие от currency, single или Double, более всего соответствуют машинному коду. В табл. 10.4 приведено ранжирование по относительной скорости типов переменных при арифметических вычислениях.

Таблица 10.4. Относительная скорость вычисления для типов переменных
Тип переменной | Относительная скорость
Long | Самая высокая скорость
Integer | Ниже чем у Long
Byte | Ниже чем у Integer
Single | Ниже чем у Byte
Double | Ниже чем у Single
Currency | Самая низкая скорость

  • Назначайте часто используемое свойство объекта в переменные, так как назначение и чтение переменных работает быстрее (от 10 до 20 раз). Для сравнения приведены два примера с двумя вариантами текста кода, при этом второй вариант кода более быстрый, чем первый, и в том и в другом примере.

    1. Первый пример.

    Первый вариант кода:

    For nCounter = 1 То 20

    Object(nCounter).Property = ObjectDef.Property

    Next nCounter

    Второй вариант кода:

    valProperty = ObjectDef.Property For nCounter = 1 To 20

    Object(nCounter).Property = valProperty

    Next nCounter

    2. Второй пример.

    Первый вариант кода:

    For nCounter = 1 То 20

    Object.Property = Object.Property & sValue

    Next nCounter

    Второй вариант кода:

    For nCounter = 1 To 20

    sValueAll = sValueAll & sValue

    Next nCounter

    Object.Property = sValueAll

  • Для хранения одинаковых значений в процедурах вместо переменных типа Static используйте переменные уровня модуля, поскольку они работают быстрее. При этом, правда, текст кода приложения увеличивается за счет дублирования и становится менее читабельным и понятным.
  • Для критичных по времени вычисления случаев используйте код процедур непосредственно в месте их выполнения взамен вызова этих процедур, который занимает определенное время. Правда при этом необходимо помнить, что размер кода увеличивается за счет дублирования кода процедур.
  • Вместо переменных, насколько это возможно, используйте константы, поскольку значения констант включаются при компиляции в код приложения, а переменные каждый раз должны быть найдены в памяти и считаны, что, конечно, занимает определенное время.

    Замечание

    Оптимизация кода приложения, конечно, связана и с оптимизацией его размера. Как видно из некоторых способов оптимизации кода, размер кода либо увеличивается, либо уменьшается при оптимизации скорости приложения.

Оптимизация размера приложения

При оптимизации размера приложения под размером будем понимать как размер исполняемого файла, так и размер загруженного в память приложения. Особенно критичным размер является для приложений, работающих в сети Internet. Поэтому такие приложения следует делать как можно меньшего размера. Если это не получается, можно разделить большое приложение на несколько небольших, которые будут выполнять законченные функции и загружаться по мере необходимости.

Частичную оптимизацию размера кода выполняет сам Visual Basic 6. При компиляции приложения в исполняемый файл пустые строки и строки комментариев пропускаются, поэтому на них можно не экономить. В том числе можно не экономить на длине имен идентификаторов, которые также оптимизируются компилятором.

Для оптимизации размера кода подойдут такие основные рекомендации:

  • уменьшайте количество загруженных форм. Для форм, которые закрываются, применяйте оператор: set Form = Nothing;
  • уменьшайте в формах, насколько это возможно, количество элементов управления. При этом лучше пользоваться массивами элементов управления;
  • для вывода тестовых значений максимально используйте объекты Label
  • вместо TextBox;
  • для хранения данных используйте файл ресурсов и загружайте данные только при необходимости;
  • избегайте переменных типа variant, требующих 16 байт для хранения. Для сравнения переменные типа integer требуют 2 байта, переменные типа Double — 8 байт;
  • избегайте "мертвого" кода — то есть процедур и переменных, которые когда-то требовались, но в настоящее время не используются. Их надо удалить или закомментировать.

Оптимизация размера графики приложения

Графика занимает существенный размер приложения, поэтому важно использовать ее оптимально. Для этого подходят такие рекомендации:

  • для вывода изображений используйте элемент управления типа image, а не Picture, поскольку последний имеет атрибуты окна и, соответственно требует больше ресурсов;
  • загружайте изображения только при необходимости, а не храните их в элементах управления;
  • если необходимость присутствия изображения не требуется, назначайте свойству Picture объектов значение Nothing: Set Object. Picture = Nothing.

    Замечание

    Приведенный здесь список не содержит всевозможные рекомендации и приемы оптимизации приложений. В этом вопросе помощь вам может оказать только большая практика работы с Visual Basic 6, поскольку создание оптимальных приложений сродни мастерству, оттачиваемому разработкой приложений для Visual Basic 6.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 11. Использование графики.

Visual Basic 6 обладает настолько богатыми возможностями использования графики, что одной главы для их изучения недостаточно. Этому вопросу можно посвятить целую книгу. В данной главе мы постараемся познакомить вас с основами работы с графикой в Visual Basic 6.

Графика в приложениях применяется для того, чтобы сделать интерфейс пользователя более совершенным, интуитивно понятным и, конечно, красивым. Качество оформления интерфейса имеет большое значение для коммерческого успеха приложения, и графика играет в этом не последнюю роль. Поэтому необходимо заранее уточнить, что графику мы будем рассматривать не как средство создания мультфильмов или видеоклипов, а как средство улучшения и украшения интерфейса.

При помощи графики в Visual Basic 6 можно выполнять следующие основные действия:

  • группировать и выделять информацию в формах, используя линии, рамки, фреймы;
  • дополнять информацию графическими изображениями;
  • улучшать интерфейс, дополнять его анимацией.

Совет

Используя графику в приложениях, необходимо сохранять чувство меры. Графика должна лишь дополнять и подчеркивать значимую информацию в формах приложения, но не загромождать формы и не отвлекать от их информационного содержания.

Для работы с графикой и изображениями в Visual Basic 6 используются графические объекты и графические методы. Существуют следующие возможности:

  • добавление и работа с изображением в форме;
  • использование элемента управления picture;
  • использование элемента управления image.

Вышеуказанные объекты дают возможность работать с изображениями, причем как в режиме разработки (Design Time), так и в режиме выполнения (Run Time) программы.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Простые элементы управления для работы с графикой

На панели элементов управления имеются кнопки, позволяющие создавать в форме простые элементы графики:

Кнопка | Название | Назначение
 | Line (Линия) | Создает в форме линию
 | Shape (Контур) | Создает в форме контуры
 | Frame (Рамка) | Размещает в форме рамку, позволяющую объединить объекты в группу


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Line

Элемент управления Line — это линия, имеющая по умолчанию толщину 1. Для изменения вида линии используется свойство BorderStyle объекта Line. Оно может принимать следующие значения:

  • 0-Transparent — невидимая линия;
  • 1-Solid — сплошная линия;
  • 2-Dash — штриховая линия;
  • 3-Dot — пунктирная линия;
  • 4-Dash-Dot — штрихпунктирная линия;
  • 5-Dash-Dot-Dot — штрихпунктир с двойным штрихом;
  • 6-Inside Solid — непрерывная линия.

На рис. 11.1 показаны типы линии в зависимости от значения свойства BorderStyle.

Толщину линии можно задать с помощью свойства Borderwidth. Цвет линии задается свойством BorderColor.

Замечание

Более подробно элемент управления Line был рассмотрен нами в главе 8.

Рис. 11.1. Элемент управления Line


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Shape

Для создания рамок различной формы используется элемент управления Shape (рис. 11.2). Он является только графическим контейнером обведенных элементов управления, но не контейнером в настоящем смысле этого слова. При этом форма рамки задается свойством shape объекта shape и может быть следующей:

  • 0-RectangIe — прямоугольник;
  • 1-Square — квадрат;
  • 2-Oval — эллипс;
  • 3-Circle — круг;
  • 4-Rounded Rectangle — прямоугольник с закругленными углами;
  • 5-Rounded Square — квадрат с закругленными углами.

Рис. 11.2. Элемент управления Shape

При этом для элемента управления shape, как и для Line, можно установить тип линии рамки, ее толщину и цвет.

Замечание

Более подробно элемент управления shape был рассмотрен нами в главе 8.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Frame

Элемент управления Frame имеет вид рамки с заголовком (рис. 11.3). Заголовок, размещаемый в рамке, задается свойством caption. Если вы не хотите, чтобы объект Frame содержал заголовок, установите для значения этого свойства пустую строку.

Объект Frame является полноценным контейнером и управляет общими свойствами объектов, помещенных в рамку. Если, например, сделать Frame невидимым, присвоив свойству visible значение False, то все объекты в рамке тоже станут невидимыми. Используя это свойство объекта Frame, и учитывая, что оно переопределяется и в режиме выполнения приложения, можно организовать, например, многостраничный ввод данных.

Свойство BorderStyle элемента управления Frame задает тип линии рамки и принимает одно из следующих значений:

  • 0-None — без рамки;
  • 1-Fixed Single — сплошная тонкая линия.

При установке для свойства BorderStyle значения 0-None рамка будет отсутствовать, а соответственно, не будет и заголовка рамки.

Рис. 11.3. Элемент управления Frame

Объекту Frame можно придать объемный вид, установив для свойства Appearance значение 1-3D. Если установить значение 0-Flat, то объект принимает плоский вид (рис. 11.3).

Для объекта Frame можно установить разные цвета для фона и заголовка рамки, используя свойства BackColor и ForeColor, соответственно.

Замечание

Более подробно элемент управления Frame был рассмотрен нами в главе 8.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойство Picture

Чтобы разместить в форме графическое изображение, не обязательно выбирать графические объекты. Можно просто воспользоваться свойством picture формы. Для вставки графического изображения в форму необходимо нажать

кнопку с тремя точками в свойстве picture, а затем в открывшемся диалоговом окне Load Picture (Загрузить изображение) (рис. 11.4) выбрать файл требуемого изображения.

Данное свойство формы используют для размещения фонового изображения. При этом необходимо учесть, что размер формы должен соответствовать размеру исходного изображения. Если изображение меньше формы, то оно размещается в левом верхнем углу формы и в дальнейшем не перемещается. Поэтому такой способ хотя и прост, но очень неудобен.

Рис. 11.4. Диалоговое окно Load Picture поиска изображения для свойства Picture

Свойство picture доступно и в режиме выполнения приложения. Простым присвоением можно заменить или убрать изображение из формы.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объекты для работы с изображениями

Для размещения в форме графических изображений используются объекты image и picture. Им соответствуют следующие значки на панели элементов управления:

Значок | Название | Создаваемый объект
 | Image | Image
 | PictureBox | Picture

Однако в качестве изображений, помещаемых в эти объекты, можно использовать только файлы определенных типов. Допустимые типы файлов изображений представлены в табл. 11.1.

Таблица 11.1. Допустимые типы файлов изображений для графических объектов
Описание файла | Тип файла (расширение)
Битовый растровый файл | bmp
Независимый растровый файл | dib
Файл значка | ico,cur
Метафайл | wmf
Расширенный метафайл | emf
Растровый файл | gif
Растровый сжатый файл | jpg, Jpeg

Изображение размещается в объекте image так же, как объект в форме, то есть при помощи свойства picture. Однако в отличие от размещения изображения непосредственно в форме, изображение в объекте image пропорционально изменяет свои размеры.

Изменением размера управляет свойство Stretch. Если это свойство имеет значение False, то объект image принимает размеры в соответствии с размером изображения. Если значение равно True, то размеры изображения изменяются в соответствии с размерами объекта.

В отличие от image, элемент управления picture может работать как полноценный контейнер. Он может содержать другие элементы управления, в нем можно рисовать, используя графические методы Line, circle, point, pset, или выводить текст, используя метод print.

Элемент управления picture обладает свойством visible. При этом все изображения, помещенные в picture, становятся видимыми или невидимыми в зависимости от установленного значения этого свойства. При помощи объекта picture можно организовать простую анимацию, используя метод PaintPicture.

Изображение в элемент управления picture загружается полностью. При этом если оно больше размеров picture, то видна только часть изображения, если меньше, — то изображение размещается в левом верхнем углу. Если установить для свойства AutoSize объекта picture значение True, то изображение будет пропорционально вписываться в объект picture.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Задание изображений

Как уже говорилось, определить графическое изображение в приложении можно как в режиме проектирования (режим Design Time), так и в режиме выполнения (режим Run Time).

Чтобы задать графическое изображение в режиме проектирования, используется свойство picture объекта. Для этого необходимо выполнить следующие действия:

1. Открыть окно Properties объекта.

2. Выбрать свойство picture.

3. Нажать кнопку с тремя точками в правом столбце свойства.

4. В открывшемся диалоговом окне Load Picture найти требуемый файл.

5. Дважды щелкнуть на файле мышью или установить на него курсор и нажать кнопку Открыть.

В режиме выполнения программы существует больше возможностей для определения изображения объекта. Изображение можно задать следующими способами:

  • загрузить изображение при помощи функции Loadpicture с указанием файла изображения. При этом изображение помещается в свойство picture объекта. Например, Object.Picture = LoadPicture("С:\...\Картинка.Ьтр)
  • загрузить изображение из ресурсного файла приложения при помощи функции LoadRespicture с указанием идентификатора ресурса и его типа: Set Object.Picture = LoadResPicture(Resident, vbResBitMap)
  • скопировать изображение из одного объекта в другой с помощью обычного присвоения: ObjectTo.Picture = ObjectFrom.Picture.
  • Скопировать изображение из объекта clipboard.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление изображений

Удаляется изображение из объекта очень просто. Для этого необходимо воспользоваться загрузкой в свойство Picture пустого значения:

Set Объект.Picture = LoadPicture("")

При этом изображение удаляется из объекта.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Графические методы

В дополнение к графическим элементам управления в Visual Basic 6 существует набор графических методов:

Метод | Назначение
Circle | Рисует окружность, дугу или эллипс
CIs | Очищает область вывода
Line | Рисует линии
PaintPicture | Рисует (загружает) изображение
Point | Возвращает цвет точки
Print | Выводит текст
Pset | Размещает точку

Замечание

Необходимо отметить, что метод Print предназначен для вывода текста и к графике имеет косвенное отношение. Тем не менее, мы рассмотрим его вместе с графическими методами, поскольку он используется совместно с другими методами графики для "рисования" текста в указанном объекте или совмещения текста и чистой графики.

В графических методах используются функции вычисления цвета RGB и QBColor. Рассмотрим сначала эти функции.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функции цвета

Функция RGB возвращает числовое представление цвета (тип возвращаемого значения при этом long) в соответствии с интенсивностью трех цветовых составляющих: R (Red— красный), G (Green — зеленый) и В (Blue — синий). Интенсивность этих трех основных цветов задается шкалой чисел от О до 255. Синтаксис этой функции такой:

RGB (Red, Green, Blue)

где:

  • Red — интенсивность красного цвета от 0 до 255;
  • Green — интенсивность зеленого цвета от 0 до 255;
  • Blue — интенсивность синего цвета от 0 до 255.

Для примера в табл. 11.2 показаны часто используемые цвета, разложенные по интенсивностям RGB-цветов.

Таблица 11.2. Цвета в RGB-представлении
Цвет | Интенсивность красного | Интенсивность зеленого | Интенсивность синего
Черный | 0 | 0 | 0
Белый | 255 | 255 | 255
Красный | 255 | 0 | 0
Зеленый | 0 | 255 | 0
Синий | 0 | 0 | 255
Бирюзовый | 0 | 255 | 255
Пурпурный | 255 | 0 | 255
Желтый | 255 | 255 | 0
Серый | 192 | 192 | 192

Например, если вы хотите сделать фон формы бирюзовым, необходимо присвоить свойству BackColor формы следующее значение:

Form.BackColor = RGB (0,255,255)

Для удобства работы со стандартными цветами используется функция QBColor, которая возвращает числовое представление одного из 16 цветов, показанных в табл. 11.3.

Таблица 11.3. Цвета, возвращаемые функцией QBColor
Номер цвета | Цвет
0 | Черный
1 | Синий
2 | Зеленый
3 | Бирюзовый
4 | Красный
5 | Пурпурный
6 | Желтый
7 | Белый
8 | Серый
9 | Светло-синий (голубой)
10 | Светло-зеленый (салатный)
11 | Светло-бирюзовый
12 | Светло-красный (алый)
13 | Светло-пурпурный
14 | Светло-желтый
15 | Ярко-белый

Синтаксис этой функции выглядит очень просто:

QBColor (NumberColor)

где NumberColor — числовое значение (номер цвета), определяющее цвет (табл. 11.3).

Для того чтобы установить для формы бирюзовый цвет фона, достаточно написать следующий код:

Form.BackColor = QBColor(3)


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 11. Использование графики.

Visual Basic 6 обладает настолько богатыми возможностями использования графики, что одной главы для их изучения недостаточно. Этому вопросу можно посвятить целую книгу. В данной главе мы постараемся познакомить вас с основами работы с графикой в Visual Basic 6.

Графика в приложениях применяется для того, чтобы сделать интерфейс пользователя более совершенным, интуитивно понятным и, конечно, красивым. Качество оформления интерфейса имеет большое значение для коммерческого успеха приложения, и графика играет в этом не последнюю роль. Поэтому необходимо заранее уточнить, что графику мы будем рассматривать не как средство создания мультфильмов или видеоклипов, а как средство улучшения и украшения интерфейса.

При помощи графики в Visual Basic 6 можно выполнять следующие основные действия:

  • группировать и выделять информацию в формах, используя линии, рамки, фреймы;
  • дополнять информацию графическими изображениями;
  • улучшать интерфейс, дополнять его анимацией.

Совет

Используя графику в приложениях, необходимо сохранять чувство меры. Графика должна лишь дополнять и подчеркивать значимую информацию в формах приложения, но не загромождать формы и не отвлекать от их информационного содержания.

Для работы с графикой и изображениями в Visual Basic 6 используются графические объекты и графические методы. Существуют следующие возможности:

  • добавление и работа с изображением в форме;
  • использование элемента управления picture;
  • использование элемента управления image.

Вышеуказанные объекты дают возможность работать с изображениями, причем как в режиме разработки (Design Time), так и в режиме выполнения (Run Time) программы.

Простые элементы управления для работы с графикой

На панели элементов управления имеются кнопки, позволяющие создавать в форме простые элементы графики:

Кнопка | Название | Назначение
 | Line (Линия) | Создает в форме линию
 | Shape (Контур) | Создает в форме контуры
 | Frame (Рамка) | Размещает в форме рамку, позволяющую объединить объекты в группу

Элемент управления Line

Элемент управления Line — это линия, имеющая по умолчанию толщину 1. Для изменения вида линии используется свойство BorderStyle объекта Line. Оно может принимать следующие значения:

  • 0-Transparent — невидимая линия;
  • 1-Solid — сплошная линия;
  • 2-Dash — штриховая линия;
  • 3-Dot — пунктирная линия;
  • 4-Dash-Dot — штрихпунктирная линия;
  • 5-Dash-Dot-Dot — штрихпунктир с двойным штрихом;
  • 6-Inside Solid — непрерывная линия.

На рис. 11.1 показаны типы линии в зависимости от значения свойства BorderStyle.

Толщину линии можно задать с помощью свойства Borderwidth. Цвет линии задается свойством BorderColor.

Замечание

Более подробно элемент управления Line был рассмотрен нами в главе 8.

Рис. 11.1. Элемент управления Line

Элемент управления Shape

Для создания рамок различной формы используется элемент управления Shape (рис. 11.2). Он является только графическим контейнером обведенных элементов управления, но не контейнером в настоящем смысле этого слова. При этом форма рамки задается свойством shape объекта shape и может быть следующей:

  • 0-RectangIe — прямоугольник;
  • 1-Square — квадрат;
  • 2-Oval — эллипс;
  • 3-Circle — круг;
  • 4-Rounded Rectangle — прямоугольник с закругленными углами;
  • 5-Rounded Square — квадрат с закругленными углами.

Рис. 11.2. Элемент управления Shape

При этом для элемента управления shape, как и для Line, можно установить тип линии рамки, ее толщину и цвет.

Замечание

Более подробно элемент управления shape был рассмотрен нами в главе 8.

Элемент управления Frame

Элемент управления Frame имеет вид рамки с заголовком (рис. 11.3). Заголовок, размещаемый в рамке, задается свойством caption. Если вы не хотите, чтобы объект Frame содержал заголовок, установите для значения этого свойства пустую строку.

Объект Frame является полноценным контейнером и управляет общими свойствами объектов, помещенных в рамку. Если, например, сделать Frame невидимым, присвоив свойству visible значение False, то все объекты в рамке тоже станут невидимыми. Используя это свойство объекта Frame, и учитывая, что оно переопределяется и в режиме выполнения приложения, можно организовать, например, многостраничный ввод данных.

Свойство BorderStyle элемента управления Frame задает тип линии рамки и принимает одно из следующих значений:

  • 0-None — без рамки;
  • 1-Fixed Single — сплошная тонкая линия.

При установке для свойства BorderStyle значения 0-None рамка будет отсутствовать, а соответственно, не будет и заголовка рамки.

Рис. 11.3. Элемент управления Frame

Объекту Frame можно придать объемный вид, установив для свойства Appearance значение 1-3D. Если установить значение 0-Flat, то объект принимает плоский вид (рис. 11.3).

Для объекта Frame можно установить разные цвета для фона и заголовка рамки, используя свойства BackColor и ForeColor, соответственно.

Замечание

Более подробно элемент управления Frame был рассмотрен нами в главе 8.

Свойство Picture

Чтобы разместить в форме графическое изображение, не обязательно выбирать графические объекты. Можно просто воспользоваться свойством picture формы. Для вставки графического изображения в форму необходимо нажать

кнопку с тремя точками в свойстве picture, а затем в открывшемся диалоговом окне Load Picture (Загрузить изображение) (рис. 11.4) выбрать файл требуемого изображения.

Данное свойство формы используют для размещения фонового изображения. При этом необходимо учесть, что размер формы должен соответствовать размеру исходного изображения. Если изображение меньше формы, то оно размещается в левом верхнем углу формы и в дальнейшем не перемещается. Поэтому такой способ хотя и прост, но очень неудобен.

Рис. 11.4. Диалоговое окно Load Picture поиска изображения для свойства Picture

Свойство picture доступно и в режиме выполнения приложения. Простым присвоением можно заменить или убрать изображение из формы.

Объекты для работы с изображениями

Для размещения в форме графических изображений используются объекты image и picture. Им соответствуют следующие значки на панели элементов управления:

Значок | Название | Создаваемый объект
 | Image | Image
 | PictureBox | Picture

Однако в качестве изображений, помещаемых в эти объекты, можно использовать только файлы определенных типов. Допустимые типы файлов изображений представлены в табл. 11.1.

Таблица 11.1. Допустимые типы файлов изображений для графических объектов
Описание файла | Тип файла (расширение)
Битовый растровый файл | bmp
Независимый растровый файл | dib
Файл значка | ico,cur
Метафайл | wmf
Расширенный метафайл | emf
Растровый файл | gif
Растровый сжатый файл | jpg, Jpeg

Изображение размещается в объекте image так же, как объект в форме, то есть при помощи свойства picture. Однако в отличие от размещения изображения непосредственно в форме, изображение в объекте image пропорционально изменяет свои размеры.

Изменением размера управляет свойство Stretch. Если это свойство имеет значение False, то объект image принимает размеры в соответствии с размером изображения. Если значение равно True, то размеры изображения изменяются в соответствии с размерами объекта.

В отличие от image, элемент управления picture может работать как полноценный контейнер. Он может содержать другие элементы управления, в нем можно рисовать, используя графические методы Line, circle, point, pset, или выводить текст, используя метод print.

Элемент управления picture обладает свойством visible. При этом все изображения, помещенные в picture, становятся видимыми или невидимыми в зависимости от установленного значения этого свойства. При помощи объекта picture можно организовать простую анимацию, используя метод PaintPicture.

Изображение в элемент управления picture загружается полностью. При этом если оно больше размеров picture, то видна только часть изображения, если меньше, — то изображение размещается в левом верхнем углу. Если установить для свойства AutoSize объекта picture значение True, то изображение будет пропорционально вписываться в объект picture.

Задание изображений

Как уже говорилось, определить графическое изображение в приложении можно как в режиме проектирования (режим Design Time), так и в режиме выполнения (режим Run Time).

Чтобы задать графическое изображение в режиме проектирования, используется свойство picture объекта. Для этого необходимо выполнить следующие действия:

1. Открыть окно Properties объекта.

2. Выбрать свойство picture.

3. Нажать кнопку с тремя точками в правом столбце свойства.

4. В открывшемся диалоговом окне Load Picture найти требуемый файл.

5. Дважды щелкнуть на файле мышью или установить на него курсор и нажать кнопку Открыть.

В режиме выполнения программы существует больше возможностей для определения изображения объекта. Изображение можно задать следующими способами:

  • загрузить изображение при помощи функции Loadpicture с указанием файла изображения. При этом изображение помещается в свойство picture объекта. Например, Object.Picture = LoadPicture("С:\...\Картинка.Ьтр)
  • загрузить изображение из ресурсного файла приложения при помощи функции LoadRespicture с указанием идентификатора ресурса и его типа: Set Object.Picture = LoadResPicture(Resident, vbResBitMap)
  • скопировать изображение из одного объекта в другой с помощью обычного присвоения: ObjectTo.Picture = ObjectFrom.Picture.
  • Скопировать изображение из объекта clipboard.

Удаление изображений

Удаляется изображение из объекта очень просто. Для этого необходимо воспользоваться загрузкой в свойство Picture пустого значения:

Set Объект.Picture = LoadPicture("")

При этом изображение удаляется из объекта.

Графические методы

В дополнение к графическим элементам управления в Visual Basic 6 существует набор графических методов:

Метод | Назначение
Circle | Рисует окружность, дугу или эллипс
CIs | Очищает область вывода
Line | Рисует линии
PaintPicture | Рисует (загружает) изображение
Point | Возвращает цвет точки
Print | Выводит текст
Pset | Размещает точку

Замечание

Необходимо отметить, что метод Print предназначен для вывода текста и к графике имеет косвенное отношение. Тем не менее, мы рассмотрим его вместе с графическими методами, поскольку он используется совместно с другими методами графики для "рисования" текста в указанном объекте или совмещения текста и чистой графики.

В графических методах используются функции вычисления цвета RGB и QBColor. Рассмотрим сначала эти функции.

Функции цвета

Функция RGB возвращает числовое представление цвета (тип возвращаемого значения при этом long) в соответствии с интенсивностью трех цветовых составляющих: R (Red— красный), G (Green — зеленый) и В (Blue — синий). Интенсивность этих трех основных цветов задается шкалой чисел от О до 255. Синтаксис этой функции такой:

RGB (Red, Green, Blue)

где:

  • Red — интенсивность красного цвета от 0 до 255;
  • Green — интенсивность зеленого цвета от 0 до 255;
  • Blue — интенсивность синего цвета от 0 до 255.

Для примера в табл. 11.2 показаны часто используемые цвета, разложенные по интенсивностям RGB-цветов.

Таблица 11.2. Цвета в RGB-представлении
Цвет | Интенсивность красного | Интенсивность зеленого | Интенсивность синего
Черный | 0 | 0 | 0
Белый | 255 | 255 | 255
Красный | 255 | 0 | 0
Зеленый | 0 | 255 | 0
Синий | 0 | 0 | 255
Бирюзовый | 0 | 255 | 255
Пурпурный | 255 | 0 | 255
Желтый | 255 | 255 | 0
Серый | 192 | 192 | 192

Например, если вы хотите сделать фон формы бирюзовым, необходимо присвоить свойству BackColor формы следующее значение:

Form.BackColor = RGB (0,255,255)

Для удобства работы со стандартными цветами используется функция QBColor, которая возвращает числовое представление одного из 16 цветов, показанных в табл. 11.3.

Таблица 11.3. Цвета, возвращаемые функцией QBColor
Номер цвета | Цвет
0 | Черный
1 | Синий
2 | Зеленый
3 | Бирюзовый
4 | Красный
5 | Пурпурный
6 | Желтый
7 | Белый
8 | Серый
9 | Светло-синий (голубой)
10 | Светло-зеленый (салатный)
11 | Светло-бирюзовый
12 | Светло-красный (алый)
13 | Светло-пурпурный
14 | Светло-желтый
15 | Ярко-белый

Синтаксис этой функции выглядит очень просто:

QBColor (NumberColor)

где NumberColor — числовое значение (номер цвета), определяющее цвет (табл. 11.3).

Для того чтобы установить для формы бирюзовый цвет фона, достаточно написать следующий код:

Form.BackColor = QBColor(3)

Графические методы

Рассмотрим синтаксис графических методов.

Метод Circle

Метод circle используется следующим образом:

object.Circle [Step] (x, у), radius, [color, start, end, aspect]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку центра окружности, дуги или эллипса к координатам, возвращаемым свойствами currentx и currentY объекта;
  • х, у — числа, определяющие координаты центра окружности, дуги или эллипса в единицах свойства scaleMode объекта;
  • radius — число, определяющее радиус окружности, дуги или эллипса в единицах свойства ScaleMode объекта;
  • color — значение типа Long, задающее цвет линии. Если параметр не указан, применяется значение свойства ForeColor. Для задания цвета можно использовать функции RGB () или QBColor;
  • start, end — при рисовании дуги или части эллипса задает позицию начала и конца дуги в радианах: от 2 пи до -2 пи радиан;
  • aspect — задает коэффициент "эллиптичности" окружности. По умолчанию этот коэффициент равен 1.0, что соответствует окружности.

Метод Сls

С помощью метода Cls можно очистить форму или объект picture от текста и графики, созданных в нем программно. Синтаксис метода cis очень простой и выглядит так:

object.Cls

где object — объект, в котором применяется метод. Если параметр не указан, то по умолчанию используется форма.

Замечание

Необходимо помнить, что при применении этого метода свойства CurrentX и CurrentY выбранного объекта устанавливаются в 0.

Метод Line

Метод Line предназначен для рисования линий и имеет следующий синтаксис:

object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B] [F]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку начала линии к координатам, возвращаемым свойствами CurrentX и CurrentY объекта;
  • x1, y1 — координаты начала линии. При отсутствии этих параметров начало привязывается к значениям свойств CurrentX и CurrentY объекта;
  • step — ключ, определяющий привязку координат конца линии к началу, то есть координаты конца заданы относительно координат начала линии;
  • x2, y2 — координаты конца линии;
  • color — задает цвет линии в палитре RGB. Если параметр не указан, то используется свойство ForeColor объекта;
  • в — задает рисование прямоугольника, при этом координаты означают координаты левого верхнего и правого нижнего углов;
  • F— задает заполнение прямоугольника цветом линии рисования.

Метод PamtPicture

Метод paintpicture рисует (загружает) содержимое графических файлов имеющих расширение bmp, wmf, emf, cur, ico или dib, в формах или объектах типа picture. Метод имеет следующий синтаксис:

object.PaintPicture picture, xl, yl, width1, height1, x2, y2, width2, height2, opcode

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • picture — исходное изображение, которое будет размещено в объекте. Это должна быть ссылка на свойство picture данного или другого объекта;
  • xl, yl — координаты левого верхнего угла области объекта для размещения исходного изображения;
  • widthi, heightl— размер (ширина-и высота) области размещения исходного изображения.. Если размер области отличается от размера исходного изображения, то изображение пропорционально растягивается или сжимается;
  • х2, y2 — координаты левого верхнего угла в исходном изображении для вставки в объект. Если заданы координаты, отличные от нуля, то будет вставлена часть исходного изображения;
  • width2, height2 — размер (ширина и высота) вставляемой части исходного изображения;
  • opcode — устанавливает режим вставки изображения при помощи констант из набора RasterOp (табл. 11.4). Задается только для работы с изображениями, имеющими расширение bmp.

Для работы метода с изображениями, имеющими расширение BMP, необходимо использовать константы из набора RasterOp для установки режима вставки изображения. Эти константы описаны в табл. 11.4.

При помощи отрицательных значений ширины (widthi) и высоты (heightl) можно перевернуть изображение вертикально или горизонтально.

Таблица 11.4. Набор констант RasterOp для метода PaintPicture
Константа | Значение | Описание
vbDstInvert | &H00550009 | Инвертирует указанное изображение
vbMergeCopy | &HOOCOOOCA | Объединяет рисунок и изображение-источник
vbMe где Paint | &HOOBB0226 | Объединяет инвертированное изображение источника с указанным изображением, используя оператор Or
vbNotSrcCopy | &H00330008 | Копирует инвертированное изображение-источник в указанное изображение
vbNotSrcEraae | &H001100A6 | Инвертирует результат объединения указанного изображения и изображения-источника, используя оператор Or
vbPatCopy | &HOOF00021L | Копирует рисунок в указанное изображение
vbPatInvert | &H005A0049L | Объединяет указанное изображение с рисунком, используя оператор Xог
vbPatPaint | &HOOFBOA09L | Объединяет инвертированное изображение источника с рисунком, используя оператор Or. Объединяет результирующее выражение в этой операции с указанным изображением с помощью оператора Or
vbSrcAnd | &H008800C6 | Объединяет пикселы указанного изображения источника, используя оператор And
vbSrcCopy | &HOOCC0020 | Копирует изображение-источник в указанное изображение
vbSrcErase | &H00440328 | Инвертирует указанное изображение и объединяет результат с изображением-источником с помощью оператора And
vbSrcInvert | &H00660046 | Объединяет пикселы указанного изображения и изображения-источника, используя оператор Хог
vbSrcPaint | &HOOEE0086 | Объединяет пикселы указанного изображения и изображения-источника с помощью оператора Or

Метод Point

Метод point возвращает цвет в палитре RGB указанной точки в форме или на объектах типа pictureBox. Синтаксис этого метода следующий:

object.Point (x, у)

где:

  • object — объект, в котором используется метод;
  • x, у — координаты точки в объекте.

    Замечание

    Необходимо иметь в виду, что в случае "выпадения" точки из границ формы или объекта Picture (то есть когда координаты больше размера объекта) метод возвращает отрицательное значение -1.

Метод Print

Метод print выводит (печатает) текст в указанный объект или окно Immediate. Синтаксис этого метода следующий:

object.Print [outputList]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • outputList — строковое выражение или список выражений, выводимых в объекте.

Список вывода outputList имеет определенный синтаксис. Этот список задается следующим образом:

(Spc(n) I Tab(n)} expression charpos

где:

  • spc(n) — вставляет в выводимый текст количество пробелов, задаваемое числом п,
  • Tab(n) — задает позицию точки начала вставки;
  • expression — числовое или строковое выражение для вывода;
  • charpos — задает позицию вставки.

Итак, при использовании синтаксиса метода print не указываются шрифт, его цвет, координаты вывода текста. Эти параметры вывода текста определяются следующими свойствами объекта, в который выводится текст:

  • currentx — координата начала текста по горизонтальной оси;
  • CurrentY — координата начала текста по вертикальной оси;
  • Font — шрифт и размер выводимого текста;
  • FontTransparent — прозрачность текста, то есть свойство, при котором сквозь текст виден фон объекта;
  • ForeColor — цвет.

Метод Pset

Метод Pset назначает цвет указанной точки объекта. Этот метод является обратным методу point. Синтаксис этого метода следующий:

object.Pset [Step] (x, у), [color]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • Step — ключ, определяющий привязку координат точки к координатам, возвращаемым свойствами Currentx и currentY объекта;
  • х, у — координаты точки на объекте;
  • color — цвет точки в палитре RGB. Если параметр не указан, то используется свойство Forecoior объекта.

При использовании метода pset необходимо иметь в виду, что размер точки определяется толщиной объекта, то есть свойством объекта DrawWidth. Для толщины 1 это один пиксел, для толщины больше единицы — это область объекта с центром, имеющим указанные координаты. Способ рисования точки при этом определяется свойствами объекта DrawMode и DrowStyle.

Работа со шрифтами

Шрифт, используемый в объекте, определяется свойством объекта Font. В свою очередь, свойство Font также является объектом со своим набором свойств. Диалоговое окно назначения этих свойства показано на рис. 11.5.

Рис. 11.5. Диалоговое окно установки свойств шрифта

В диалоговом окне Font (Шрифт) можно назначить следующие свойства шрифта:

  • Bold — назначает полужирный шрифт (bold);
  • italic — устанавливает курсив (italic);
  • Strikethrough — применяет эффект перечеркивания (strikcthrough);
  • underline — устанавливает подчеркивание (underline);
  • Name — выбирает наименование шрифта (строковый идентификатор шрифта, например Arial);
  • size — назначает размер шрифта.

Для установки наименования шрифта используется список Шрифт диалогового окна. Чтобы установить начертание (полужирный, курсив, обычный), используется список Начертание. Размер шрифта можно установить в поле Размер вручную или выбрать значение из списка размеров. Для установки атрибутов зачеркнутый и подчеркнутый, необходимо использовать флажки Зачеркнутый и Подчеркнутый. Таблица кодировки набора символов назначается в раскрывающемся списке Набор символов.

Управление цветом

Управление цветом формы и элементов управления можно организовать, используя свойства ForeColor и BackColor. Свойство ForeCoior задает цвет текста, а BackColor устанавливает цвет фона.

В режиме проектирования приложения эти свойства можно установить в окне Properties (Свойства) объекта (рис. 11.6), вызвав диалоговое окно настройки цвета. Для этого необходимо выделить настраиваемое свойство и нажать на кнопку со стрелкой в правом столбце свойства. Как видно из рисунка, это диалоговое окно состоит из двух вкладок: Palette (Палитра) и System (Системные). На вкладке Palette можно установить произвольные цвета из палитры, на вкладке System можно выбрать цвет из списка цветовой схемы Windows, которая устанавливается в панели управления Windows вызовом окна настройки Свойства: Display. При использовании цветовой схемы необходимо иметь в виду, что при изменении настройки цветовой схемы Windows соответственно изменятся и цвета приложения.

Рис. 11.6. Диалоговое окно настройки цветов объекта

В режиме выполнения приложения свойства ForeColor и BackColor можно установить простым присвоением, используя функции цвета или встроенные константы Visual Basic 6, представленные в табл. 11.5.

Таблица 11.5. Набор констант Visual Basic 6 для управления цветом
Константа | Значение | Описание цвета
vbBlack | &HO | Черный
vbRed | &HFF | Красный
vbGreen | &HFFOO | Зеленый
vbYellow | &HFFFF | Желтый
vbBlue | &HFFOOOO | Голубой
vbMagenta | &HFFOOFF | Пурпурный
vbCyan | &HFFFFOO | Бирюзовый
vbWhite | &HFFFFFF | Белый

Анимационная графика

Анимационную графику будем рассматривать как средство для внесения разнообразия и привлекательности в пользовательский интерфейс. Примером такой анимации может служить процесс копирования файлов в системе Windows, когда на экране отображается живая картинка переноса листов из папки в папку. Не занимая больших ресурсов, анимация в таком исполнении делает интерфейс приложения более привлекательным, а в конечном итоге более конкурентоспособным и само приложение.

В этом разделе мы рассмотрим некоторые варианты простой анимации, а именно, смену и перемещение изображений. В примерах приложений используется массив элементов управления, поэтому предварительно изучим, что представляет собой такой массив, и как его создать при проектировании приложения.

Массив элементов управления

Массив элементов управления представляет собой группу элементов управления одного типа, которые идентифицируются по одному и тому же имени и индексу. Индекс действует аналогично обычному массиву, как, например, в массиве чисел. Каждый из элементов массива характеризуется свойством Name, имеющим одно и то же значение для всех элементов. Все они относятся к одному типу. Идентифицируются элементы такого массива с помощью свойства index.

Массив элементов управления создается при проектировании приложения. Для создания массива существуют следующие основные способы:

  • созданный элемент управления дублируется при помощи команд Copy (Копировать) и Paste (Вставить) меню Edit (Правка);
  • создаются элементы управления одного типа по отдельности, а затем им присваивается одно и то же имя в свойстве Name и соответствующее значение индекса в свойстве index.

    Замечание

    В обоих случаях свойство index поддерживается автоматически при положительном ответе на вопрос о добавлении элемента управления в массив.

Переключение изображений

Самый простой способ анимации — переключение изображений. Рассмотрим это на примере. Создайте небольшое приложение, выполнив следующие действия:

1. Создайте новый стандартный проект. С этой целью выберите команду New Project (Создать новый проект) в меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphics. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphics Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandBution, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbcontrol и присвойте свойству Caption значение Изменить состояние. Созданная в форме кнопка cbcontrol будет служить для переключения изображений, выполняемых приложением MyGraphics по событию click этой кнопки.

5. Добавьте в форму три элемента управления типа picture и назовите их picRed, picYellow и picGreen. Вставьте В СВОЙСТВО Picture каждого объекта соответствующие цветам изображения светофора из каталога \Common\Graphics\Icons\Trafric. Свойство visible для всех трех элементов управления установите в состояние False.

6. Добавьте в форму объект типа image, в котором будет переключаться изображение, и назовите его imgStatus, при этом свойство picture этого объекта оставьте пустым. Свойство visible для данного элемента управления установите в состояние True.

После выполнения приведенных выше шагов форма приложения будет иметь вид, показанный на рис. 11.7.

Рис. 11.7. Вид приложения для переключения изображений

7. Откроите окно редактора и задайте следующий код:

Dim fIgEnd As Integer

Private Sub Form_Load()

fIgEnd = 0

imgStatus.Picture = picRed.Picture

FormForGraphics-Caption = "Светофор"

End Sub

Private Sub cbControl_Click ()

If imgStatus.Picture = picRed.Picture Then

imgStatus.Picture = picYellow.Picture

Elself imgStatus.Picture = picYellow.Picture Then

imgStatus.Picture = picGreen.Picture

Else

imgStatus.Picture = picGreen.Picture

fIgEnd = 1

End If

If imgStatus.Picture = picGreen.Picture And fIgEnd = 1 Then

imgStatus.Picture = picRed.Picture

fIgEnd = 0

End If

End Sub

8. Запустите приложение на выполнение. Нажатием кнопки Изменить состояние осуществляется последовательное переключение состояния светофора с помощью присвоения свойству picture объекта imgStatus нового значения.

В этом приложении показана возможность переключения изображений из набора отдельных объектов, в которых эти изображения содержатся. Однако для хранения необходимых изображений предпочтительнее использовать массивы элементов управления или объекта imageList.

Перемещение и переключение изображений

Перемещая и переключая изображения, можно организовать несложную анимацию. Чаще всего этот способ используется для анимации процессов ожидания или расчета, "оживления" изображений в формах приложения.

Для изучения перемещения и переключения изображений создадим небольшой проект MyGraphicsDay. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphicsDay. Откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphicsDay Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandButton, дважды щелкнув мышью кнопку ComniandBiitton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству Caption значение Старт. Созданная в форме кнопка cbRun будет служить для запуска действий, выполняемых приложением MyGraphicsDay по событию click этой кнопки.

5. Добавьте в форму FomForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству caption значение Стоп. Эта кнопка будет служить для останова анимации и возврата приложения в исходное состояние.

6. При анимации, даже самой простой, требуется организовать изменение объектов во времени. Для задания отсчета интервалов времени служит объект типа таймер Timer. Добавьте его в форму с помощью кнопки

Timer на панели элементов управления. Этот объект будет вырабатывать управляющие сообщения для анимации. Используя свойство Name, присвойте таймеру имя tmrGraphicsTimer. При запуске приложения таймер невидим, поэтому о свойстве visible для этого объекта можно не задумываться. Свойство таймера Enabled установите в состояние False, а свойству interval присвойте значение 200.

Замечание

Более подробную информацию об объекте Timer вы можете найти в главе 8. Здесь лишь кратко напомним следующее. Таймер отсчитывает интервалы времени в миллисекундах, отрабатывая событие Timer. При этом минимальный интервал отсчета времени составляет 1, а максимальный — 65 535 миллисекунд, то есть максимально таймер может работать с интервалом чуть больше 1 минуты. Основные свойства объекта Timer — interval и Enabled. Свойство Interval определяет интервал отработки события Timer, свойство Enabled запускает или останавливает таймер. Если Enabled установлено в состояние True, таймер начинает отрабатывать событие Timer, если в состояние False — таймер находится в состоянии ожидания. При этом таймер с установленным при проектировании свойством Enabled в состояние True запускается сразу же после загрузки формы, в которой он находится.

7. Добавьте в форму элемент управления image. Назовите его imgSunMoon.

8. Добавьте в форму массив элементов управления типа Picture, состоящий из двух элементов. Для создания массива воспользуйтесь любым удобным для вас способом. Например, разместите в форме объект picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Затем скопируйте объект и вставьте его копию в форму. Объектам массива присвойте имя picSunMoon. В элемент массива, индекс которого равен 0 (свойство index), введите изображение солнца. В элемент массива, индекс которого равен 1, введите изображение месяца. Свойство visible для элементов массива установите в состояние False.

Полученное приложение показано на рис. 11.8.

Рис. 11.8. Вид приложения MyGraphicsDay

9. Откройте окно редактора и разместите в нем указанный ниже код:

Dim xAdd As Integer

Dim yAdd As Integer

Dim figSunMoon As Integer

Private Sub Form Load()

' "Смена дня и ночи"

xAdd = 100

yAdd = -100

figSunMoon = 1

xScaleSunMoon = ImgSunMoon.Width

FormForGraphics.Caption = "Смена дня и ночи"

End Sub

Private Sub cbRun_Click()

tmrGraphicsTimer.Enabled = True

xAdd = 100

yAdd = -100

figSunMoon = 1

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub cbStop_Click()

tmrGraphicsTimer.Enabled = False

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub tmrGraphicsTimer Timer()

ImgSunMoon.Left = ImgSunMoon.Left + xAdd

ImgSunMoon.Top = ImgSunMoon.Top + yAdd

If ImgSunMoon.Left > FormForGraphics.ScaleWidth / 2 — xScaleSunMoon / 2 And figSunMoon = 1 Then

yAdd = 100

End If

If ImgSunMoon.Left < FormForGraphics.ScaleWidth / 2 -xScaleSunMoon / 2 And figSunMoon = 0 Then

yAdd = 100

End If

If ImgSunMoon.Left > FormForGraphics.ScaleWidth Then

yAdd = -100

xAdd = -100

figSunMoon = 0

ImgSunMoon.Picture = PicSunMoon(1).Picture

ImgSunMoon.Left = FormForGraphics.ScaleWidth — 500

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

End If

If ImgSunMoon.Left < xScaleSunMoon / 2 And figSunMoon = 0 Then

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

tmrGraphicsTimer.Enabled = False

End If

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Старт объект, напоминающий солнце, перемещается по форме и при достижении правого нижнего угла меняет изображение, после чего возвращается в исходную точку (рис. 11.9). Нажатие кнопки Стоп переводит приложение в исходное состояние.

Рис. 11.9. Вид приложения MyGraphicsDay при запуске

Совмещение изображения и текста

Иногда возникает необходимость совместить текст и изображение в объектах приложения. Для этого используется метод print, позволяющий выводить текст на объекте. Рассмотрим, как этот метод применяется на практике. Для создания приложения выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphObjects. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project I) из меню Project (Проект). После переименования проекта эта команда будет выглядеть как MyGraphObjects Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Графические формы и методы.

4. Добавьте в форму кнопку управления типа conmandButton, дважды щелкнув мышью кнопку CommandButton ДЦ на панели элементов управления. Назовите эту кнопку cbstart и присвойте свойству caption значение Выполнить. Созданная в форме кнопка cbstart будет служить для отображения текста на графическом объекте по событию click этой кнопки.

5. Переименуйте форму проекта Formi в FormForGraphics и в свойство Caption введите заголовок окна Графические формы и методы.

6. Добавьте в форму элемент управления типа picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Назовите этот объект picpicture. В свойство picture объекта вставьте графическое изображение светофора из каталога \Common\Graphics\Icons\Traffic.

7. Введите в окно редактора небольшой код, указанный ниже:

Private Sub cbStart_Click()

picPicture.Print "Светофор" End Sub

8. Запустите приложение на выполнение. Нажмите кнопку Выполнить. На изображении появится надпись "Светофор" (рис. 11.10).

Рис. 11.10. Приложение с совмещением изображения и текста в режиме выполнения

Рис. 11.11. Приложение с назначением координат для текста

Можно поместить надпись под рисунком, указав координаты точки начала надписи на изображении (рис. 11.11). В этом случае введите в окно редактора следующий код:

Private Sub cbStart_Click()

picPicture.CurrentX = 100

picPicture.CurrentY = 400

picPicture.Print "Светофор"

End Sub

Элемент управления Animation

Элемент управления Animation позволяет использовать при анимации видеофайлы — специально подготовленные файлы с расширением avi, представляющие собой последовательный набор кадров (растровых изображений).

Для использования элемента управления Animation необходимо подключить к проекту библиотеку Microsoft Windows Common Control-2 6.0. После подключения этой библиотеки кпроекту на панели элементов управления появляется кнопка Animation. Вид элемента управления Animation, размещенного в форме, показан на рис. 11.12.

Рис. 11.12. Вид элемента управления Animation при проектировании приложения

Замечание

Следует еще раз обратить внимание на то, что для применения элемента управления Animation требуется видеофайл. В своем примере мы воспользуемся видеофайлом из каталога \Common\Graphics\Videos.

Основные методы элемента управления Animation, которые позволяют организовать просмотр видеофайлов, следующие:

Метод | Назначение
Open | Открывает видеофайл
Play | Запускает видеофайл на выполнение
Stop | Останавливает видеофайл
Close | Закрывает видеофайл

Метод play может иметь дополнительные аргументы:

  • Repeat — задает количество повторов просмотра видеофайла
  • Start — задает начальный кадр
  • Stop — задает последний кадр

Для изучения элемента управления Animation создадим приложение MyVideoAnimation. Выполните следующие действия:

1. Создайте новый стандартный проект. Выберите команду New Project (Создать новый проект) меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyVideoAnimation. Для этого откроите окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет именоваться MyVideoAnimation Properties.

3. Присвойте форме проекта имя FormVideoAnimation. В свойство Caption формы введите заголовок Просмотр видеофайлов.

4. Подключите к проекту две библиотеки: Microsoft Common Dialog Control 6.0 и Microsoft Windows Common Control-2 6.0. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в открывшемся диалоговом окне установите соответствующие именам библиотек флажки.

Замечание

Библиотеку Microsoft Common Dialog Control 6.0 подключаем для создания в форме диалогового окна поиска видеофайлов на диске.

5. Добавьте в форму кнопку управления типа CommandButton, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству caption значение Просмотр видеофайла. Созданная в форме кнопка cbRun предназначена для запуска видеофайла на просмотр по событию click этой кнопки.

6. Добавьте в форму FormForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству Caption значение Стоп. Эта кнопка будет служить для останова просмотра видеофайла.

7. Добавьте в форму элемент управления Animation, дважды щелкнув мышью кнопку Animation на панели элементов управления. Назовите его

anivideo.

8. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку Common Dialog на панели элементов управления. Назовите созданный объект cdvideo. Вид созданного проекта показан на рис. 11.13.

9. Откройте окно редактора и введите следующий код:

Private Sub cbRun_Click()

cdvideo.Filter = "avi files (*.avi)¦*.avi"

cdVideo.ShowOpen

anivideo.Open cdVideo.FileName

anivideo.Play

End Sub

Private Sub cbStop_Click()

anivideo.Stop

End Sub

Private Sub Form Unload(Cancel As Integer)

anivideo.Close

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Просмотр видеофайла открывается диалоговое окно Открытие файла, позволяющее найти видеофайл. Найдите требуемый файл и нажмите кнопку Открыть. Видеофайл запускается на просмотр (рис. 11.14). Остановить просмотр можно нажатием кнопки Стоп.

Замечание

Для диалогового окна Открытие файла установлено свойство Filter, чтобы осуществить фильтрацию файлов с расширением avi.

Если метод play в этом примере использовать в следующем виде:

aniVideo.Play 3, 5, 10 то три раза будут прокручены кадры с 5 по 10.

Рис. 11.13. Вид приложения для просмотра видеофайлов

Рис. 11.14. Просмотр видеофайла в форме


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Circle

Метод circle используется следующим образом:

object.Circle [Step] (x, у), radius, [color, start, end, aspect]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку центра окружности, дуги или эллипса к координатам, возвращаемым свойствами currentx и currentY объекта;
  • х, у — числа, определяющие координаты центра окружности, дуги или эллипса в единицах свойства scaleMode объекта;
  • radius — число, определяющее радиус окружности, дуги или эллипса в единицах свойства ScaleMode объекта;
  • color — значение типа Long, задающее цвет линии. Если параметр не указан, применяется значение свойства ForeColor. Для задания цвета можно использовать функции RGB () или QBColor;
  • start, end — при рисовании дуги или части эллипса задает позицию начала и конца дуги в радианах: от 2 пи до -2 пи радиан;
  • aspect — задает коэффициент "эллиптичности" окружности. По умолчанию этот коэффициент равен 1.0, что соответствует окружности.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Сls

С помощью метода Cls можно очистить форму или объект picture от текста и графики, созданных в нем программно. Синтаксис метода cis очень простой и выглядит так:

object.Cls

где object — объект, в котором применяется метод. Если параметр не указан, то по умолчанию используется форма.

Замечание

Необходимо помнить, что при применении этого метода свойства CurrentX и CurrentY выбранного объекта устанавливаются в 0.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Line

Метод Line предназначен для рисования линий и имеет следующий синтаксис:

object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B] [F]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку начала линии к координатам, возвращаемым свойствами CurrentX и CurrentY объекта;
  • x1, y1 — координаты начала линии. При отсутствии этих параметров начало привязывается к значениям свойств CurrentX и CurrentY объекта;
  • step — ключ, определяющий привязку координат конца линии к началу, то есть координаты конца заданы относительно координат начала линии;
  • x2, y2 — координаты конца линии;
  • color — задает цвет линии в палитре RGB. Если параметр не указан, то используется свойство ForeColor объекта;
  • в — задает рисование прямоугольника, при этом координаты означают координаты левого верхнего и правого нижнего углов;
  • F— задает заполнение прямоугольника цветом линии рисования.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод PamtPicture

Метод paintpicture рисует (загружает) содержимое графических файлов имеющих расширение bmp, wmf, emf, cur, ico или dib, в формах или объектах типа picture. Метод имеет следующий синтаксис:

object.PaintPicture picture, xl, yl, width1, height1, x2, y2, width2, height2, opcode

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • picture — исходное изображение, которое будет размещено в объекте. Это должна быть ссылка на свойство picture данного или другого объекта;
  • xl, yl — координаты левого верхнего угла области объекта для размещения исходного изображения;
  • widthi, heightl— размер (ширина-и высота) области размещения исходного изображения.. Если размер области отличается от размера исходного изображения, то изображение пропорционально растягивается или сжимается;
  • х2, y2 — координаты левого верхнего угла в исходном изображении для вставки в объект. Если заданы координаты, отличные от нуля, то будет вставлена часть исходного изображения;
  • width2, height2 — размер (ширина и высота) вставляемой части исходного изображения;
  • opcode — устанавливает режим вставки изображения при помощи констант из набора RasterOp (табл. 11.4). Задается только для работы с изображениями, имеющими расширение bmp.

Для работы метода с изображениями, имеющими расширение BMP, необходимо использовать константы из набора RasterOp для установки режима вставки изображения. Эти константы описаны в табл. 11.4.

При помощи отрицательных значений ширины (widthi) и высоты (heightl) можно перевернуть изображение вертикально или горизонтально.

Таблица 11.4. Набор констант RasterOp для метода PaintPicture
Константа | Значение | Описание
vbDstInvert | &H00550009 | Инвертирует указанное изображение
vbMergeCopy | &HOOCOOOCA | Объединяет рисунок и изображение-источник
vbMe где Paint | &HOOBB0226 | Объединяет инвертированное изображение источника с указанным изображением, используя оператор Or
vbNotSrcCopy | &H00330008 | Копирует инвертированное изображение-источник в указанное изображение
vbNotSrcEraae | &H001100A6 | Инвертирует результат объединения указанного изображения и изображения-источника, используя оператор Or
vbPatCopy | &HOOF00021L | Копирует рисунок в указанное изображение
vbPatInvert | &H005A0049L | Объединяет указанное изображение с рисунком, используя оператор Xог
vbPatPaint | &HOOFBOA09L | Объединяет инвертированное изображение источника с рисунком, используя оператор Or. Объединяет результирующее выражение в этой операции с указанным изображением с помощью оператора Or
vbSrcAnd | &H008800C6 | Объединяет пикселы указанного изображения источника, используя оператор And
vbSrcCopy | &HOOCC0020 | Копирует изображение-источник в указанное изображение
vbSrcErase | &H00440328 | Инвертирует указанное изображение и объединяет результат с изображением-источником с помощью оператора And
vbSrcInvert | &H00660046 | Объединяет пикселы указанного изображения и изображения-источника, используя оператор Хог
vbSrcPaint | &HOOEE0086 | Объединяет пикселы указанного изображения и изображения-источника с помощью оператора Or


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Point

Метод point возвращает цвет в палитре RGB указанной точки в форме или на объектах типа pictureBox. Синтаксис этого метода следующий:

object.Point (x, у)

где:

  • object — объект, в котором используется метод;
  • x, у — координаты точки в объекте.

    Замечание

    Необходимо иметь в виду, что в случае "выпадения" точки из границ формы или объекта Picture (то есть когда координаты больше размера объекта) метод возвращает отрицательное значение -1.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Print

Метод print выводит (печатает) текст в указанный объект или окно Immediate. Синтаксис этого метода следующий:

object.Print [outputList]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • outputList — строковое выражение или список выражений, выводимых в объекте.

Список вывода outputList имеет определенный синтаксис. Этот список задается следующим образом:

(Spc(n) I Tab(n)} expression charpos

где:

  • spc(n) — вставляет в выводимый текст количество пробелов, задаваемое числом п,
  • Tab(n) — задает позицию точки начала вставки;
  • expression — числовое или строковое выражение для вывода;
  • charpos — задает позицию вставки.

Итак, при использовании синтаксиса метода print не указываются шрифт, его цвет, координаты вывода текста. Эти параметры вывода текста определяются следующими свойствами объекта, в который выводится текст:

  • currentx — координата начала текста по горизонтальной оси;
  • CurrentY — координата начала текста по вертикальной оси;
  • Font — шрифт и размер выводимого текста;
  • FontTransparent — прозрачность текста, то есть свойство, при котором сквозь текст виден фон объекта;
  • ForeColor — цвет.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод Pset

Метод Pset назначает цвет указанной точки объекта. Этот метод является обратным методу point. Синтаксис этого метода следующий:

object.Pset [Step] (x, у), [color]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • Step — ключ, определяющий привязку координат точки к координатам, возвращаемым свойствами Currentx и currentY объекта;
  • х, у — координаты точки на объекте;
  • color — цвет точки в палитре RGB. Если параметр не указан, то используется свойство Forecoior объекта.

При использовании метода pset необходимо иметь в виду, что размер точки определяется толщиной объекта, то есть свойством объекта DrawWidth. Для толщины 1 это один пиксел, для толщины больше единицы — это область объекта с центром, имеющим указанные координаты. Способ рисования точки при этом определяется свойствами объекта DrawMode и DrowStyle.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа со шрифтами

Шрифт, используемый в объекте, определяется свойством объекта Font. В свою очередь, свойство Font также является объектом со своим набором свойств. Диалоговое окно назначения этих свойства показано на рис. 11.5.

Рис. 11.5. Диалоговое окно установки свойств шрифта

В диалоговом окне Font (Шрифт) можно назначить следующие свойства шрифта:

  • Bold — назначает полужирный шрифт (bold);
  • italic — устанавливает курсив (italic);
  • Strikethrough — применяет эффект перечеркивания (strikcthrough);
  • underline — устанавливает подчеркивание (underline);
  • Name — выбирает наименование шрифта (строковый идентификатор шрифта, например Arial);
  • size — назначает размер шрифта.

Для установки наименования шрифта используется список Шрифт диалогового окна. Чтобы установить начертание (полужирный, курсив, обычный), используется список Начертание. Размер шрифта можно установить в поле Размер вручную или выбрать значение из списка размеров. Для установки атрибутов зачеркнутый и подчеркнутый, необходимо использовать флажки Зачеркнутый и Подчеркнутый. Таблица кодировки набора символов назначается в раскрывающемся списке Набор символов.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Управление цветом

Управление цветом формы и элементов управления можно организовать, используя свойства ForeColor и BackColor. Свойство ForeCoior задает цвет текста, а BackColor устанавливает цвет фона.

В режиме проектирования приложения эти свойства можно установить в окне Properties (Свойства) объекта (рис. 11.6), вызвав диалоговое окно настройки цвета. Для этого необходимо выделить настраиваемое свойство и нажать на кнопку со стрелкой в правом столбце свойства. Как видно из рисунка, это диалоговое окно состоит из двух вкладок: Palette (Палитра) и System (Системные). На вкладке Palette можно установить произвольные цвета из палитры, на вкладке System можно выбрать цвет из списка цветовой схемы Windows, которая устанавливается в панели управления Windows вызовом окна настройки Свойства: Display. При использовании цветовой схемы необходимо иметь в виду, что при изменении настройки цветовой схемы Windows соответственно изменятся и цвета приложения.

Рис. 11.6. Диалоговое окно настройки цветов объекта

В режиме выполнения приложения свойства ForeColor и BackColor можно установить простым присвоением, используя функции цвета или встроенные константы Visual Basic 6, представленные в табл. 11.5.

Таблица 11.5. Набор констант Visual Basic 6 для управления цветом
Константа | Значение | Описание цвета
vbBlack | &HO | Черный
vbRed | &HFF | Красный
vbGreen | &HFFOO | Зеленый
vbYellow | &HFFFF | Желтый
vbBlue | &HFFOOOO | Голубой
vbMagenta | &HFFOOFF | Пурпурный
vbCyan | &HFFFFOO | Бирюзовый
vbWhite | &HFFFFFF | Белый


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Анимационная графика

Анимационную графику будем рассматривать как средство для внесения разнообразия и привлекательности в пользовательский интерфейс. Примером такой анимации может служить процесс копирования файлов в системе Windows, когда на экране отображается живая картинка переноса листов из папки в папку. Не занимая больших ресурсов, анимация в таком исполнении делает интерфейс приложения более привлекательным, а в конечном итоге более конкурентоспособным и само приложение.

В этом разделе мы рассмотрим некоторые варианты простой анимации, а именно, смену и перемещение изображений. В примерах приложений используется массив элементов управления, поэтому предварительно изучим, что представляет собой такой массив, и как его создать при проектировании приложения.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Массив элементов управления

Массив элементов управления представляет собой группу элементов управления одного типа, которые идентифицируются по одному и тому же имени и индексу. Индекс действует аналогично обычному массиву, как, например, в массиве чисел. Каждый из элементов массива характеризуется свойством Name, имеющим одно и то же значение для всех элементов. Все они относятся к одному типу. Идентифицируются элементы такого массива с помощью свойства index.

Массив элементов управления создается при проектировании приложения. Для создания массива существуют следующие основные способы:

  • созданный элемент управления дублируется при помощи команд Copy (Копировать) и Paste (Вставить) меню Edit (Правка);
  • создаются элементы управления одного типа по отдельности, а затем им присваивается одно и то же имя в свойстве Name и соответствующее значение индекса в свойстве index.

    Замечание

    В обоих случаях свойство index поддерживается автоматически при положительном ответе на вопрос о добавлении элемента управления в массив.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переключение изображений

Самый простой способ анимации — переключение изображений. Рассмотрим это на примере. Создайте небольшое приложение, выполнив следующие действия:

1. Создайте новый стандартный проект. С этой целью выберите команду New Project (Создать новый проект) в меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphics. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphics Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandBution, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbcontrol и присвойте свойству Caption значение Изменить состояние. Созданная в форме кнопка cbcontrol будет служить для переключения изображений, выполняемых приложением MyGraphics по событию click этой кнопки.

5. Добавьте в форму три элемента управления типа picture и назовите их picRed, picYellow и picGreen. Вставьте В СВОЙСТВО Picture каждого объекта соответствующие цветам изображения светофора из каталога \Common\Graphics\Icons\Trafric. Свойство visible для всех трех элементов управления установите в состояние False.

6. Добавьте в форму объект типа image, в котором будет переключаться изображение, и назовите его imgStatus, при этом свойство picture этого объекта оставьте пустым. Свойство visible для данного элемента управления установите в состояние True.

После выполнения приведенных выше шагов форма приложения будет иметь вид, показанный на рис. 11.7.

Рис. 11.7. Вид приложения для переключения изображений

7. Откроите окно редактора и задайте следующий код:

Dim fIgEnd As Integer

Private Sub Form_Load()

fIgEnd = 0

imgStatus.Picture = picRed.Picture

FormForGraphics-Caption = "Светофор"

End Sub

Private Sub cbControl_Click ()

If imgStatus.Picture = picRed.Picture Then

imgStatus.Picture = picYellow.Picture

Elself imgStatus.Picture = picYellow.Picture Then

imgStatus.Picture = picGreen.Picture

Else

imgStatus.Picture = picGreen.Picture

fIgEnd = 1

End If

If imgStatus.Picture = picGreen.Picture And fIgEnd = 1 Then

imgStatus.Picture = picRed.Picture

fIgEnd = 0

End If

End Sub

8. Запустите приложение на выполнение. Нажатием кнопки Изменить состояние осуществляется последовательное переключение состояния светофора с помощью присвоения свойству picture объекта imgStatus нового значения.

В этом приложении показана возможность переключения изображений из набора отдельных объектов, в которых эти изображения содержатся. Однако для хранения необходимых изображений предпочтительнее использовать массивы элементов управления или объекта imageList.


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Перемещение и переключение изображений

Перемещая и переключая изображения, можно организовать несложную анимацию. Чаще всего этот способ используется для анимации процессов ожидания или расчета, "оживления" изображений в формах приложения.

Для изучения перемещения и переключения изображений создадим небольшой проект MyGraphicsDay. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphicsDay. Откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphicsDay Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandButton, дважды щелкнув мышью кнопку ComniandBiitton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству Caption значение Старт. Созданная в форме кнопка cbRun будет служить для запуска действий, выполняемых приложением MyGraphicsDay по событию click этой кнопки.

5. Добавьте в форму FomForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству caption значение Стоп. Эта кнопка будет служить для останова анимации и возврата приложения в исходное состояние.

6. При анимации, даже самой простой, требуется организовать изменение объектов во времени. Для задания отсчета интервалов времени служит объект типа таймер Timer. Добавьте его в форму с помощью кнопки

Timer на панели элементов управления. Этот объект будет вырабатывать управляющие сообщения для анимации. Используя свойство Name, присвойте таймеру имя tmrGraphicsTimer. При запуске приложения таймер невидим, поэтому о свойстве visible для этого объекта можно не задумываться. Свойство таймера Enabled установите в состояние False, а свойству interval присвойте значение 200.

Замечание

Более подробную информацию об объекте Timer вы можете найти в главе 8. Здесь лишь кратко напомним следующее. Таймер отсчитывает интервалы времени в миллисекундах, отрабатывая событие Timer. При этом минимальный интервал отсчета времени составляет 1, а максимальный — 65 535 миллисекунд, то есть максимально таймер может работать с интервалом чуть больше 1 минуты. Основные свойства объекта Timer — interval и Enabled. Свойство Interval определяет интервал отработки события Timer, свойство Enabled запускает или останавливает таймер. Если Enabled установлено в состояние True, таймер начинает отрабатывать событие Timer, если в состояние False — таймер находится в состоянии ожидания. При этом таймер с установленным при проектировании свойством Enabled в состояние True запускается сразу же после загрузки формы, в которой он находится.

7. Добавьте в форму элемент управления image. Назовите его imgSunMoon.

8. Добавьте в форму массив элементов управления типа Picture, состоящий из двух элементов. Для создания массива воспользуйтесь любым удобным для вас способом. Например, разместите в форме объект picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Затем скопируйте объект и вставьте его копию в форму. Объектам массива присвойте имя picSunMoon. В элемент массива, индекс которого равен 0 (свойство index), введите изображение солнца. В элемент массива, индекс которого равен 1, введите изображение месяца. Свойство visible для элементов массива установите в состояние False.

Полученное приложение показано на рис. 11.8.

Рис. 11.8. Вид приложения MyGraphicsDay

9. Откройте окно редактора и разместите в нем указанный ниже код:

Dim xAdd As Integer

Dim yAdd As Integer

Dim figSunMoon As Integer

Private Sub Form Load()

' "Смена дня и ночи"

xAdd = 100

yAdd = -100

figSunMoon = 1

xScaleSunMoon = ImgSunMoon.Width

FormForGraphics.Caption = "Смена дня и ночи"

End Sub

Private Sub cbRun_Click()

tmrGraphicsTimer.Enabled = True

xAdd = 100

yAdd = -100

figSunMoon = 1

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub cbStop_Click()

tmrGraphicsTimer.Enabled = False

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub tmrGraphicsTimer Timer()

ImgSunMoon.Left = ImgSunMoon.Left + xAdd

ImgSunMoon.Top = ImgSunMoon.Top + yAdd

If ImgSunMoon.Left > FormForGraphics.ScaleWidth / 2 — xScaleSunMoon / 2 And figSunMoon = 1 Then

yAdd = 100

End If

If ImgSunMoon.Left < FormForGraphics.ScaleWidth / 2 -xScaleSunMoon / 2 And figSunMoon = 0 Then

yAdd = 100

End If

If ImgSunMoon.Left > FormForGraphics.ScaleWidth Then

yAdd = -100

xAdd = -100

figSunMoon = 0

ImgSunMoon.Picture = PicSunMoon(1).Picture

ImgSunMoon.Left = FormForGraphics.ScaleWidth — 500

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

End If

If ImgSunMoon.Left < xScaleSunMoon / 2 And figSunMoon = 0 Then

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

tmrGraphicsTimer.Enabled = False

End If

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Старт объект, напоминающий солнце, перемещается по форме и при достижении правого нижнего угла меняет изображение, после чего возвращается в исходную точку (рис. 11.9). Нажатие кнопки Стоп переводит приложение в исходное состояние.

Рис. 11.9. Вид приложения MyGraphicsDay при запуске


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Совмещение изображения и текста

Иногда возникает необходимость совместить текст и изображение в объектах приложения. Для этого используется метод print, позволяющий выводить текст на объекте. Рассмотрим, как этот метод применяется на практике. Для создания приложения выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphObjects. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project I) из меню Project (Проект). После переименования проекта эта команда будет выглядеть как MyGraphObjects Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Графические формы и методы.

4. Добавьте в форму кнопку управления типа conmandButton, дважды щелкнув мышью кнопку CommandButton ДЦ на панели элементов управления. Назовите эту кнопку cbstart и присвойте свойству caption значение Выполнить. Созданная в форме кнопка cbstart будет служить для отображения текста на графическом объекте по событию click этой кнопки.

5. Переименуйте форму проекта Formi в FormForGraphics и в свойство Caption введите заголовок окна Графические формы и методы.

6. Добавьте в форму элемент управления типа picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Назовите этот объект picpicture. В свойство picture объекта вставьте графическое изображение светофора из каталога \Common\Graphics\Icons\Traffic.

7. Введите в окно редактора небольшой код, указанный ниже:

Private Sub cbStart_Click()

picPicture.Print "Светофор" End Sub

8. Запустите приложение на выполнение. Нажмите кнопку Выполнить. На изображении появится надпись "Светофор" (рис. 11.10).

Рис. 11.10. Приложение с совмещением изображения и текста в режиме выполнения

Рис. 11.11. Приложение с назначением координат для текста

Можно поместить надпись под рисунком, указав координаты точки начала надписи на изображении (рис. 11.11). В этом случае введите в окно редактора следующий код:

Private Sub cbStart_Click()

picPicture.CurrentX = 100

picPicture.CurrentY = 400

picPicture.Print "Светофор"

End Sub


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Animation

Элемент управления Animation позволяет использовать при анимации видеофайлы — специально подготовленные файлы с расширением avi, представляющие собой последовательный набор кадров (растровых изображений).

Для использования элемента управления Animation необходимо подключить к проекту библиотеку Microsoft Windows Common Control-2 6.0. После подключения этой библиотеки кпроекту на панели элементов управления появляется кнопка Animation. Вид элемента управления Animation, размещенного в форме, показан на рис. 11.12.

Рис. 11.12. Вид элемента управления Animation при проектировании приложения

Замечание

Следует еще раз обратить внимание на то, что для применения элемента управления Animation требуется видеофайл. В своем примере мы воспользуемся видеофайлом из каталога \Common\Graphics\Videos.

Основные методы элемента управления Animation, которые позволяют организовать просмотр видеофайлов, следующие:

Метод | Назначение
Open | Открывает видеофайл
Play | Запускает видеофайл на выполнение
Stop | Останавливает видеофайл
Close | Закрывает видеофайл

Метод play может иметь дополнительные аргументы:

  • Repeat — задает количество повторов просмотра видеофайла
  • Start — задает начальный кадр
  • Stop — задает последний кадр

Для изучения элемента управления Animation создадим приложение MyVideoAnimation. Выполните следующие действия:

1. Создайте новый стандартный проект. Выберите команду New Project (Создать новый проект) меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyVideoAnimation. Для этого откроите окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет именоваться MyVideoAnimation Properties.

3. Присвойте форме проекта имя FormVideoAnimation. В свойство Caption формы введите заголовок Просмотр видеофайлов.

4. Подключите к проекту две библиотеки: Microsoft Common Dialog Control 6.0 и Microsoft Windows Common Control-2 6.0. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в открывшемся диалоговом окне установите соответствующие именам библиотек флажки.

Замечание

Библиотеку Microsoft Common Dialog Control 6.0 подключаем для создания в форме диалогового окна поиска видеофайлов на диске.

5. Добавьте в форму кнопку управления типа CommandButton, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству caption значение Просмотр видеофайла. Созданная в форме кнопка cbRun предназначена для запуска видеофайла на просмотр по событию click этой кнопки.

6. Добавьте в форму FormForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству Caption значение Стоп. Эта кнопка будет служить для останова просмотра видеофайла.

7. Добавьте в форму элемент управления Animation, дважды щелкнув мышью кнопку Animation на панели элементов управления. Назовите его

anivideo.

8. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку Common Dialog на панели элементов управления. Назовите созданный объект cdvideo. Вид созданного проекта показан на рис. 11.13.

9. Откройте окно редактора и введите следующий код:

Private Sub cbRun_Click()

cdvideo.Filter = "avi files (*.avi)¦*.avi"

cdVideo.ShowOpen

anivideo.Open cdVideo.FileName

anivideo.Play

End Sub

Private Sub cbStop_Click()

anivideo.Stop

End Sub

Private Sub Form Unload(Cancel As Integer)

anivideo.Close

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Просмотр видеофайла открывается диалоговое окно Открытие файла, позволяющее найти видеофайл. Найдите требуемый файл и нажмите кнопку Открыть. Видеофайл запускается на просмотр (рис. 11.14). Остановить просмотр можно нажатием кнопки Стоп.

Замечание

Для диалогового окна Открытие файла установлено свойство Filter, чтобы осуществить фильтрацию файлов с расширением avi.

Если метод play в этом примере использовать в следующем виде:

aniVideo.Play 3, 5, 10 то три раза будут прокручены кадры с 5 по 10.

Рис. 11.13. Вид приложения для просмотра видеофайлов

Рис. 11.14. Просмотр видеофайла в форме


Ch 11.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Line

Элемент управления Line — это линия, имеющая по умолчанию толщину 1. Для изменения вида линии используется свойство BorderStyle объекта Line. Оно может принимать следующие значения:

  • 0-Transparent — невидимая линия;
  • 1-Solid — сплошная линия;
  • 2-Dash — штриховая линия;
  • 3-Dot — пунктирная линия;
  • 4-Dash-Dot — штрихпунктирная линия;
  • 5-Dash-Dot-Dot — штрихпунктир с двойным штрихом;
  • 6-Inside Solid — непрерывная линия.

На рис. 11.1 показаны типы линии в зависимости от значения свойства BorderStyle.

Толщину линии можно задать с помощью свойства Borderwidth. Цвет линии задается свойством BorderColor.

Замечание

Более подробно элемент управления Line был рассмотрен нами в главе 8.

Рис. 11.1. Элемент управления Line

Элемент управления Shape

Для создания рамок различной формы используется элемент управления Shape (рис. 11.2). Он является только графическим контейнером обведенных элементов управления, но не контейнером в настоящем смысле этого слова. При этом форма рамки задается свойством shape объекта shape и может быть следующей:

  • 0-RectangIe — прямоугольник;
  • 1-Square — квадрат;
  • 2-Oval — эллипс;
  • 3-Circle — круг;
  • 4-Rounded Rectangle — прямоугольник с закругленными углами;
  • 5-Rounded Square — квадрат с закругленными углами.

Рис. 11.2. Элемент управления Shape

При этом для элемента управления shape, как и для Line, можно установить тип линии рамки, ее толщину и цвет.

Замечание

Более подробно элемент управления shape был рассмотрен нами в главе 8.

Элемент управления Frame

Элемент управления Frame имеет вид рамки с заголовком (рис. 11.3). Заголовок, размещаемый в рамке, задается свойством caption. Если вы не хотите, чтобы объект Frame содержал заголовок, установите для значения этого свойства пустую строку.

Объект Frame является полноценным контейнером и управляет общими свойствами объектов, помещенных в рамку. Если, например, сделать Frame невидимым, присвоив свойству visible значение False, то все объекты в рамке тоже станут невидимыми. Используя это свойство объекта Frame, и учитывая, что оно переопределяется и в режиме выполнения приложения, можно организовать, например, многостраничный ввод данных.

Свойство BorderStyle элемента управления Frame задает тип линии рамки и принимает одно из следующих значений:

  • 0-None — без рамки;
  • 1-Fixed Single — сплошная тонкая линия.

При установке для свойства BorderStyle значения 0-None рамка будет отсутствовать, а соответственно, не будет и заголовка рамки.

Рис. 11.3. Элемент управления Frame

Объекту Frame можно придать объемный вид, установив для свойства Appearance значение 1-3D. Если установить значение 0-Flat, то объект принимает плоский вид (рис. 11.3).

Для объекта Frame можно установить разные цвета для фона и заголовка рамки, используя свойства BackColor и ForeColor, соответственно.

Замечание

Более подробно элемент управления Frame был рассмотрен нами в главе 8.

Свойство Picture

Чтобы разместить в форме графическое изображение, не обязательно выбирать графические объекты. Можно просто воспользоваться свойством picture формы. Для вставки графического изображения в форму необходимо нажать

кнопку с тремя точками в свойстве picture, а затем в открывшемся диалоговом окне Load Picture (Загрузить изображение) (рис. 11.4) выбрать файл требуемого изображения.

Данное свойство формы используют для размещения фонового изображения. При этом необходимо учесть, что размер формы должен соответствовать размеру исходного изображения. Если изображение меньше формы, то оно размещается в левом верхнем углу формы и в дальнейшем не перемещается. Поэтому такой способ хотя и прост, но очень неудобен.

Рис. 11.4. Диалоговое окно Load Picture поиска изображения для свойства Picture

Свойство picture доступно и в режиме выполнения приложения. Простым присвоением можно заменить или убрать изображение из формы.

Объекты для работы с изображениями

Для размещения в форме графических изображений используются объекты image и picture. Им соответствуют следующие значки на панели элементов управления:

Значок | Название | Создаваемый объект
 | Image | Image
 | PictureBox | Picture

Однако в качестве изображений, помещаемых в эти объекты, можно использовать только файлы определенных типов. Допустимые типы файлов изображений представлены в табл. 11.1.

Таблица 11.1. Допустимые типы файлов изображений для графических объектов
Описание файла | Тип файла (расширение)
Битовый растровый файл | bmp
Независимый растровый файл | dib
Файл значка | ico,cur
Метафайл | wmf
Расширенный метафайл | emf
Растровый файл | gif
Растровый сжатый файл | jpg, Jpeg

Изображение размещается в объекте image так же, как объект в форме, то есть при помощи свойства picture. Однако в отличие от размещения изображения непосредственно в форме, изображение в объекте image пропорционально изменяет свои размеры.

Изменением размера управляет свойство Stretch. Если это свойство имеет значение False, то объект image принимает размеры в соответствии с размером изображения. Если значение равно True, то размеры изображения изменяются в соответствии с размерами объекта.

В отличие от image, элемент управления picture может работать как полноценный контейнер. Он может содержать другие элементы управления, в нем можно рисовать, используя графические методы Line, circle, point, pset, или выводить текст, используя метод print.

Элемент управления picture обладает свойством visible. При этом все изображения, помещенные в picture, становятся видимыми или невидимыми в зависимости от установленного значения этого свойства. При помощи объекта picture можно организовать простую анимацию, используя метод PaintPicture.

Изображение в элемент управления picture загружается полностью. При этом если оно больше размеров picture, то видна только часть изображения, если меньше, — то изображение размещается в левом верхнем углу. Если установить для свойства AutoSize объекта picture значение True, то изображение будет пропорционально вписываться в объект picture.

Задание изображений

Как уже говорилось, определить графическое изображение в приложении можно как в режиме проектирования (режим Design Time), так и в режиме выполнения (режим Run Time).

Чтобы задать графическое изображение в режиме проектирования, используется свойство picture объекта. Для этого необходимо выполнить следующие действия:

1. Открыть окно Properties объекта.

2. Выбрать свойство picture.

3. Нажать кнопку с тремя точками в правом столбце свойства.

4. В открывшемся диалоговом окне Load Picture найти требуемый файл.

5. Дважды щелкнуть на файле мышью или установить на него курсор и нажать кнопку Открыть.

В режиме выполнения программы существует больше возможностей для определения изображения объекта. Изображение можно задать следующими способами:

  • загрузить изображение при помощи функции Loadpicture с указанием файла изображения. При этом изображение помещается в свойство picture объекта. Например, Object.Picture = LoadPicture("С:\...\Картинка.Ьтр)
  • загрузить изображение из ресурсного файла приложения при помощи функции LoadRespicture с указанием идентификатора ресурса и его типа: Set Object.Picture = LoadResPicture(Resident, vbResBitMap)
  • скопировать изображение из одного объекта в другой с помощью обычного присвоения: ObjectTo.Picture = ObjectFrom.Picture.
  • Скопировать изображение из объекта clipboard.

Удаление изображений

Удаляется изображение из объекта очень просто. Для этого необходимо воспользоваться загрузкой в свойство Picture пустого значения:

Set Объект.Picture = LoadPicture("")

При этом изображение удаляется из объекта.

Графические методы

В дополнение к графическим элементам управления в Visual Basic 6 существует набор графических методов:

Метод | Назначение
Circle | Рисует окружность, дугу или эллипс
CIs | Очищает область вывода
Line | Рисует линии
PaintPicture | Рисует (загружает) изображение
Point | Возвращает цвет точки
Print | Выводит текст
Pset | Размещает точку

Замечание

Необходимо отметить, что метод Print предназначен для вывода текста и к графике имеет косвенное отношение. Тем не менее, мы рассмотрим его вместе с графическими методами, поскольку он используется совместно с другими методами графики для "рисования" текста в указанном объекте или совмещения текста и чистой графики.

В графических методах используются функции вычисления цвета RGB и QBColor. Рассмотрим сначала эти функции.

Функции цвета

Функция RGB возвращает числовое представление цвета (тип возвращаемого значения при этом long) в соответствии с интенсивностью трех цветовых составляющих: R (Red— красный), G (Green — зеленый) и В (Blue — синий). Интенсивность этих трех основных цветов задается шкалой чисел от О до 255. Синтаксис этой функции такой:

RGB (Red, Green, Blue)

где:

  • Red — интенсивность красного цвета от 0 до 255;
  • Green — интенсивность зеленого цвета от 0 до 255;
  • Blue — интенсивность синего цвета от 0 до 255.

Для примера в табл. 11.2 показаны часто используемые цвета, разложенные по интенсивностям RGB-цветов.

Таблица 11.2. Цвета в RGB-представлении
Цвет | Интенсивность красного | Интенсивность зеленого | Интенсивность синего
Черный | 0 | 0 | 0
Белый | 255 | 255 | 255
Красный | 255 | 0 | 0
Зеленый | 0 | 255 | 0
Синий | 0 | 0 | 255
Бирюзовый | 0 | 255 | 255
Пурпурный | 255 | 0 | 255
Желтый | 255 | 255 | 0
Серый | 192 | 192 | 192

Например, если вы хотите сделать фон формы бирюзовым, необходимо присвоить свойству BackColor формы следующее значение:

Form.BackColor = RGB (0,255,255)

Для удобства работы со стандартными цветами используется функция QBColor, которая возвращает числовое представление одного из 16 цветов, показанных в табл. 11.3.

Таблица 11.3. Цвета, возвращаемые функцией QBColor
Номер цвета | Цвет
0 | Черный
1 | Синий
2 | Зеленый
3 | Бирюзовый
4 | Красный
5 | Пурпурный
6 | Желтый
7 | Белый
8 | Серый
9 | Светло-синий (голубой)
10 | Светло-зеленый (салатный)
11 | Светло-бирюзовый
12 | Светло-красный (алый)
13 | Светло-пурпурный
14 | Светло-желтый
15 | Ярко-белый

Синтаксис этой функции выглядит очень просто:

QBColor (NumberColor)

где NumberColor — числовое значение (номер цвета), определяющее цвет (табл. 11.3).

Для того чтобы установить для формы бирюзовый цвет фона, достаточно написать следующий код:

Form.BackColor = QBColor(3)

Графические методы

Рассмотрим синтаксис графических методов.

Метод Circle

Метод circle используется следующим образом:

object.Circle [Step] (x, у), radius, [color, start, end, aspect]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку центра окружности, дуги или эллипса к координатам, возвращаемым свойствами currentx и currentY объекта;
  • х, у — числа, определяющие координаты центра окружности, дуги или эллипса в единицах свойства scaleMode объекта;
  • radius — число, определяющее радиус окружности, дуги или эллипса в единицах свойства ScaleMode объекта;
  • color — значение типа Long, задающее цвет линии. Если параметр не указан, применяется значение свойства ForeColor. Для задания цвета можно использовать функции RGB () или QBColor;
  • start, end — при рисовании дуги или части эллипса задает позицию начала и конца дуги в радианах: от 2 пи до -2 пи радиан;
  • aspect — задает коэффициент "эллиптичности" окружности. По умолчанию этот коэффициент равен 1.0, что соответствует окружности.

Метод Сls

С помощью метода Cls можно очистить форму или объект picture от текста и графики, созданных в нем программно. Синтаксис метода cis очень простой и выглядит так:

object.Cls

где object — объект, в котором применяется метод. Если параметр не указан, то по умолчанию используется форма.

Замечание

Необходимо помнить, что при применении этого метода свойства CurrentX и CurrentY выбранного объекта устанавливаются в 0.

Метод Line

Метод Line предназначен для рисования линий и имеет следующий синтаксис:

object.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B] [F]

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • step — ключ, определяющий привязку начала линии к координатам, возвращаемым свойствами CurrentX и CurrentY объекта;
  • x1, y1 — координаты начала линии. При отсутствии этих параметров начало привязывается к значениям свойств CurrentX и CurrentY объекта;
  • step — ключ, определяющий привязку координат конца линии к началу, то есть координаты конца заданы относительно координат начала линии;
  • x2, y2 — координаты конца линии;
  • color — задает цвет линии в палитре RGB. Если параметр не указан, то используется свойство ForeColor объекта;
  • в — задает рисование прямоугольника, при этом координаты означают координаты левого верхнего и правого нижнего углов;
  • F— задает заполнение прямоугольника цветом линии рисования.

Метод PamtPicture

Метод paintpicture рисует (загружает) содержимое графических файлов имеющих расширение bmp, wmf, emf, cur, ico или dib, в формах или объектах типа picture. Метод имеет следующий синтаксис:

object.PaintPicture picture, xl, yl, width1, height1, x2, y2, width2, height2, opcode

где:

  • object — объект, в котором применяется метод. Если объект не указан, то по умолчанию используется форма;
  • picture — исходное изображение, которое будет размещено в объекте. Это должна быть ссылка на свойство picture данного или другого объекта;
  • xl, yl — координаты левого верхнего угла области объекта для размещения исходного изображения;
  • widthi, heightl— размер (ширина-и высота) области размещения исходного изображения.. Если размер области отличается от размера исходного изображения, то изображение пропорционально растягивается или сжимается;
  • х2, y2 — координаты левого верхнего угла в исходном изображении для вставки в объект. Если заданы координаты, отличные от нуля, то будет вставлена часть исходного изображения;
  • width2, height2 — размер (ширина и высота) вставляемой части исходного изображения;
  • opcode — устанавливает режим вставки изображения при помощи констант из набора RasterOp (табл. 11.4). Задается только для работы с изображениями, имеющими расширение bmp.

Для работы метода с изображениями, имеющими расширение BMP, необходимо использовать константы из набора RasterOp для установки режима вставки изображения. Эти константы описаны в табл. 11.4.

При помощи отрицательных значений ширины (widthi) и высоты (heightl) можно перевернуть изображение вертикально или горизонтально.

Таблица 11.4. Набор констант RasterOp для метода PaintPicture
Константа | Значение | Описание
vbDstInvert | &H00550009 | Инвертирует указанное изображение
vbMergeCopy | &HOOCOOOCA | Объединяет рисунок и изображение-источник
vbMe где Paint | &HOOBB0226 | Объединяет инвертированное изображение источника с указанным изображением, используя оператор Or
vbNotSrcCopy | &H00330008 | Копирует инвертированное изображение-источник в указанное изображение
vbNotSrcEraae | &H001100A6 | Инвертирует результат объединения указанного изображения и изображения-источника, используя оператор Or
vbPatCopy | &HOOF00021L | Копирует рисунок в указанное изображение
vbPatInvert | &H005A0049L | Объединяет указанное изображение с рисунком, используя оператор Xог
vbPatPaint | &HOOFBOA09L | Объединяет инвертированное изображение источника с рисунком, используя оператор Or. Объединяет результирующее выражение в этой операции с указанным изображением с помощью оператора Or
vbSrcAnd | &H008800C6 | Объединяет пикселы указанного изображения источника, используя оператор And
vbSrcCopy | &HOOCC0020 | Копирует изображение-источник в указанное изображение
vbSrcErase | &H00440328 | Инвертирует указанное изображение и объединяет результат с изображением-источником с помощью оператора And
vbSrcInvert | &H00660046 | Объединяет пикселы указанного изображения и изображения-источника, используя оператор Хог
vbSrcPaint | &HOOEE0086 | Объединяет пикселы указанного изображения и изображения-источника с помощью оператора Or

Метод Point

Метод point возвращает цвет в палитре RGB указанной точки в форме или на объектах типа pictureBox. Синтаксис этого метода следующий:

object.Point (x, у)

где:

  • object — объект, в котором используется метод;
  • x, у — координаты точки в объекте.

    Замечание

    Необходимо иметь в виду, что в случае "выпадения" точки из границ формы или объекта Picture (то есть когда координаты больше размера объекта) метод возвращает отрицательное значение -1.

Метод Print

Метод print выводит (печатает) текст в указанный объект или окно Immediate. Синтаксис этого метода следующий:

object.Print [outputList]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • outputList — строковое выражение или список выражений, выводимых в объекте.

Список вывода outputList имеет определенный синтаксис. Этот список задается следующим образом:

(Spc(n) I Tab(n)} expression charpos

где:

  • spc(n) — вставляет в выводимый текст количество пробелов, задаваемое числом п,
  • Tab(n) — задает позицию точки начала вставки;
  • expression — числовое или строковое выражение для вывода;
  • charpos — задает позицию вставки.

Итак, при использовании синтаксиса метода print не указываются шрифт, его цвет, координаты вывода текста. Эти параметры вывода текста определяются следующими свойствами объекта, в который выводится текст:

  • currentx — координата начала текста по горизонтальной оси;
  • CurrentY — координата начала текста по вертикальной оси;
  • Font — шрифт и размер выводимого текста;
  • FontTransparent — прозрачность текста, то есть свойство, при котором сквозь текст виден фон объекта;
  • ForeColor — цвет.

Метод Pset

Метод Pset назначает цвет указанной точки объекта. Этот метод является обратным методу point. Синтаксис этого метода следующий:

object.Pset [Step] (x, у), [color]

где:

  • object — объект, в котором используется метод. Если объект не указан, то по умолчанию используется форма;
  • Step — ключ, определяющий привязку координат точки к координатам, возвращаемым свойствами Currentx и currentY объекта;
  • х, у — координаты точки на объекте;
  • color — цвет точки в палитре RGB. Если параметр не указан, то используется свойство Forecoior объекта.

При использовании метода pset необходимо иметь в виду, что размер точки определяется толщиной объекта, то есть свойством объекта DrawWidth. Для толщины 1 это один пиксел, для толщины больше единицы — это область объекта с центром, имеющим указанные координаты. Способ рисования точки при этом определяется свойствами объекта DrawMode и DrowStyle.

Работа со шрифтами

Шрифт, используемый в объекте, определяется свойством объекта Font. В свою очередь, свойство Font также является объектом со своим набором свойств. Диалоговое окно назначения этих свойства показано на рис. 11.5.

Рис. 11.5. Диалоговое окно установки свойств шрифта

В диалоговом окне Font (Шрифт) можно назначить следующие свойства шрифта:

  • Bold — назначает полужирный шрифт (bold);
  • italic — устанавливает курсив (italic);
  • Strikethrough — применяет эффект перечеркивания (strikcthrough);
  • underline — устанавливает подчеркивание (underline);
  • Name — выбирает наименование шрифта (строковый идентификатор шрифта, например Arial);
  • size — назначает размер шрифта.

Для установки наименования шрифта используется список Шрифт диалогового окна. Чтобы установить начертание (полужирный, курсив, обычный), используется список Начертание. Размер шрифта можно установить в поле Размер вручную или выбрать значение из списка размеров. Для установки атрибутов зачеркнутый и подчеркнутый, необходимо использовать флажки Зачеркнутый и Подчеркнутый. Таблица кодировки набора символов назначается в раскрывающемся списке Набор символов.

Управление цветом

Управление цветом формы и элементов управления можно организовать, используя свойства ForeColor и BackColor. Свойство ForeCoior задает цвет текста, а BackColor устанавливает цвет фона.

В режиме проектирования приложения эти свойства можно установить в окне Properties (Свойства) объекта (рис. 11.6), вызвав диалоговое окно настройки цвета. Для этого необходимо выделить настраиваемое свойство и нажать на кнопку со стрелкой в правом столбце свойства. Как видно из рисунка, это диалоговое окно состоит из двух вкладок: Palette (Палитра) и System (Системные). На вкладке Palette можно установить произвольные цвета из палитры, на вкладке System можно выбрать цвет из списка цветовой схемы Windows, которая устанавливается в панели управления Windows вызовом окна настройки Свойства: Display. При использовании цветовой схемы необходимо иметь в виду, что при изменении настройки цветовой схемы Windows соответственно изменятся и цвета приложения.

Рис. 11.6. Диалоговое окно настройки цветов объекта

В режиме выполнения приложения свойства ForeColor и BackColor можно установить простым присвоением, используя функции цвета или встроенные константы Visual Basic 6, представленные в табл. 11.5.

Таблица 11.5. Набор констант Visual Basic 6 для управления цветом
Константа | Значение | Описание цвета
vbBlack | &HO | Черный
vbRed | &HFF | Красный
vbGreen | &HFFOO | Зеленый
vbYellow | &HFFFF | Желтый
vbBlue | &HFFOOOO | Голубой
vbMagenta | &HFFOOFF | Пурпурный
vbCyan | &HFFFFOO | Бирюзовый
vbWhite | &HFFFFFF | Белый

Анимационная графика

Анимационную графику будем рассматривать как средство для внесения разнообразия и привлекательности в пользовательский интерфейс. Примером такой анимации может служить процесс копирования файлов в системе Windows, когда на экране отображается живая картинка переноса листов из папки в папку. Не занимая больших ресурсов, анимация в таком исполнении делает интерфейс приложения более привлекательным, а в конечном итоге более конкурентоспособным и само приложение.

В этом разделе мы рассмотрим некоторые варианты простой анимации, а именно, смену и перемещение изображений. В примерах приложений используется массив элементов управления, поэтому предварительно изучим, что представляет собой такой массив, и как его создать при проектировании приложения.

Массив элементов управления

Массив элементов управления представляет собой группу элементов управления одного типа, которые идентифицируются по одному и тому же имени и индексу. Индекс действует аналогично обычному массиву, как, например, в массиве чисел. Каждый из элементов массива характеризуется свойством Name, имеющим одно и то же значение для всех элементов. Все они относятся к одному типу. Идентифицируются элементы такого массива с помощью свойства index.

Массив элементов управления создается при проектировании приложения. Для создания массива существуют следующие основные способы:

  • созданный элемент управления дублируется при помощи команд Copy (Копировать) и Paste (Вставить) меню Edit (Правка);
  • создаются элементы управления одного типа по отдельности, а затем им присваивается одно и то же имя в свойстве Name и соответствующее значение индекса в свойстве index.

    Замечание

    В обоих случаях свойство index поддерживается автоматически при положительном ответе на вопрос о добавлении элемента управления в массив.

Переключение изображений

Самый простой способ анимации — переключение изображений. Рассмотрим это на примере. Создайте небольшое приложение, выполнив следующие действия:

1. Создайте новый стандартный проект. С этой целью выберите команду New Project (Создать новый проект) в меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphics. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphics Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandBution, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbcontrol и присвойте свойству Caption значение Изменить состояние. Созданная в форме кнопка cbcontrol будет служить для переключения изображений, выполняемых приложением MyGraphics по событию click этой кнопки.

5. Добавьте в форму три элемента управления типа picture и назовите их picRed, picYellow и picGreen. Вставьте В СВОЙСТВО Picture каждого объекта соответствующие цветам изображения светофора из каталога \Common\Graphics\Icons\Trafric. Свойство visible для всех трех элементов управления установите в состояние False.

6. Добавьте в форму объект типа image, в котором будет переключаться изображение, и назовите его imgStatus, при этом свойство picture этого объекта оставьте пустым. Свойство visible для данного элемента управления установите в состояние True.

После выполнения приведенных выше шагов форма приложения будет иметь вид, показанный на рис. 11.7.

Рис. 11.7. Вид приложения для переключения изображений

7. Откроите окно редактора и задайте следующий код:

Dim fIgEnd As Integer

Private Sub Form_Load()

fIgEnd = 0

imgStatus.Picture = picRed.Picture

FormForGraphics-Caption = "Светофор"

End Sub

Private Sub cbControl_Click ()

If imgStatus.Picture = picRed.Picture Then

imgStatus.Picture = picYellow.Picture

Elself imgStatus.Picture = picYellow.Picture Then

imgStatus.Picture = picGreen.Picture

Else

imgStatus.Picture = picGreen.Picture

fIgEnd = 1

End If

If imgStatus.Picture = picGreen.Picture And fIgEnd = 1 Then

imgStatus.Picture = picRed.Picture

fIgEnd = 0

End If

End Sub

8. Запустите приложение на выполнение. Нажатием кнопки Изменить состояние осуществляется последовательное переключение состояния светофора с помощью присвоения свойству picture объекта imgStatus нового значения.

В этом приложении показана возможность переключения изображений из набора отдельных объектов, в которых эти изображения содержатся. Однако для хранения необходимых изображений предпочтительнее использовать массивы элементов управления или объекта imageList.

Перемещение и переключение изображений

Перемещая и переключая изображения, можно организовать несложную анимацию. Чаще всего этот способ используется для анимации процессов ожидания или расчета, "оживления" изображений в формах приложения.

Для изучения перемещения и переключения изображений создадим небольшой проект MyGraphicsDay. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphicsDay. Откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphicsDay Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.

4. Добавьте в форму кнопку управления типа commandButton, дважды щелкнув мышью кнопку ComniandBiitton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству Caption значение Старт. Созданная в форме кнопка cbRun будет служить для запуска действий, выполняемых приложением MyGraphicsDay по событию click этой кнопки.

5. Добавьте в форму FomForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству caption значение Стоп. Эта кнопка будет служить для останова анимации и возврата приложения в исходное состояние.

6. При анимации, даже самой простой, требуется организовать изменение объектов во времени. Для задания отсчета интервалов времени служит объект типа таймер Timer. Добавьте его в форму с помощью кнопки

Timer на панели элементов управления. Этот объект будет вырабатывать управляющие сообщения для анимации. Используя свойство Name, присвойте таймеру имя tmrGraphicsTimer. При запуске приложения таймер невидим, поэтому о свойстве visible для этого объекта можно не задумываться. Свойство таймера Enabled установите в состояние False, а свойству interval присвойте значение 200.

Замечание

Более подробную информацию об объекте Timer вы можете найти в главе 8. Здесь лишь кратко напомним следующее. Таймер отсчитывает интервалы времени в миллисекундах, отрабатывая событие Timer. При этом минимальный интервал отсчета времени составляет 1, а максимальный — 65 535 миллисекунд, то есть максимально таймер может работать с интервалом чуть больше 1 минуты. Основные свойства объекта Timer — interval и Enabled. Свойство Interval определяет интервал отработки события Timer, свойство Enabled запускает или останавливает таймер. Если Enabled установлено в состояние True, таймер начинает отрабатывать событие Timer, если в состояние False — таймер находится в состоянии ожидания. При этом таймер с установленным при проектировании свойством Enabled в состояние True запускается сразу же после загрузки формы, в которой он находится.

7. Добавьте в форму элемент управления image. Назовите его imgSunMoon.

8. Добавьте в форму массив элементов управления типа Picture, состоящий из двух элементов. Для создания массива воспользуйтесь любым удобным для вас способом. Например, разместите в форме объект picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Затем скопируйте объект и вставьте его копию в форму. Объектам массива присвойте имя picSunMoon. В элемент массива, индекс которого равен 0 (свойство index), введите изображение солнца. В элемент массива, индекс которого равен 1, введите изображение месяца. Свойство visible для элементов массива установите в состояние False.

Полученное приложение показано на рис. 11.8.

Рис. 11.8. Вид приложения MyGraphicsDay

9. Откройте окно редактора и разместите в нем указанный ниже код:

Dim xAdd As Integer

Dim yAdd As Integer

Dim figSunMoon As Integer

Private Sub Form Load()

' "Смена дня и ночи"

xAdd = 100

yAdd = -100

figSunMoon = 1

xScaleSunMoon = ImgSunMoon.Width

FormForGraphics.Caption = "Смена дня и ночи"

End Sub

Private Sub cbRun_Click()

tmrGraphicsTimer.Enabled = True

xAdd = 100

yAdd = -100

figSunMoon = 1

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub cbStop_Click()

tmrGraphicsTimer.Enabled = False

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

ImgSunMoon.Picture = PicSunMoon(0).Picture

End Sub

Private Sub tmrGraphicsTimer Timer()

ImgSunMoon.Left = ImgSunMoon.Left + xAdd

ImgSunMoon.Top = ImgSunMoon.Top + yAdd

If ImgSunMoon.Left > FormForGraphics.ScaleWidth / 2 — xScaleSunMoon / 2 And figSunMoon = 1 Then

yAdd = 100

End If

If ImgSunMoon.Left < FormForGraphics.ScaleWidth / 2 -xScaleSunMoon / 2 And figSunMoon = 0 Then

yAdd = 100

End If

If ImgSunMoon.Left > FormForGraphics.ScaleWidth Then

yAdd = -100

xAdd = -100

figSunMoon = 0

ImgSunMoon.Picture = PicSunMoon(1).Picture

ImgSunMoon.Left = FormForGraphics.ScaleWidth — 500

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

End If

If ImgSunMoon.Left < xScaleSunMoon / 2 And figSunMoon = 0 Then

ImgSunMoon.Left = xScaleSunMoon / 2

ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500

tmrGraphicsTimer.Enabled = False

End If

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Старт объект, напоминающий солнце, перемещается по форме и при достижении правого нижнего угла меняет изображение, после чего возвращается в исходную точку (рис. 11.9). Нажатие кнопки Стоп переводит приложение в исходное состояние.

Рис. 11.9. Вид приложения MyGraphicsDay при запуске

Совмещение изображения и текста

Иногда возникает необходимость совместить текст и изображение в объектах приложения. Для этого используется метод print, позволяющий выводить текст на объекте. Рассмотрим, как этот метод применяется на практике. Для создания приложения выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyGraphObjects. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project I) из меню Project (Проект). После переименования проекта эта команда будет выглядеть как MyGraphObjects Properties.

3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Графические формы и методы.

4. Добавьте в форму кнопку управления типа conmandButton, дважды щелкнув мышью кнопку CommandButton ДЦ на панели элементов управления. Назовите эту кнопку cbstart и присвойте свойству caption значение Выполнить. Созданная в форме кнопка cbstart будет служить для отображения текста на графическом объекте по событию click этой кнопки.

5. Переименуйте форму проекта Formi в FormForGraphics и в свойство Caption введите заголовок окна Графические формы и методы.

6. Добавьте в форму элемент управления типа picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Назовите этот объект picpicture. В свойство picture объекта вставьте графическое изображение светофора из каталога \Common\Graphics\Icons\Traffic.

7. Введите в окно редактора небольшой код, указанный ниже:

Private Sub cbStart_Click()

picPicture.Print "Светофор" End Sub

8. Запустите приложение на выполнение. Нажмите кнопку Выполнить. На изображении появится надпись "Светофор" (рис. 11.10).

Рис. 11.10. Приложение с совмещением изображения и текста в режиме выполнения

Рис. 11.11. Приложение с назначением координат для текста

Можно поместить надпись под рисунком, указав координаты точки начала надписи на изображении (рис. 11.11). В этом случае введите в окно редактора следующий код:

Private Sub cbStart_Click()

picPicture.CurrentX = 100

picPicture.CurrentY = 400

picPicture.Print "Светофор"

End Sub

Элемент управления Animation

Элемент управления Animation позволяет использовать при анимации видеофайлы — специально подготовленные файлы с расширением avi, представляющие собой последовательный набор кадров (растровых изображений).

Для использования элемента управления Animation необходимо подключить к проекту библиотеку Microsoft Windows Common Control-2 6.0. После подключения этой библиотеки кпроекту на панели элементов управления появляется кнопка Animation. Вид элемента управления Animation, размещенного в форме, показан на рис. 11.12.

Рис. 11.12. Вид элемента управления Animation при проектировании приложения

Замечание

Следует еще раз обратить внимание на то, что для применения элемента управления Animation требуется видеофайл. В своем примере мы воспользуемся видеофайлом из каталога \Common\Graphics\Videos.

Основные методы элемента управления Animation, которые позволяют организовать просмотр видеофайлов, следующие:

Метод | Назначение
Open | Открывает видеофайл
Play | Запускает видеофайл на выполнение
Stop | Останавливает видеофайл
Close | Закрывает видеофайл

Метод play может иметь дополнительные аргументы:

  • Repeat — задает количество повторов просмотра видеофайла
  • Start — задает начальный кадр
  • Stop — задает последний кадр

Для изучения элемента управления Animation создадим приложение MyVideoAnimation. Выполните следующие действия:

1. Создайте новый стандартный проект. Выберите команду New Project (Создать новый проект) меню File (Файл) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyVideoAnimation. Для этого откроите окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет именоваться MyVideoAnimation Properties.

3. Присвойте форме проекта имя FormVideoAnimation. В свойство Caption формы введите заголовок Просмотр видеофайлов.

4. Подключите к проекту две библиотеки: Microsoft Common Dialog Control 6.0 и Microsoft Windows Common Control-2 6.0. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в открывшемся диалоговом окне установите соответствующие именам библиотек флажки.

Замечание

Библиотеку Microsoft Common Dialog Control 6.0 подключаем для создания в форме диалогового окна поиска видеофайлов на диске.

5. Добавьте в форму кнопку управления типа CommandButton, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству caption значение Просмотр видеофайла. Созданная в форме кнопка cbRun предназначена для запуска видеофайла на просмотр по событию click этой кнопки.

6. Добавьте в форму FormForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству Caption значение Стоп. Эта кнопка будет служить для останова просмотра видеофайла.

7. Добавьте в форму элемент управления Animation, дважды щелкнув мышью кнопку Animation на панели элементов управления. Назовите его

anivideo.

8. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку Common Dialog на панели элементов управления. Назовите созданный объект cdvideo. Вид созданного проекта показан на рис. 11.13.

9. Откройте окно редактора и введите следующий код:

Private Sub cbRun_Click()

cdvideo.Filter = "avi files (*.avi)¦*.avi"

cdVideo.ShowOpen

anivideo.Open cdVideo.FileName

anivideo.Play

End Sub

Private Sub cbStop_Click()

anivideo.Stop

End Sub

Private Sub Form Unload(Cancel As Integer)

anivideo.Close

End Sub

10. Запустите приложение на выполнение. При нажатии кнопки Просмотр видеофайла открывается диалоговое окно Открытие файла, позволяющее найти видеофайл. Найдите требуемый файл и нажмите кнопку Открыть. Видеофайл запускается на просмотр (рис. 11.14). Остановить просмотр можно нажатием кнопки Стоп.

Замечание

Для диалогового окна Открытие файла установлено свойство Filter, чтобы осуществить фильтрацию файлов с расширением avi.

Если метод play в этом примере использовать в следующем виде:

aniVideo.Play 3, 5, 10 то три раза будут прокручены кадры с 5 по 10.

Рис. 11.13. Вид приложения для просмотра видеофайлов

Рис. 11.14. Просмотр видеофайла в форме


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 12. Мультимедиа в Visual Basic.

Мультимедиа — это технология, позволяющая при помощи компьютера работать с аудио- и видеоинформацией на любых носителях, будь то компакт-диск, магнитная лента или жесткий диск. Для управления устройствами мультимедиа в Visual Basic 6 применяется специальный интерфейс MCI (Multimedia Control Interface). Кроме этого интерфейса существуют разнообразные средства управления для работы с мультимедиа в Windows API, однако это отдельная тема для изучения. В данной главе мы рассмотрим только средства MCI, не учитывая возможности, предоставляемые Windows API.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Общие понятия

С помощью Visual Basic 6 можно полностью контролировать многочисленные устройства мультимедиа, как стандартные, типа дисковода компакт-дисков, так и нестандартные. Трудно назвать задачи в области мультимедиа, которые невозможно решить с помощью Visual Basic 6. Используя средства управления мультимедиа, важно знать формат файла, с которым необходимо работать. При отсутствии файловой структуры (как, например, у музыкального компакт-диска) необходимо знать тип устройства и иметь драйвер производителя, чтобы управлять устройством.

Рассмотрим форматы файлов мультимедиа и типы устройств, с которыми можно работать при помощи средств мультимедиа в Visual Basic 6.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Типы файлов мультимедиа

Интерфейс управления мультимедиа MCI в Visual Basic 6 поддерживает все основные типы мультимедийных форматов файлов, список которых приведен в табл. 12.1.

Таблица 12.1. Основные типы файлов мультимедиа

Тип файла | Примечание
AVI | Видеофайл в формате AVI (Audio Visual Interleaved)
MPEG | Формат сжатого видеоизображения
MID, RMI | Последовательности в формате MIDI (Musical Instrument Digital Interface)
WAV | Звуковые файлы

Используя средства управления мультимедиа в Visual Basic б, вы должны знать тип файла, с которым работаете в данный момент. При отсутствии файловой структуры информация в мультимедиа, как правило, будет структурирована в виде треков. Например, для музыкального компакт-диска треки — это отдельные музыкальные композиции, идентифицируемые номером трека.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Типы управляемых устройств

Обширный список устройств, которые поддерживаются средствами мультимедиа в Visual Basic б, приведен в табл. 12.2. Можно наладить управление и нестандартным устройством, не вошедшим в данный список. Для этого необходимо иметь драйвер устройства и знать тип файла, с которым оно работает. Второе условие обязательно только для устройств с файловой структурой.

Таблица 12.2. Типы устройств мультимедиа
Устройство | Тип файла | Примечание
AVI | AVI | Видеофайл в формате AVI
CD audio |  | Привод музыкальных компакт-дисков
Digital Audio Tape |  | Устройство цифровой магнитной записи
Digital video |  | Устройство цифрового видео
Overlay |  | Устройство покадрового изображения
Scanner |  | Сканер
Sequencer | MID | Устройство MIDI-последовательностей (секвенсор)
Vcr |  | Кассетный видеомагнитофон или видеопроигры
 |  | ватель
Videodisc |  | Проигрыватель видеодисков
Wave audio | WAV | Файл в формате WAV
Other |  | Прочие мультимедиа-устройства, задаваемые пользователем

Ряд устройств, такие как привод компакт-дисков или видеодиски, не имеют файловой структуры. Тем не менее, информация на них представляет собой некую структуру в виде треков (композиций), которые используются для перемещения по информационному массиву вперед, назад, в начало, в конец.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Интерфейс MCI

Для реализации возможностей мультимедиа в Visual Basic 6 используется интерфейс MCI, который обеспечивает доступ к функциям Windows, управляющим устройствами мультимедиа. Основным компонентом этого интерфейса является элемент управления MMControl с большим набором свойств и команд, позволяющих управлять мультимедиа и полностью их контролировать.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления MCI

Для управления мультимедиа служит элемент управления MCI MMControi, который позволяет выполнять все необходимые действия с устройствами мультимедиа. Чтобы можно было использовать его в приложении, необходимо подключить к проекту библиотеку Microsoft Multimedia Control 6.0 с помощью диалогового окна Components, которое открывается командой Components (Компоненты) меню Project (Проект). После подключения этой библиотеки на панели элементов управления появляется кнопка MMControi создающая элемент управления MMControi (рис. 12.1).

Рис. 12.1. Элемент управления MMControl

Элемент управления мультимедиа MMControi состоит из панели с девятью кнопками, назначение которых описано в табл. 12.3.

Таблица 12.3. Кнопки элемента управления MMControl
Кнопка | Название | Описание
 | Prev (Предыдущая) | Переход на начало записи (файла)
 | Next (Следующая) | Переход на конец записи (файла)
 | Step (Шаг вперед) | Переход на шаг (кадр) вперед
 | Back (Шаг назад) | Переход на шаг (кадр) назад
 | Pause(Пауза) | Приостановка воспроизведения или записи
 | Play(Воспроизведение) | Воспроизведение записи
 | Record (Запись) | Запись информации
 | Stop (Стоп) | Остановка воспроизведения или записи
 | Eject(Извлечь) | Извлечение носителя из устройства

Элемент управления MMControl имеет большое количество свойств, позволяющих управлять мультимедиа (табл. 12.4).

Таблица 12.4. Основные свойства элемента управления MMControl
Свойство | Описание
AutoEnable | Автоматически делает доступным набор кнопок при готовности устройства к работе
BackEnabled | Делает доступной кнопку Back (Шаг назад)
EjectEnabled | Делает доступной кнопку Eject (Извлечь)
NextEnabled | Делает доступной кнопку Next (Следующая)
PauseEnabled | Делает доступной кнопку Pause (Пауза)
PlayEnabled | Делает доступной кнопку Play (Воспроизведение)
PrevEnabled | Делает доступной кнопку Prev (Предыдущая)
RecordEnabled | Делает доступной кнопку Record (Запись)
StepEnabled | Делает доступной кнопку Step (Шаг вперед)
StopEnabled | Делает доступной кнопку Stop (Стоп)
BackVisible | Назначает видимость кнопки Back (Шаг назад)
EjectVisible | Назначает видимость кнопки Eject (Извлечь)
NextVisible | Назначает видимость кнопки Next (Следующая)
PauseVisible | Назначает видимость кнопки Pause (Пауза)
PlayVisible | Назначает видимость кнопки Play (Воспроизведение)
PrevVisible | Назначает видимость кнопки Prev (Предыдущая)
RecordVisible | Назначает видимость кнопки Record (Запись)
StepVisible | Назначает видимость кнопки Step (Шаг вперед)
StopVisible | Назначает видимость кнопки Stop (Стоп)
CanEject | Возвращает True, если носитель можно извлечь из устройства, в противном случае возвращает False
CanPlay | Возвращает True, если устройство готово к воспроизведению, в противном случае возвращает False
CanRecord | Возвращает True, если устройство готово к записи данных, в противном случае возвращает False
CanStep | Возвращает True, если на устройстве возможно покадровое воспроизведение, в противном случае возвращает False
Command | Устанавливает текущую команду для устройства
DeviceID | Устанавливает идентификатор
DeviceType | Устанавливает тип устройства (табл. 12.2)
Error | Возвращает последнюю ошибку MCI
ErrorMessage | Возвращает сообщение о последней ошибке
FileName | Устанавливает файл для воспроизведения при файловой структуре носителя
Frames | Задает число пропускаемых командой Step шагов
hWndDisplay | Назначает дескриптор окна вывода
Length | Возвращает длину источника данных
Mode | Возвращает текущий режим работы устройства
Notify | Устанавливает возможность работы службы сообщений; если установлено значение True — служба работает, если установлено значение False — служба не работает
NotifyMessage | Задает сообщение, если включена служба сообщений
NotifyValue | Указывает результат последней команды MCI
Orientation | Назначает ориентацию элемента управления MMControl. Если установлено значение 0 — ориентация горизонтальная, если установлено значение 1 — ориентация вертикальная
Position | Назначает текущую позицию на устройстве в соответствии со СВОЙСТВОМ TimeFormat
RecordMode | Определяет текущий'режим записи устройства, если у него есть запись
Shareable | Устанавливает доступ других программ к устройству MCI
Silent | Отключает звук
Start | Устанавливает начальную позицию на носителе
TimeFormat | Определяет формат времени
To | Устанавливает конечную позицию на носителе
Track | Задает номер отдельного трека, о котором возвращают информацию свойства TrackLength и TrackPosition. С номером текущего трека это свойство не связано
TrackLength | Возвращает размер трека, номер которого установлен в свойстве Track
TrackPosition | Возвращает позицию на треке, номер которого установлен в свойстве Track, в соответствии с форматом времени
Tracks | Возвращает количество треков на устройстве
Updatelnterval | Устанавливает интервал выдачи события StatusUpdate

Свойства доступности (содержат в имени Enabled) дают возможность разрешать или запрещать работу соответствующих кнопок.

Замечание

Кнопки в недоступном состоянии видны, но не нажимаются.

При помощи свойств видимости (содержат в имени visible) можно спрятать ненужные кнопки. Если установить свойство видимости какой-либо из кнопок в значение False, то эта кнопка не будет отображаться на панели кнопок ни в режиме проектирования, ни в режиме выполнения приложения.

Свойство AutoEnable дает возможность не беспокоиться об установке доступности кнопок в различных режимах работы устройства мультимедиа. Если для этого свойства установлено значение True, то для каждого режима работы устройства будет автоматически включаться доступность набора кнопок, соответствующего этому режиму. Например, при воспроизведении компакт-дисков будет автоматически установлена доступность кнопок Prev (Предыдущая), Next (Следующая), Play (Воспроизведение) и Eject (Извлечь), если диск вставлен в привод. При запуске воспроизведения кнопка Play автоматически станет недоступной, а кнопка Stop (Стоп) — доступной.

Как указано в табл. 12.4, свойство DeviceType элемента управления MMControl задает тип устройства, который может принимать только заранее заданные текстовые значения для конкретных устройств. Значения свойства DeviceType в соответствии с устройствами мультимедиа перечислены в табл. 12.5.

Таблица 12.5. Значения свойства DeviceType
Тип устройства | Текстовое значение
Файлы в формате AVI | AVIVideo
Музыкальный компакт-диск | CDAudio
Цифровая магнитная запись | DAT
Цифровое видео | DigitalVideo
Прочие устройства | Other
Покадровое видеоизображение | Overlay
Сканер | Scanner
Секвенсор | Sequenser
Видеомагнитофон | VCR
Проигрыватель видеодисков | VideoDisk
Файл в формате WAV | WaveAudio

Для устройств, не имеющих файловой структуры, позиционирование выполняется по значению позиции, обычно выражающей время в закодированном (упакованном) виде, который определяется свойством TimeFormat. Соответственно и все свойства позиционирования такого устройства оперируют со значениями, заданными в формате упаковки. Все форматы упаковки перечислены в табл. 12.6.

Таблица 12.6. Значения свойства TimeFormat
Значение | Шаблон | Описание
0 | mciFormatMilliseconds | Время в виде целого четырехбайтного числа в миллисекундах
1 | mciFormatHms | Упакованное четырехбайтное число по байтам начиная с младшего: часы, минуты, секунды. Старший байт не используется
2 | mciFormatMsf | Упакованное четырехбайтное число по байтам начиная с младшего: минуты, секунды, номер кадра. Старший байт не используется
3 | mciFormatFrames | Номер кадра в виде целого четырехбайтного числа
4 | mciForittatSmpte24 | 24-кадровое (24 кадра за секунду) по стандарту SMPTE (Society of Motion Picture and Television Engineers) упакованное четырехбайтное число по байтам начиная с младшего: часы, минуты, секунды, номер кадра
5 | mciFormatSmpte25 | 25-кадровое (25 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
6 | mciFo rmatSmpte30 | 30-кадровое (30 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
7 | mciFormatSmpte30Drop | 30-кадровое (30 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
8 | mciFormatBytes | Номер байта в виде четырехбайтного целого числа
9 | mciFormatSamples | Номер кванта (блока информации) в виде четырехбайтного числа
10 | me i Fo rma t Titis f | Упакованное четырехбайтное число по байтам начиная с младшего: номер трека, минуты, секунды, номер кадра

Замечание

Более подробно работа с форматом времени описывается в данной главе на примере доработки проигрывателя музыкальных компакт-дисков.

Большинство событий элемента управления MMControl связано с кнопками. Например, для кнопки Back существуют следующие события:

  • Backclick — возникает при нажатии на кнопку;
  • BackCompeted — возникает по завершению перемотки устройства;
  • BackGotFocus — возникает при установке фокуса на кнопку;
  • BackLostFocus — возникает при потере кнопкой фокуса.

Аналогичные события существуют для всех кнопок элемента управления MMControl и для соответствующей каждой кнопке команды.

Необходимо обратить внимание на событие statusUpdate, которое является "таймером" элемента управления MMControl и генерируется самим объектом. Интервал этого события устанавливается в свойстве updateinterval в миллисекундах. Это событие можно использовать для вывода различной информации о состоянии выполнения команд во время работы.

Настройка элемента управления MMControl очень проста и выполняется с помощью диалогового окна Property Pages (Страницы свойств). Для вызова этого окна (рис. 12.2) необходимо выполнить команду Property Pages меню View (Вид). Основной вкладкой настройки является вкладка Controls (Кнопки управления). На этой вкладке можно назначить доступность и видимость каждой кнопки элемента управления, установив соответствующие флажки рядом с изображением кнопки. При этом названия флажков, как видно из рис. 12.2, соответствуют свойствам доступности и видимости каждой из кнопок (табл. 12.3).

Управление мультимедиа выполняется при помощи команд (табл. 12.7), которые соответствуют кнопкам элемента управления MMControl. Кроме того, элемент управления MMControl выполняет команды поиска, сохранения, открытия/закрытия устройства.

Рис. 12.2. Настройка кнопок элемента управления МСI на вкладке Controls

Таблица 12.7. Команды элемента управления MMсопtrol
Команда | Назначение
Open | Открывает файл (устройство) для работы
Close | Закрывает файл (устройство)
Prev | Переходит в начало предыдущего трека. Если это первый трек или файл, то переход осуществляется в начало этого трека, файла
Next | Переходит в начало следующего трека. Если это последний трек или файл, то переход осуществляется в начало этого трека, файла
Step | Переходит на шаг (кадр) вперед по треку (файлу)
Back | Переходит на шаг (кадр) назад по треку (файлу)
Pause | Приостанавливает работу устройства
Play | Воспроизводит информацию с устройства
Record | Записывает информацию
Stop | Останавливает работу устройства
Eject | Извлекает носитель из устройства (компакт-диск из привода)
Save | Сохраняет открытый файл
Seek | Находит позицию (трек) в файле или на устройстве

Изучим элемент управления MMControl на примерах.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Разработка простого проигрывателя при помощи элемента управления MCI

В этом разделе на примере разработки проигрывателей аудио- и видеофайлов, а также музыкальных компакт-дисков изучим возможности применения элемента управления MMControl для приложений мультимедиа.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проигрыватель аудиофайлов WAV

Для изучения работы элемента управления MMControi создадим приложение для проигрывателя звуковых файлов в формате WAV. Чтобы создать такой проигрыватель, выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyMultiMedia. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда именуется MyMultiMedia Properties.

3. Присвойте форме проекта имя Formplayer. В свойство caption формы введите заголовок Мультимедиа плейер.

4. Присоедините к проекту библиотеку компонентов Microsoft Multimedia Control 6.0, воспользовавшись диалоговым окном Components (Компоненты), которое открывается в меню Project (Проект) командой Components.

5. Нам потребуется диалоговое окно поиска проигрываемых файлов, поэтому установите также в окне Components флажок для библиотеки компонентов Microsoft Common Dialog Control 6.0.

6. Добавьте в форму Formplayer элемент управления MMControl, дважды щелкнув мышью кнопку MMControl на панели элементов управления, и присвойте ему имя MMControlCDPlayer.

7. Добавьте в форму элемент управления commonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления, и присвойте ему имя cdplayer.

8. Добавьте в форму Formplayer кнопку управления типа ConroandButton, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbFindFile и введите в свойство caption значение Найти файл. По событию click созданной в форме кнопки cbFindFile будет открываться диалоговое окно для поиска воспроизводимых файлов.

Созданный проект представлен на рис. 12.3.

Рис. 12.3. Вид проигрывателя файлов WAV при проектировании

9. Откройте окно редактора и введите следующий код:

Private Sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "WaveAudio"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Этот код при загрузке формы назначает элементу управления MMControlCDPlayer свойства, необходимые для работы с файлами формата WAV.

10. Запустите приложение. При нажатии кнопки Найти файл открывается диалоговое окно Открытие файла, позволяющее осуществить поиск, а затем открыть файл для воспроизведения. Далее можно работать с выбранным файлом при помощи кнопок элемента управления

MMControlCDPlayer.

На рис. 12.4 показан проигрыватель в режиме выполнения.

Рис. 12.4. Вид проигрывателя файлов WAV в режиме выполнения

Замечание

Полностью проверить работу приложения (услышать звук) можно только при наличии устройства воспроизведения звука, например, звуковой карты и колонок.


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проигрыватель видеофайлов

При помощи приложения, разработанного в предыдущем разделе, можно воспроизводить и видеофайлы в формате AVI. Для этого необходима небольшая доработка: потребуется назначить другой тип устройства для элемента управления MMControlCDPlayer (сравните тексты кода, указанного ниже, и предыдущего). В результате мы превратим проигрыватель звуковых файлов в проигрыватель для файлов в формате AVI (рис. 12.5).

Рис. 12.5. Вид проигрывателя файлов AVI в режиме выполнения

Private sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "AVIVideo"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form_Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Приложение работает аналогично проигрывателю звуковых файлов (рис. 12.4). Изображение из файла выводится в окно просмотра. Необходимо заметить, что беспокоиться об открытии этого окна не требуется, так как оно появляется по умолчанию для файлов в формате AVI.

Иногда удобно выводить изображение не в дополнительное окно, а в форму приложения. Для этого в приложение необходимо добавить объект для вывода изображения и назначить направление вывода в это окно. Добавляемый объект должен иметь свойство дескриптора окна hWnd. Такие типы элементов управления есть в Visual Basic 6, и один из них — это picture. Рассмотрим на примере, как это можно сделать. Доработайте проигрыватель видео следующим образом:

1. Добавьте в форму FormPlayer элемент управления picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления, и присвойте ему имя picview.

2. Измените код приложения в соответствии с указанным ниже:

Private Sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "WaveAudio"

MMControlCDPlayer.DeviceType = "AVIVideo"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

' Назначение окна вывода изображения

MMControlCDPlayer.hWndDisplay = picView.hWnd

FormPlayer.picView.SetFocus

End Sub

Private Sub Form_Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Приложение с выводом изображения в объект формы показано в режиме выполнения на рис. 12.6.

Рис. 12.6. Вид проигрывателя файлов AVI в режиме выполнения с выводом данных в пользовательское окно


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проигрыватель музыкальных компакт-дисков

В этом разделе рассмотрим, как можно разработать простои проигрыватель музыкальных компакт-дисков. Для этого, как и в предыдущих примерах, потребуется элемент управления устройствами мультимедиа MMControl. Для создания проигрывателя выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyCDPlaer. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Projecti) меню Project (Проект). После переименования проекта эта команда именуется MyCDPlaer Properties.

3. Присвойте форме проекта имя FormCDPiayer. В свойство caption формы введите заголовок Проигрыватель компакт-дисков.

4. Разместите в форме FormCDPiayer элемент управления MMControl, дважды щелкнув мышью кнопку MMControl на панели элементов управления, И Присвойте ему ИМЯ MMControlCDPlayer.

5. Добавьте текст в форму. Для этого разместите в форме элемент управления Label. Назовите его ibiText и в свойство caption введите текст Установите Ваш любимый компакт-диск в устройство.

Созданный проект показан на рис. 12.7.

6. Откройте окно редактора и введите'следующий код:

Private Sub Form Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "CDAudio"

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

MMControlCDPlayer.Command = "Close"

End Sub

На рис. 12.8 показано созданное приложение в режиме выполнения.

Рис. 12.7. Вид проигрывателя компакт-дисков в режиме разработки

Рис. 12.8. Проигрыватель компакт-дисков в режиме выполнения

Добавим в приложение, содержащее проигрыватель, возможность выбора композиции (трека) на диске, с которой начнется воспроизведение, и простую индикацию времени звучания трека. Для этого внесите следующие изменения в проект:

1. В свойство icon формы добавьте значок.

2. Сделайте кнопку Record (Запись) невидимой. Для этого в окне страницы свойств элемента управления MMControl, открываемого командой Property Pages (Страница свойств) меню View (Вид), снимите флажок рядом с названием этой кнопки.

3. Для указания композиции, с которой начинается воспроизведение, добавьте в проект элемент управления ComboВох (Поле с раскрывающимся

списком), нажав кнопку ComboBox на панели элементов управления, и назовите его cbAvailableTracks. Для свойства style этого объекта установите значение 2-DropDown.

4. Для создания элементов индикации трека добавьте в форму объект типа

Frame с помощью кнопки Frame (Рамка) и задайте для него заголовок Трек №. В полученный объект вставьте текстовое поле TextBox, воспользовавшись кнопкой TextBox на панели элементов управления,

и назовите его txtTrackNum.

5. Добавьте в форму еще один объект Frame с заголовком Время трека и два поля TextBox: txtMinutes и txtSecundes.

Созданный проект показан на рис. 12.9.

Рис. 12.9. Доработанный проигрыватель компакт-дисков в режиме разработки

6. Установите интервал события StatusUpdate объекта MMControl в свойстве Updatelnterval равным 1000, то есть 1 сек.

7. В окно редактора введите следующий код:

' Текущий трек

Dim IgThisTrackNow As Long

' Всего треков на диске

Dim IgThisTracklsMax As Long

' Идентификатор выбранной композиции

Dim nSelectItem As Integer

' Длина композиции по времени

Dim nLongMin As Integer

Dim nLongSec As Integer

' Позиция композиции по времени

Dim nTrackPosMin As Integer

Dim nTrackPosSec As Integer

' Длина диска по времени

Dim nLongDiskMin As Integer

Dim nLongDiskSec As Integer

Private Sub cbAvailableTracks_Click()

nSelectItem = cbAvailableTracks.ListIndex

MMControlCDPlayer.Command = "Stop"

txtTrackNum.Text = nSelectItem + 1

txtMinutes.Text = 0

txtSecundes.Text = 0

MMControlCDPlayer_PlayClick (1)

End Sub

Private Sub Form Load()

nSelectItem = -1

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "CDAudio"

MMControlCDPlayer.Command = "Open"

IgThisTracklsMax = MMControlCDPlayer.Tracks

Call InitTracksComboBox(IgThisTracklsMax)

nLongDiskMin = MMControlCDPlayer.Length And 255

nLongDiskSec = (MMControlCDPlayer.Length And 65535) / 256

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

MMControlCDPlayer.Command = "Close"

End Sub

Private Sub InitTracksComboBox(TracksNumber As Long)

Dim nCounter As Integer

For nCounter = 1 To TracksNumber

cbAvailableTracks.AddItem "Композиция " + Str(nCounter)

Next nCounter

End Sub

Private Sub MMControlCDPlayer_PlayClick(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

Dim nCounter As Integer

' Если композиция не выбрана

IgThisTrackNow = nSelectItem + 1

If nSelectItem < 0 Then

MMControlCDPlayer.Track = 1

nSelectItem = 0

MMControlCDPlayer.Command = "Play"

Else

For nCounter = 0 To IgThisTracklsMax

If MMControlCDPlayer.Track > IgThisTrackNow Then

MMControlCDPlayer.Command = "Prev"

If MMControlCDPlayer.Track < IgThisTrackNow Then

MMControlCDPlayer.Command = "Next"

If MMControlCDPlayer.Track = IgThisTrackNow Then

MMControlCDPlayer.Command = "Play"

End If

Next nCounter

End If

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_NextClick(Cancel As Integer)

MMControlCDPlayer.Track = MMControlCDPlayer.Track + 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_PrevClick(Cancel As Integer)

MMControlCDPlayer.Command = "Prev"

MMControlCDPlayer.Track = MMControlCDPlayer.Track - 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_StatusUpdate ()

Dim nSec As Integer Dim nMin As Integer

' Начало работы

If nSelectItem = -1 Then

txtMinutes.Text = 0

txtSecundes.Text = 0

MMControlCDPlayer.Track = 1

End If

nSec = (MMControlCDPlayer.Position And 65535) / 256

nMin = MMControlCDPlayer.Position And 255

' Проверяем завершение текущего трека и переходим на следующий

If (nMin * 60 + nSec) - (nTrackPosMin * 60 + nTrackPosSec) > nLongMin * 60 + nLongSec Then

MMControlCDPlayer.Track = MMControlCDPlayer.Track + 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End If

' Время трека

If (nMin * 60 + nSec) — (nTrackPosMin * 60 + nTrackPosSec) >= 0 Then

txtTrackNum.Text = MMControlCDPlayer.Track

txtMinutes.Text = (nMin * 60 + nSec) — (nTrackPosMin * 60 + nTrackPosSec)

txtSecundes.Text = txtMinutes.Text

txtMinutes.Text = Int(txtMinutes.Text / 60)

txtSecundes.Text = txtSecundes.Text — Int(txtSecundes.Text / 60) * 60

End If

' Конец диска

If (nMin * 60 + nSec) >= nLongDiskMin * 60 + nLongDiskSec Then

MMControlCDPlayer.Command = "Stop"

End If

End Sub

Работа созданного проигрывателя показана на рис. 12.10.

Рис. 12.10. Доработанный проигрыватель компакт-дисков в режиме выполнения

В тексте кода необходимо обратить внимание на распаковку (декодирование) значений позиционирования на диске. Информация о позиционировании упакована на диске в формате 2 (см. табл. 12.6), то есть первый байт, начиная с младшего, — это минуты, второй байт — секунды. Остальные байты нас пока не интересуют. Для распаковки информации, по аналогии с двоичной системой счисления, применяется операция логического AND со значениями свойств позиционирования. Для извлечения младшего байта (значение минут) в этой операции используется число 255 (28 — 1, в двоичном формате это восемь бит в состоянии 1). Для извлечения второго байта (значение секунд) используется число 65535 (216— 1, в двоичном формате это шестнадцать бит в состоянии 1) и отрезание младшего байта (сдвиг байтов вправо) на восемь бит (деление на 256).


Ch 12.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 12. Мультимедиа в Visual Basic.

Мультимедиа — это технология, позволяющая при помощи компьютера работать с аудио- и видеоинформацией на любых носителях, будь то компакт-диск, магнитная лента или жесткий диск. Для управления устройствами мультимедиа в Visual Basic 6 применяется специальный интерфейс MCI (Multimedia Control Interface). Кроме этого интерфейса существуют разнообразные средства управления для работы с мультимедиа в Windows API, однако это отдельная тема для изучения. В данной главе мы рассмотрим только средства MCI, не учитывая возможности, предоставляемые Windows API.

Общие понятия

С помощью Visual Basic 6 можно полностью контролировать многочисленные устройства мультимедиа, как стандартные, типа дисковода компакт-дисков, так и нестандартные. Трудно назвать задачи в области мультимедиа, которые невозможно решить с помощью Visual Basic 6. Используя средства управления мультимедиа, важно знать формат файла, с которым необходимо работать. При отсутствии файловой структуры (как, например, у музыкального компакт-диска) необходимо знать тип устройства и иметь драйвер производителя, чтобы управлять устройством.

Рассмотрим форматы файлов мультимедиа и типы устройств, с которыми можно работать при помощи средств мультимедиа в Visual Basic 6.

Типы файлов мультимедиа

Интерфейс управления мультимедиа MCI в Visual Basic 6 поддерживает все основные типы мультимедийных форматов файлов, список которых приведен в табл. 12.1.

Таблица 12.1. Основные типы файлов мультимедиа

Тип файла | Примечание
AVI | Видеофайл в формате AVI (Audio Visual Interleaved)
MPEG | Формат сжатого видеоизображения
MID, RMI | Последовательности в формате MIDI (Musical Instrument Digital Interface)
WAV | Звуковые файлы

Используя средства управления мультимедиа в Visual Basic б, вы должны знать тип файла, с которым работаете в данный момент. При отсутствии файловой структуры информация в мультимедиа, как правило, будет структурирована в виде треков. Например, для музыкального компакт-диска треки — это отдельные музыкальные композиции, идентифицируемые номером трека.

Типы управляемых устройств

Обширный список устройств, которые поддерживаются средствами мультимедиа в Visual Basic б, приведен в табл. 12.2. Можно наладить управление и нестандартным устройством, не вошедшим в данный список. Для этого необходимо иметь драйвер устройства и знать тип файла, с которым оно работает. Второе условие обязательно только для устройств с файловой структурой.

Таблица 12.2. Типы устройств мультимедиа
Устройство | Тип файла | Примечание
AVI | AVI | Видеофайл в формате AVI
CD audio |  | Привод музыкальных компакт-дисков
Digital Audio Tape |  | Устройство цифровой магнитной записи
Digital video |  | Устройство цифрового видео
Overlay |  | Устройство покадрового изображения
Scanner |  | Сканер
Sequencer | MID | Устройство MIDI-последовательностей (секвенсор)
Vcr |  | Кассетный видеомагнитофон или видеопроигры
 |  | ватель
Videodisc |  | Проигрыватель видеодисков
Wave audio | WAV | Файл в формате WAV
Other |  | Прочие мультимедиа-устройства, задаваемые пользователем

Ряд устройств, такие как привод компакт-дисков или видеодиски, не имеют файловой структуры. Тем не менее, информация на них представляет собой некую структуру в виде треков (композиций), которые используются для перемещения по информационному массиву вперед, назад, в начало, в конец.

Интерфейс MCI

Для реализации возможностей мультимедиа в Visual Basic 6 используется интерфейс MCI, который обеспечивает доступ к функциям Windows, управляющим устройствами мультимедиа. Основным компонентом этого интерфейса является элемент управления MMControl с большим набором свойств и команд, позволяющих управлять мультимедиа и полностью их контролировать.

Элемент управления MCI

Для управления мультимедиа служит элемент управления MCI MMControi, который позволяет выполнять все необходимые действия с устройствами мультимедиа. Чтобы можно было использовать его в приложении, необходимо подключить к проекту библиотеку Microsoft Multimedia Control 6.0 с помощью диалогового окна Components, которое открывается командой Components (Компоненты) меню Project (Проект). После подключения этой библиотеки на панели элементов управления появляется кнопка MMControi создающая элемент управления MMControi (рис. 12.1).

Рис. 12.1. Элемент управления MMControl

Элемент управления мультимедиа MMControi состоит из панели с девятью кнопками, назначение которых описано в табл. 12.3.

Таблица 12.3. Кнопки элемента управления MMControl
Кнопка | Название | Описание
 | Prev (Предыдущая) | Переход на начало записи (файла)
 | Next (Следующая) | Переход на конец записи (файла)
 | Step (Шаг вперед) | Переход на шаг (кадр) вперед
 | Back (Шаг назад) | Переход на шаг (кадр) назад
 | Pause(Пауза) | Приостановка воспроизведения или записи
 | Play(Воспроизведение) | Воспроизведение записи
 | Record (Запись) | Запись информации
 | Stop (Стоп) | Остановка воспроизведения или записи
 | Eject(Извлечь) | Извлечение носителя из устройства

Элемент управления MMControl имеет большое количество свойств, позволяющих управлять мультимедиа (табл. 12.4).

Таблица 12.4. Основные свойства элемента управления MMControl
Свойство | Описание
AutoEnable | Автоматически делает доступным набор кнопок при готовности устройства к работе
BackEnabled | Делает доступной кнопку Back (Шаг назад)
EjectEnabled | Делает доступной кнопку Eject (Извлечь)
NextEnabled | Делает доступной кнопку Next (Следующая)
PauseEnabled | Делает доступной кнопку Pause (Пауза)
PlayEnabled | Делает доступной кнопку Play (Воспроизведение)
PrevEnabled | Делает доступной кнопку Prev (Предыдущая)
RecordEnabled | Делает доступной кнопку Record (Запись)
StepEnabled | Делает доступной кнопку Step (Шаг вперед)
StopEnabled | Делает доступной кнопку Stop (Стоп)
BackVisible | Назначает видимость кнопки Back (Шаг назад)
EjectVisible | Назначает видимость кнопки Eject (Извлечь)
NextVisible | Назначает видимость кнопки Next (Следующая)
PauseVisible | Назначает видимость кнопки Pause (Пауза)
PlayVisible | Назначает видимость кнопки Play (Воспроизведение)
PrevVisible | Назначает видимость кнопки Prev (Предыдущая)
RecordVisible | Назначает видимость кнопки Record (Запись)
StepVisible | Назначает видимость кнопки Step (Шаг вперед)
StopVisible | Назначает видимость кнопки Stop (Стоп)
CanEject | Возвращает True, если носитель можно извлечь из устройства, в противном случае возвращает False
CanPlay | Возвращает True, если устройство готово к воспроизведению, в противном случае возвращает False
CanRecord | Возвращает True, если устройство готово к записи данных, в противном случае возвращает False
CanStep | Возвращает True, если на устройстве возможно покадровое воспроизведение, в противном случае возвращает False
Command | Устанавливает текущую команду для устройства
DeviceID | Устанавливает идентификатор
DeviceType | Устанавливает тип устройства (табл. 12.2)
Error | Возвращает последнюю ошибку MCI
ErrorMessage | Возвращает сообщение о последней ошибке
FileName | Устанавливает файл для воспроизведения при файловой структуре носителя
Frames | Задает число пропускаемых командой Step шагов
hWndDisplay | Назначает дескриптор окна вывода
Length | Возвращает длину источника данных
Mode | Возвращает текущий режим работы устройства
Notify | Устанавливает возможность работы службы сообщений; если установлено значение True — служба работает, если установлено значение False — служба не работает
NotifyMessage | Задает сообщение, если включена служба сообщений
NotifyValue | Указывает результат последней команды MCI
Orientation | Назначает ориентацию элемента управления MMControl. Если установлено значение 0 — ориентация горизонтальная, если установлено значение 1 — ориентация вертикальная
Position | Назначает текущую позицию на устройстве в соответствии со СВОЙСТВОМ TimeFormat
RecordMode | Определяет текущий'режим записи устройства, если у него есть запись
Shareable | Устанавливает доступ других программ к устройству MCI
Silent | Отключает звук
Start | Устанавливает начальную позицию на носителе
TimeFormat | Определяет формат времени
To | Устанавливает конечную позицию на носителе
Track | Задает номер отдельного трека, о котором возвращают информацию свойства TrackLength и TrackPosition. С номером текущего трека это свойство не связано
TrackLength | Возвращает размер трека, номер которого установлен в свойстве Track
TrackPosition | Возвращает позицию на треке, номер которого установлен в свойстве Track, в соответствии с форматом времени
Tracks | Возвращает количество треков на устройстве
Updatelnterval | Устанавливает интервал выдачи события StatusUpdate

Свойства доступности (содержат в имени Enabled) дают возможность разрешать или запрещать работу соответствующих кнопок.

Замечание

Кнопки в недоступном состоянии видны, но не нажимаются.

При помощи свойств видимости (содержат в имени visible) можно спрятать ненужные кнопки. Если установить свойство видимости какой-либо из кнопок в значение False, то эта кнопка не будет отображаться на панели кнопок ни в режиме проектирования, ни в режиме выполнения приложения.

Свойство AutoEnable дает возможность не беспокоиться об установке доступности кнопок в различных режимах работы устройства мультимедиа. Если для этого свойства установлено значение True, то для каждого режима работы устройства будет автоматически включаться доступность набора кнопок, соответствующего этому режиму. Например, при воспроизведении компакт-дисков будет автоматически установлена доступность кнопок Prev (Предыдущая), Next (Следующая), Play (Воспроизведение) и Eject (Извлечь), если диск вставлен в привод. При запуске воспроизведения кнопка Play автоматически станет недоступной, а кнопка Stop (Стоп) — доступной.

Как указано в табл. 12.4, свойство DeviceType элемента управления MMControl задает тип устройства, который может принимать только заранее заданные текстовые значения для конкретных устройств. Значения свойства DeviceType в соответствии с устройствами мультимедиа перечислены в табл. 12.5.

Таблица 12.5. Значения свойства DeviceType
Тип устройства | Текстовое значение
Файлы в формате AVI | AVIVideo
Музыкальный компакт-диск | CDAudio
Цифровая магнитная запись | DAT
Цифровое видео | DigitalVideo
Прочие устройства | Other
Покадровое видеоизображение | Overlay
Сканер | Scanner
Секвенсор | Sequenser
Видеомагнитофон | VCR
Проигрыватель видеодисков | VideoDisk
Файл в формате WAV | WaveAudio

Для устройств, не имеющих файловой структуры, позиционирование выполняется по значению позиции, обычно выражающей время в закодированном (упакованном) виде, который определяется свойством TimeFormat. Соответственно и все свойства позиционирования такого устройства оперируют со значениями, заданными в формате упаковки. Все форматы упаковки перечислены в табл. 12.6.

Таблица 12.6. Значения свойства TimeFormat
Значение | Шаблон | Описание
0 | mciFormatMilliseconds | Время в виде целого четырехбайтного числа в миллисекундах
1 | mciFormatHms | Упакованное четырехбайтное число по байтам начиная с младшего: часы, минуты, секунды. Старший байт не используется
2 | mciFormatMsf | Упакованное четырехбайтное число по байтам начиная с младшего: минуты, секунды, номер кадра. Старший байт не используется
3 | mciFormatFrames | Номер кадра в виде целого четырехбайтного числа
4 | mciForittatSmpte24 | 24-кадровое (24 кадра за секунду) по стандарту SMPTE (Society of Motion Picture and Television Engineers) упакованное четырехбайтное число по байтам начиная с младшего: часы, минуты, секунды, номер кадра
5 | mciFormatSmpte25 | 25-кадровое (25 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
6 | mciFo rmatSmpte30 | 30-кадровое (30 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
7 | mciFormatSmpte30Drop | 30-кадровое (30 кадров за секунду) по стандарту SMPTE четырехбайтное число, упакованное аналогично 24-кадровому
8 | mciFormatBytes | Номер байта в виде четырехбайтного целого числа
9 | mciFormatSamples | Номер кванта (блока информации) в виде четырехбайтного числа
10 | me i Fo rma t Titis f | Упакованное четырехбайтное число по байтам начиная с младшего: номер трека, минуты, секунды, номер кадра

Замечание

Более подробно работа с форматом времени описывается в данной главе на примере доработки проигрывателя музыкальных компакт-дисков.

Большинство событий элемента управления MMControl связано с кнопками. Например, для кнопки Back существуют следующие события:

  • Backclick — возникает при нажатии на кнопку;
  • BackCompeted — возникает по завершению перемотки устройства;
  • BackGotFocus — возникает при установке фокуса на кнопку;
  • BackLostFocus — возникает при потере кнопкой фокуса.

Аналогичные события существуют для всех кнопок элемента управления MMControl и для соответствующей каждой кнопке команды.

Необходимо обратить внимание на событие statusUpdate, которое является "таймером" элемента управления MMControl и генерируется самим объектом. Интервал этого события устанавливается в свойстве updateinterval в миллисекундах. Это событие можно использовать для вывода различной информации о состоянии выполнения команд во время работы.

Настройка элемента управления MMControl очень проста и выполняется с помощью диалогового окна Property Pages (Страницы свойств). Для вызова этого окна (рис. 12.2) необходимо выполнить команду Property Pages меню View (Вид). Основной вкладкой настройки является вкладка Controls (Кнопки управления). На этой вкладке можно назначить доступность и видимость каждой кнопки элемента управления, установив соответствующие флажки рядом с изображением кнопки. При этом названия флажков, как видно из рис. 12.2, соответствуют свойствам доступности и видимости каждой из кнопок (табл. 12.3).

Управление мультимедиа выполняется при помощи команд (табл. 12.7), которые соответствуют кнопкам элемента управления MMControl. Кроме того, элемент управления MMControl выполняет команды поиска, сохранения, открытия/закрытия устройства.

Рис. 12.2. Настройка кнопок элемента управления МСI на вкладке Controls

Таблица 12.7. Команды элемента управления MMсопtrol
Команда | Назначение
Open | Открывает файл (устройство) для работы
Close | Закрывает файл (устройство)
Prev | Переходит в начало предыдущего трека. Если это первый трек или файл, то переход осуществляется в начало этого трека, файла
Next | Переходит в начало следующего трека. Если это последний трек или файл, то переход осуществляется в начало этого трека, файла
Step | Переходит на шаг (кадр) вперед по треку (файлу)
Back | Переходит на шаг (кадр) назад по треку (файлу)
Pause | Приостанавливает работу устройства
Play | Воспроизводит информацию с устройства
Record | Записывает информацию
Stop | Останавливает работу устройства
Eject | Извлекает носитель из устройства (компакт-диск из привода)
Save | Сохраняет открытый файл
Seek | Находит позицию (трек) в файле или на устройстве

Изучим элемент управления MMControl на примерах.

Разработка простого проигрывателя при помощи элемента управления MCI

В этом разделе на примере разработки проигрывателей аудио- и видеофайлов, а также музыкальных компакт-дисков изучим возможности применения элемента управления MMControl для приложений мультимедиа.

Проигрыватель аудиофайлов WAV

Для изучения работы элемента управления MMControi создадим приложение для проигрывателя звуковых файлов в формате WAV. Чтобы создать такой проигрыватель, выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyMultiMedia. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда именуется MyMultiMedia Properties.

3. Присвойте форме проекта имя Formplayer. В свойство caption формы введите заголовок Мультимедиа плейер.

4. Присоедините к проекту библиотеку компонентов Microsoft Multimedia Control 6.0, воспользовавшись диалоговым окном Components (Компоненты), которое открывается в меню Project (Проект) командой Components.

5. Нам потребуется диалоговое окно поиска проигрываемых файлов, поэтому установите также в окне Components флажок для библиотеки компонентов Microsoft Common Dialog Control 6.0.

6. Добавьте в форму Formplayer элемент управления MMControl, дважды щелкнув мышью кнопку MMControl на панели элементов управления, и присвойте ему имя MMControlCDPlayer.

7. Добавьте в форму элемент управления commonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления, и присвойте ему имя cdplayer.

8. Добавьте в форму Formplayer кнопку управления типа ConroandButton, дважды щелкнув мышью кнопку CommandButton на панели элементов управления. Назовите эту кнопку cbFindFile и введите в свойство caption значение Найти файл. По событию click созданной в форме кнопки cbFindFile будет открываться диалоговое окно для поиска воспроизводимых файлов.

Созданный проект представлен на рис. 12.3.

Рис. 12.3. Вид проигрывателя файлов WAV при проектировании

9. Откройте окно редактора и введите следующий код:

Private Sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "WaveAudio"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Этот код при загрузке формы назначает элементу управления MMControlCDPlayer свойства, необходимые для работы с файлами формата WAV.

10. Запустите приложение. При нажатии кнопки Найти файл открывается диалоговое окно Открытие файла, позволяющее осуществить поиск, а затем открыть файл для воспроизведения. Далее можно работать с выбранным файлом при помощи кнопок элемента управления

MMControlCDPlayer.

На рис. 12.4 показан проигрыватель в режиме выполнения.

Рис. 12.4. Вид проигрывателя файлов WAV в режиме выполнения

Замечание

Полностью проверить работу приложения (услышать звук) можно только при наличии устройства воспроизведения звука, например, звуковой карты и колонок.

Проигрыватель видеофайлов

При помощи приложения, разработанного в предыдущем разделе, можно воспроизводить и видеофайлы в формате AVI. Для этого необходима небольшая доработка: потребуется назначить другой тип устройства для элемента управления MMControlCDPlayer (сравните тексты кода, указанного ниже, и предыдущего). В результате мы превратим проигрыватель звуковых файлов в проигрыватель для файлов в формате AVI (рис. 12.5).

Рис. 12.5. Вид проигрывателя файлов AVI в режиме выполнения

Private sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "AVIVideo"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form_Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Приложение работает аналогично проигрывателю звуковых файлов (рис. 12.4). Изображение из файла выводится в окно просмотра. Необходимо заметить, что беспокоиться об открытии этого окна не требуется, так как оно появляется по умолчанию для файлов в формате AVI.

Иногда удобно выводить изображение не в дополнительное окно, а в форму приложения. Для этого в приложение необходимо добавить объект для вывода изображения и назначить направление вывода в это окно. Добавляемый объект должен иметь свойство дескриптора окна hWnd. Такие типы элементов управления есть в Visual Basic 6, и один из них — это picture. Рассмотрим на примере, как это можно сделать. Доработайте проигрыватель видео следующим образом:

1. Добавьте в форму FormPlayer элемент управления picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления, и присвойте ему имя picview.

2. Измените код приложения в соответствии с указанным ниже:

Private Sub Form_Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "WaveAudio"

MMControlCDPlayer.DeviceType = "AVIVideo"

End Sub

Private Sub cbFindFile_Click ()

cdPlayer.ShowOpen

MMControlCDPlayer.FileName = cdPlayer.FileName

MMControlCDPlayer.Command = "Open"

' Назначение окна вывода изображения

MMControlCDPlayer.hWndDisplay = picView.hWnd

FormPlayer.picView.SetFocus

End Sub

Private Sub Form_Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Close"

End Sub

Приложение с выводом изображения в объект формы показано в режиме выполнения на рис. 12.6.

Рис. 12.6. Вид проигрывателя файлов AVI в режиме выполнения с выводом данных в пользовательское окно

Проигрыватель музыкальных компакт-дисков

В этом разделе рассмотрим, как можно разработать простои проигрыватель музыкальных компакт-дисков. Для этого, как и в предыдущих примерах, потребуется элемент управления устройствами мультимедиа MMControl. Для создания проигрывателя выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyCDPlaer. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Projecti) меню Project (Проект). После переименования проекта эта команда именуется MyCDPlaer Properties.

3. Присвойте форме проекта имя FormCDPiayer. В свойство caption формы введите заголовок Проигрыватель компакт-дисков.

4. Разместите в форме FormCDPiayer элемент управления MMControl, дважды щелкнув мышью кнопку MMControl на панели элементов управления, И Присвойте ему ИМЯ MMControlCDPlayer.

5. Добавьте текст в форму. Для этого разместите в форме элемент управления Label. Назовите его ibiText и в свойство caption введите текст Установите Ваш любимый компакт-диск в устройство.

Созданный проект показан на рис. 12.7.

6. Откройте окно редактора и введите'следующий код:

Private Sub Form Load()

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "CDAudio"

MMControlCDPlayer.Command = "Open"

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

MMControlCDPlayer.Command = "Close"

End Sub

На рис. 12.8 показано созданное приложение в режиме выполнения.

Рис. 12.7. Вид проигрывателя компакт-дисков в режиме разработки

Рис. 12.8. Проигрыватель компакт-дисков в режиме выполнения

Добавим в приложение, содержащее проигрыватель, возможность выбора композиции (трека) на диске, с которой начнется воспроизведение, и простую индикацию времени звучания трека. Для этого внесите следующие изменения в проект:

1. В свойство icon формы добавьте значок.

2. Сделайте кнопку Record (Запись) невидимой. Для этого в окне страницы свойств элемента управления MMControl, открываемого командой Property Pages (Страница свойств) меню View (Вид), снимите флажок рядом с названием этой кнопки.

3. Для указания композиции, с которой начинается воспроизведение, добавьте в проект элемент управления ComboВох (Поле с раскрывающимся

списком), нажав кнопку ComboBox на панели элементов управления, и назовите его cbAvailableTracks. Для свойства style этого объекта установите значение 2-DropDown.

4. Для создания элементов индикации трека добавьте в форму объект типа

Frame с помощью кнопки Frame (Рамка) и задайте для него заголовок Трек №. В полученный объект вставьте текстовое поле TextBox, воспользовавшись кнопкой TextBox на панели элементов управления,

и назовите его txtTrackNum.

5. Добавьте в форму еще один объект Frame с заголовком Время трека и два поля TextBox: txtMinutes и txtSecundes.

Созданный проект показан на рис. 12.9.

Рис. 12.9. Доработанный проигрыватель компакт-дисков в режиме разработки

6. Установите интервал события StatusUpdate объекта MMControl в свойстве Updatelnterval равным 1000, то есть 1 сек.

7. В окно редактора введите следующий код:

' Текущий трек

Dim IgThisTrackNow As Long

' Всего треков на диске

Dim IgThisTracklsMax As Long

' Идентификатор выбранной композиции

Dim nSelectItem As Integer

' Длина композиции по времени

Dim nLongMin As Integer

Dim nLongSec As Integer

' Позиция композиции по времени

Dim nTrackPosMin As Integer

Dim nTrackPosSec As Integer

' Длина диска по времени

Dim nLongDiskMin As Integer

Dim nLongDiskSec As Integer

Private Sub cbAvailableTracks_Click()

nSelectItem = cbAvailableTracks.ListIndex

MMControlCDPlayer.Command = "Stop"

txtTrackNum.Text = nSelectItem + 1

txtMinutes.Text = 0

txtSecundes.Text = 0

MMControlCDPlayer_PlayClick (1)

End Sub

Private Sub Form Load()

nSelectItem = -1

MMControlCDPlayer.Notify = False

MMControlCDPlayer.Wait = True

MMControlCDPlayer.Shareable = False

MMControlCDPlayer.DeviceType = "CDAudio"

MMControlCDPlayer.Command = "Open"

IgThisTracklsMax = MMControlCDPlayer.Tracks

Call InitTracksComboBox(IgThisTracklsMax)

nLongDiskMin = MMControlCDPlayer.Length And 255

nLongDiskSec = (MMControlCDPlayer.Length And 65535) / 256

End Sub

Private Sub Form Unload(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

MMControlCDPlayer.Command = "Close"

End Sub

Private Sub InitTracksComboBox(TracksNumber As Long)

Dim nCounter As Integer

For nCounter = 1 To TracksNumber

cbAvailableTracks.AddItem "Композиция " + Str(nCounter)

Next nCounter

End Sub

Private Sub MMControlCDPlayer_PlayClick(Cancel As Integer)

MMControlCDPlayer.Command = "Stop"

Dim nCounter As Integer

' Если композиция не выбрана

IgThisTrackNow = nSelectItem + 1

If nSelectItem < 0 Then

MMControlCDPlayer.Track = 1

nSelectItem = 0

MMControlCDPlayer.Command = "Play"

Else

For nCounter = 0 To IgThisTracklsMax

If MMControlCDPlayer.Track > IgThisTrackNow Then

MMControlCDPlayer.Command = "Prev"

If MMControlCDPlayer.Track < IgThisTrackNow Then

MMControlCDPlayer.Command = "Next"

If MMControlCDPlayer.Track = IgThisTrackNow Then

MMControlCDPlayer.Command = "Play"

End If

Next nCounter

End If

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_NextClick(Cancel As Integer)

MMControlCDPlayer.Track = MMControlCDPlayer.Track + 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_PrevClick(Cancel As Integer)

MMControlCDPlayer.Command = "Prev"

MMControlCDPlayer.Track = MMControlCDPlayer.Track - 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End Sub

Private Sub MMControlCDPlayer_StatusUpdate ()

Dim nSec As Integer Dim nMin As Integer

' Начало работы

If nSelectItem = -1 Then

txtMinutes.Text = 0

txtSecundes.Text = 0

MMControlCDPlayer.Track = 1

End If

nSec = (MMControlCDPlayer.Position And 65535) / 256

nMin = MMControlCDPlayer.Position And 255

' Проверяем завершение текущего трека и переходим на следующий

If (nMin * 60 + nSec) - (nTrackPosMin * 60 + nTrackPosSec) > nLongMin * 60 + nLongSec Then

MMControlCDPlayer.Track = MMControlCDPlayer.Track + 1

nLongMin = MMControlCDPlayer.TrackLength And 255

nLongSec = (MMControlCDPlayer.TrackLength And 65535) / 256

nTrackPosMin = MMControlCDPlayer.TrackPosition And 255

nTrackPosSec = (MMControlCDPlayer.TrackPosition And 65535) / 256

End If

' Время трека

If (nMin * 60 + nSec) — (nTrackPosMin * 60 + nTrackPosSec) >= 0 Then

txtTrackNum.Text = MMControlCDPlayer.Track

txtMinutes.Text = (nMin * 60 + nSec) — (nTrackPosMin * 60 + nTrackPosSec)

txtSecundes.Text = txtMinutes.Text

txtMinutes.Text = Int(txtMinutes.Text / 60)

txtSecundes.Text = txtSecundes.Text — Int(txtSecundes.Text / 60) * 60

End If

' Конец диска

If (nMin * 60 + nSec) >= nLongDiskMin * 60 + nLongDiskSec Then

MMControlCDPlayer.Command = "Stop"

End If

End Sub

Работа созданного проигрывателя показана на рис. 12.10.

Рис. 12.10. Доработанный проигрыватель компакт-дисков в режиме выполнения

В тексте кода необходимо обратить внимание на распаковку (декодирование) значений позиционирования на диске. Информация о позиционировании упакована на диске в формате 2 (см. табл. 12.6), то есть первый байт, начиная с младшего, — это минуты, второй байт — секунды. Остальные байты нас пока не интересуют. Для распаковки информации, по аналогии с двоичной системой счисления, применяется операция логического AND со значениями свойств позиционирования. Для извлечения младшего байта (значение минут) в этой операции используется число 255 (28 — 1, в двоичном формате это восемь бит в состоянии 1). Для извлечения второго байта (значение секунд) используется число 65535 (216— 1, в двоичном формате это шестнадцать бит в состоянии 1) и отрезание младшего байта (сдвиг байтов вправо) на восемь бит (деление на 256).


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 13. Создание справочной системы приложения.

Пользуясь разработанным вами приложением, пользователь должен чувствовать себя комфортно и интуитивно понимать его. При возникновении затруднения он должен иметь возможность быстро получить справку о необходимых действиях. Пользователь может найти требуемую информацию в предназначенном для него руководстве или обратиться за консультацией к разработчику приложения. Однако проще всего обратиться к справочной системе приложения, содержащей информацию о приложении, описание его основных функций и инструкцию по работе.

Для отображения справочной информации в Visual Basic вы можете использовать справочную систему в формате WinHelp или HTML.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание справочной системы в формате WinHelp

Основу справочной системы составляют темы с пояснительным текстом. Содержание справочной системы включает список тем, доступных в системе. Каждая тема имеет заголовок и уникальный символьный идентификатор. Дополнительно каждой теме можно поставить в соответствие уникальный индекс темы, который должен быть целым числом.

Для поиска темы в справочной системе служат ключи, содержащие название темы и ссылку на нее. Каждая тема может иметь более одного ключа поиска. Кроме того, один ключ может содержать ссылку на несколько тем.

Для организации контекстного вызова темы из справочной системы вы можете использовать числовые значения индексов или значения ключа. Употребление идентификаторов тем для контекстного вывода справочной информации не допускается.

Чтобы связать между собой отдельные темы, применяются перекрестные ссылки. При этом текст, используемый для организации перекрестной ссылки, выделяется зеленым цветом и подчеркиванием.

В описании любой системы присутствуют специфические термины. Например, в системах складского учета к таким терминам относятся накладном, счет, отпуск товара. Термином может быть не только отдельное слово, но и любая фраза из текста темы. Справочная система Windows позволяет дать краткое определение каждому термину приложения. Такие термины на экране выделены зеленым цветом и пунктирным подчеркиванием. Если щелкнуть мышью на термине, для которого определено краткое описание, оно появится на экране в рамке поверх текста темы.

Создание справочной системы в формате WinHelp включает следующие этапы:

1. Создание описания справочной системы. Для этого можно использовать любой текстовый редактор, поддерживающий формат RTF. Описание содержит темы, индексы и ключи справочной системы. Структура документа должна соответствовать требованиям, предъявляемым компилятором справочной системы (Help Compiler).

2. Формирование файла с расширением cnt, содержащего иерархическое содержание создаваемой справочной системы.

3. Формирование текстового файла с расширением hpj, содержащего параметры для компиляции справочной системы: имя файла с описанием справочной системы, заголовок справочной системы.

4. Компиляция созданного текстового описания с использованием Help Compiler, входящего в комплект Visual Basic.

5. Определение свойства HelpContextiD для требуемых объектов формы, а также создание в приложении кнопок и пунктов меню для вызова справочной системы.

Рассмотрим только средства, наиболее часто используемые при создании справочной системы. Подробную информацию вы найдете в руководстве по применению Help Compiler. В качестве примера создадим простую справочную систему, состоящую из нескольких тем. Для каждой темы определим заголовки, идентификаторы и ключи, служащие для поиска информации.

Замечание

При разработке справочной системы крупных приложений используются, как правило, специальные средства, например ForeHelp, содержащие интегрированную среду.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Темы справочной системы

Формирование тем справочной системы начинается с создания файла описания в формате RTF. Проще всего использовать для этого редактор Microsoft Word. Создайте с помощью него новый файл. После этого введите тексты тем справочной системы, расположив каждую тему на отдельной странице. Затем для разделения тем вставьте между ними признак начала новой страницы путем нажатия комбинации клавиш <Ctrl>+<Enter>. Вы можете форматировать отдельные части темы, а также вставлять в текст рисунки (рис. 13.1).

Можно определить заголовки, идентификаторы и ключи поиска для каждой темы. В Microsoft Word для этих целей необходимо воспользоваться сносками. Указатели сноски должны располагаться в начале темы, а сам текст заголовка, идентификатора и ключа поиска — в области сноски.

Для определения заголовка темы выполните следующие действия:

1. Установите курсор в начало темы.

2. В меню Вставка выберите команду Сноска.

3. В открывшемся диалоговом окне для определения сноски выберите опцию Нестандартный маркер, а в качестве маркера сноски используйте символ $.

4. После этого введите заголовок темы в поле сноски (рис. 13.2).

Предупреждение

Будьте внимательны. Между маркером сноски и текстом заголовка должен быть только один пробел. Заголовок должен содержать не более 128 символов. Кроме того, запрещено форматирование.

Рис. 13.1. Тексты тем с рисунками

Рис. 13.2. Определение заголовка темы

Идентификатор темы определяется аналогично заголовку темы, только в качестве маркера сноски используется символ ft. При создании идентификатора необходимо придерживаться следующих правил:

  • идентификатор может содержать латинские буквы, цифры, а также символы точка (.) и подчеркивание (_);
  • длина идентификатора не должна превышать 255 символов;
  • имя идентификатора должно быть уникальным, т. к. оно используется для организации перекрестных ссылок.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Ключи для поиска тем

При определении ключей необходимо иметь в виду следующее:

  • в качестве маркера сноски используется латинский символ к;
  • в тексте сноски можно определить сразу несколько ключей поиска, разделив их знаком (;);
  • длина строки с ключами поиска не должна превышать 255 символов;
  • ключи могут содержать любые символы, а также знаки пунктуации (за исключением точки с запятой) и пробелы;
  • при поиске тем по ключам регистр введенных букв не учитывается.

Рис. 13.3. Определение ключей для поиска тем справочной системы

Рис. 13.4. Поиск темы по ключам справочной системы

На рис. 13.3 представлен фрагмент текстового описания справочной системы, а на рис. 13.4 — вкладка Указатель основного окна справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Перекрестные ссылки

Используя перекрестные ссылки справочной системы, вы можете перейти из текущей темы в связанные с ней или близкие ей по содержанию темы.

В предыдущем разделе вы узнали как создаются темы, для которых были определены идентификаторы. Теперь построим тему, в которой приводится ссылка на связанные с ней темы.

В качестве примера создадим в теме ссылку между фразой печать данных и темой с идентификатором Print_text. Для этого задайте для фразы печать данных формат Двойное подчеркивание. Затем установите курсор на следующую позицию за выделенной фразой, определите формат Скрытый и введите идентификатор темы, с которой устанавливается связь (в данном случае Print text).

Замечание

Идентификатор расположите сразу же за выделенной фразой, не оставляя между ними пробела (рис. 13.5).

Рис. 13.5. Создание перекрестной ссылки

Замечание

По умолчанию скрытый текст не отображается на экране, что довольно неудобно при создании описания справочной системы. Чтобы избежать этого, установите для категории Просмотр режим отображения скрытого текста в диалоговом окне Параметры, открывающемся при выборе команды Параметры меню Сервис.

Аналогичным образом вы можете установить связь с другими темами справочной системы Несмотря на то, что в тексте фраза была установлена в формате с двойным подчеркиванием, в справочной системе она появляется с обычным подчеркиванием. При позиционировании курсора на выделенной фразе меняется вид курсора, а при щелчке осуществляется переход к теме, связанной с данной фразой.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Пояснения к терминам

В справочной системе помимо перекрестных ссылок можно составить пояснения к отдельным терминам. Пояснение создается аналогично отдельной теме. Для него определяется идентификатор темы, после чего термин, требующий кратких пояснений, выделяется одинарным подчеркиванием. Затем за термином в скрытом формате вводится идентификатор поясняющей темы.

В справочной системе термины, для которых созданы пояснения, выделяются цветом и пунктирным подчеркиванием. При щелчке мыши на данном термине открывается окно с поясняющим текстом. Для закрытия окна с пояснениями необходимо щелкнуть мышью вне окна с текстом пояснения. После этого вы возвращаетесь в то же окно, откуда вызвали окно пояснения.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Формирование файла проекта справочной системы

Файл проекта справочной системы содержит параметры ее компиляции и может включать до шести разделов, выполняющих функции, указанные в табл. 13.1.

Таблица 13.1. Функции разделов справочной системы
Раздел | Функция
[Files] | Определяет список файлов с описанием тем
[Options] | Определяет заголовок справочной системы, а также некоторые другие параметры компиляции
[BuildTags] | Определяет список тем, включаемых в справочную систему
[Alias] | Определяет псевдонимы тем
[Map] | Назначает числовой индекс идентификатору темы
[Bitmaps] | Определяет список графических файлов, включаемых в справочную систему


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Раздел [Files]

В разделе [Files] перечисляются файлы в формате RTF, включенные в состав справочной системы. Например:

[Files]

SALES.RTF; инструкция пользователя

EDIT.RTF; инструкция по общим правилам ввода данных


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение параметров компиляции

Раздел [Options] файла проекта справочной системы содержит описание параметров компиляции. Ниже перечислены основные из них:

  • TITLE — определяет заголовок окна справочной системы, который должен содержать не более 32 символов;
  • COMPRESS — используется для сжатия справочного файла, создаваемого компилятором. Параметр может принимать значение True или False:
  • WARNING — определяет количество сообщений об ошибках и предупреждениях, выводимых при компиляции;
  • FORCEFONT — данный параметр используется в том случае, если в описании справочной системы использовались шрифты, отсутствующие на компьютере, где будет выполняться приложение. Параметр указывает компилятору на необходимость приведения всех используемых в описании шрифтов к типу, введенному с параметром FORCEFONT.

    Замечание

    Наименование шрифта, заданного параметром FORCEFONT, должно совпадать с его именем, которое отображается в папке Панель управления Windows. Пробелы в наименовании типа шрифта не допускаются.

Синтаксис параметра TITLE таков:

TITLE = имяЗаголовка

Параметр WARNING имеет следующий синтаксис:

WARNING = уровень,

где уровень имеет одно из трех значений:

Уровень | Выводимая информация
1 | Только наиболее серьезные ошибки
2 | Все ошибки
3 | Все ошибки и предупреждения


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Раздел [Map]

Наличие раздела [Map] обязательно в том случае, если при организации файла справочной системы применялись контекстные ссылки или свойство HelpContextID для вызова темы справочной системы.

Данный раздел содержит описание связи между идентификаторами тем и соответствующими им целыми значениями индекса тем. При использовании в приложении контекстного вызова справочной системы в разделе необходимо описать все идентификаторы, по которым будет осуществляться контекстный вызов.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Компиляция справочной системы

После того как описание тем справочной системы и файл проекта подготовлены, можно приступать к компиляции справочной системы. В результате будет создан файл справки, имеющий расширение hip.

Для компиляции справочной системы в Visual Basic вы можете воспользоваться программой Help Workshop, входящей в комплект поставки Visual Basic, выполнив следующие действия:

1. Запустите программу Help Workshop. Появится пустое окно программы.

2. Откройте в этом окне созданный вами файл проекта sales командой Open меню File.

3. Окно проекта содержит область просмотра файла проекта и кнопки, предназначенные для редактирования его разделов. Например, для редактирования раздела [Options] нажмите кнопку Options (Параметры). В результате на экране откроется диалоговое окно Options, содержащее несколько вкладок. Для того чтобы скорректировать текст файла проекта, вы должны установить на вкладках требуемые параметры. Открывая соответствующие диалоговые окна, скорректируйте текст файла проекта.

4. Уточнив параметры файла проекта, запустите его на компиляцию, нажав кнопку Save and Compile (Сохранить и компилировать), расположенную в нижнем правом углу окна проекта. Результаты компиляции отображаются в диалоговом окне Compilation.

Если не было ошибок компиляции, создается файл справки. Вы можете запустить его для проверки непосредственно из программы Help Workshop. Для этого выполните следующие действия:

1. В меню File (Файл) выберите команду Run Winhelp (Запустить Winhelp).

2. В поле File открывшегося диалогового окна введите имя файла справки или выберите нужный файл из раскрывающегося списка ранее созданных файлов справок. Для поиска файла справки можно воспользоваться кнопкой Browse (Обзор), расположенной с правой стороны этого поля.

3. Используя раскрывающийся список. Mapped Topic IDs (Идентификаторы тем), выберите тему, которую вы хотите отобразить на экране.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Содержание справочной системы

Обычно окно справочной системы содержит три вкладки: Содержание, Указатель и Поиск. Для того чтобы в диалоговом окне появилась вкладка Содержание, необходимо создать файл с содержанием справки. Например, для файла справки, приведенного на рис. 13.8, такой файл не был создан. Конечно, можно в области текста темы, открываемой при вызове справочной системы, указать ссылки на все остальные темы файла справки. Но при создании файла справки в среде Windows предпочтительнее отобразить содержание в иерархическом виде. Для создания такого содержания в Help Workshop выполните следующие действия:

1. В меню File (Файл) выберите команду New (Новый).

2. На экране открывается диалоговое окно New, в котором можно выбрать режим создания содержания справочной системы. Выберите опцию Help Contents (Содержание справочной системы). Открывается окно редактора содержания справочной системы.

3. В поле Default filename (and window) введите имя файла справки с темами, к которым отсылают элементы содержания.

4. В поле Default title введите заголовок окна содержания.

5. В центре диалогового окна расположена область отображения содержания справочной системы. В нее вы можете добавить заголовки нескольких уровней вложенности и ссылки на темы справочной системы. Для добавления заголовка самого верхнего уровня нажмите на кнопку Add Below (Добавить ниже). На экране открывается диалоговое окно Edit Contents Tab Entry.

6. Установите опцию Heading (Заголовок).

7. В поле Title введите наименование заголовка.

8. Нажмите кнопку ОК для закрытия диалогового окна.

9. Для создания заголовка следующего уровня снова нажмите кнопку Add Below и введите его наименование.

10. Созданный заголовок является на самом деле подзаголовком предыдущего. Нажатием кнопки Move Right переместите его правее на следующий уровень вложенности.

11. Для добавления ссылки на тему справочной системы нажмите кнопку Add Below или Add Above.

12. В открывшемся диалоговом окне Edit Contents Tab Entry установите опцию Topic (Тема).

13. В поле Title введите наименование заголовка, а в поле Topic ID — идентификатор темы справки.

14. Если тема находится в файле справки, отличном от файла, указанного в поле Default filename (and window), укажите в поле ввода Help file имя файла справки.

15. После ввода содержания справочной системы сохраните его.

Чтобы подключить содержание к файлу справки, откройте окно файла проекта и в разделе [Options] укажите имя файла с содержанием справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание справочной системы в формате HTML

В поставку Visual Basic 6 входит HTML Help Workshop, который, как и Help Workshop для WinHelp, позволяет создать справочную систему приложения. Для организации справочной системы в формате HTML выполните следующие действия:

1. Задайте темы справочной системы, сохраняя при этом каждую тему в отдельном HTML-файле. Для создания этих файлов вы можете использовать любой редактор файлов HTML, например, Microsoft Word.

2. Запустите программу HTML Help Workshop и постройте новый проект справочной системы. С помощью мастера проекта включите в проект ранее созданные файлы с темами. Определите свойства проекта.

Замечание

Если у вас имеется ранее созданный проект справочной системы в формате WinHelp, то с помощью мастера вы можете преобразовать его в проект формата HTML.

3. Укажите псевдоним для каждой темы.

4. Создайте файл, содержащий описание связи между псевдонимами тем и соответствующими им целочисленными значениями индексов тем. Включите этот файл в проект.

5. Создайте ключи для поиска тем справочной системы.

6. Сохраните все файлы проекта и скомпилируйте его.

7. В создаваемом на Visual Basic приложении укажите файл справочной системы (с расширением chm) в окне свойств проекта.

8. Для каждого объекта приложения, с которым связана тема справочной системы, задайте свойство HelpContextID.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно HTML Help Workshop

Окно программы HTML Help Workshop состоит из двух частей. В левой части находятся вкладки Project (Проект), Contents (Содержание), Index (Указатель) и Help (Справка). Слева от каждой вкладки размещена соответствующая панель инструментов.

В правой части окна отображается содержимое выбранной темы справочной системы в виде файла HTML. Вы можете не только просматривать этот файл, но и редактировать его с помощью команд меню Tags (Тэги) и кнопок панели инструментов.

HTML Help Workshop предоставляет возможность просматривать файлы с темами в Web-браузере. Для этого выберите имя требуемого файла в разделе [Files] и нажмите кнопку Display in Browser (Отобразить в браузере).


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение параметров проекта справочной системы

Параметры проекта отображаются в разделе [Options] вкладки Project. Для их редактирования нажмите кнопку Change Project Options (Изменить параметры проекта) на панели инструментов вкладки. Откроется диалоговое окно Options, которое содержит четыре вкладки: General (Общие), Files (Файлы), Compiler (Компилятор) и Merge Files (Объединяемые файлы).

На вкладке General вы определяете:

  • заголовок окна справочной системы;
  • файл темы и окно, которые выбираются при открытии справочной системы;
  • язык справочной системы.

Вкладка Files используется для указания расположения файлов справочной системы, а также файлов с указателями и содержанием. На вкладке Compiler задаются параметры компиляции справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение псевдонимов тем

Чтобы справочную систему можно было использовать в приложениях, вы должны определить псевдоним каждой темы. Для этого откройте диалоговое окно HtmlHelp API information, нажав одноименную кнопку на панели инструментов вкладки Project, и перейдите на вкладку Alias.

После нажатия кнопки Add (Добавить) и задания в диалоговом окне Alias (Псевдоним) псевдонима и имени связанного с ним файла темы в справочную систему будет добавлен новый псевдоним.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение связи между псевдонимами и индексами тем

Для открытия определенной темы справочной системы используются индексы тем. Связь между псевдонимами тем и соответствующими им целочисленными значениями индекса тем задается в отдельном текстовом файле. В нем вы должны описать все идентификаторы, по которым будет осуществляться контекстный вызов. Данный файл состоит из строк, содержащих ключевое слово #Define, за которым следуют разделенные пробелом идентификатор и индекс темы. Пример приведен ниже:

#Define IDH_CUSTOMER 3

#Define IDH_GOODS 4

После создания файла связи вы должны связать его с файлом проекта. Для этого в диалоговом окне HtmlHelp API information перейдите на вкладку Map и добавьте его в список подключаемых файлов.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание содержания справочной системы

Для создания содержания справочной системы в иерархическом виде перейдите на вкладку Contents (Содержание). В области содержания справочной системы вы можете добавить заголовки нескольких уровней вложенности и непосредственно ссылки на темы справочной системы.

Чтобы добавить заголовок или строку ссылки на тему справочной системы, нажмите соответственно на кнопку Insert a heading (Вставить заголовок) или Insert a page (Вставить страницу). Откроется диалоговое окно Table of Contents Entry. Задайте в нем наименование строки содержания и ссылку на тему справочной системы.

Вы можете создать многоуровневое содержание справочной системы. Для изменения уровня заголовка используйте кнопки Move selection right (Сдвинуть вправо) и Move selection left (Сдвинуть влево).


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание ключей для поиска тем

Для создания ключей поиска перейдите на вкладку Index (Указатель). Используя кнопки панели инструментов вкладки, вы можете создать новый ключ, редактировать прежний или удалить его.

Для добавления нового ключа нажмите кнопку Insert a keyword (Вставить ключ). Откроется диалоговое окно Index Entry, в котором в поле Keyword (Ключ) введите значение ключа, а затем в список Files/URLs and their information types с помощью кнопки Add (Добавить) добавьте созданные ранее темы справочной системы. Для изменения тем используйте кнопку Edit (Редактировать), а для удаления — кнопку Remove (Удалить).


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Компиляция и тестирование справочной системы

После того как вы подготовили проект справочной системы, его необходимо сохранить и скомпилировать. Используя кнопку Save project, contents and index files на панели инструментов вкладки Project, можно сохранять файлы проекта, содержания и указателя. Для компиляции созданного проекта нажмите кнопку Compile HTML file (Компилировать HTML-файл) на панели инструментов HTML Help Workshop.

Нажмите кнопку View compiled file (Просмотр скомпилированного файла), чтобы просмотреть созданный файл справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование справочной системы в приложениях

Мы рассмотрели создание справочных систем двух типов. Однако обращение к ним из приложения, созданного в Visual Basic, осуществляется одинаково. Рассмотрим в данном разделе свойства элементов управления, с помощью которых организуется связь с темами справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение темы справочной системы для элементов управления

Для связывания формы, элементов управления с темами справочной системы необходимо, прежде всего, определить для проекта файл справки. С помощью команды Properties меню Project откройте окно свойств проекта и введите в поле Help File Name (Имя файла справочной системы) имя файла справочной системы с полным путем к нему.

Затем необходимо задать для объектов формы или для самой формы свойство HelpContexID, которое использует индекс темы, заданный в разделе [MAP] файла проекта справочной системы.

Если вы установили это свойство, то во время просмотра формы нажатие клавиши <F1> приведет к открытию указанной темы справочной системы.


Ch 13.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 13. Создание справочной системы приложения.

Пользуясь разработанным вами приложением, пользователь должен чувствовать себя комфортно и интуитивно понимать его. При возникновении затруднения он должен иметь возможность быстро получить справку о необходимых действиях. Пользователь может найти требуемую информацию в предназначенном для него руководстве или обратиться за консультацией к разработчику приложения. Однако проще всего обратиться к справочной системе приложения, содержащей информацию о приложении, описание его основных функций и инструкцию по работе.

Для отображения справочной информации в Visual Basic вы можете использовать справочную систему в формате WinHelp или HTML.

Создание справочной системы в формате WinHelp

Основу справочной системы составляют темы с пояснительным текстом. Содержание справочной системы включает список тем, доступных в системе. Каждая тема имеет заголовок и уникальный символьный идентификатор. Дополнительно каждой теме можно поставить в соответствие уникальный индекс темы, который должен быть целым числом.

Для поиска темы в справочной системе служат ключи, содержащие название темы и ссылку на нее. Каждая тема может иметь более одного ключа поиска. Кроме того, один ключ может содержать ссылку на несколько тем.

Для организации контекстного вызова темы из справочной системы вы можете использовать числовые значения индексов или значения ключа. Употребление идентификаторов тем для контекстного вывода справочной информации не допускается.

Чтобы связать между собой отдельные темы, применяются перекрестные ссылки. При этом текст, используемый для организации перекрестной ссылки, выделяется зеленым цветом и подчеркиванием.

В описании любой системы присутствуют специфические термины. Например, в системах складского учета к таким терминам относятся накладном, счет, отпуск товара. Термином может быть не только отдельное слово, но и любая фраза из текста темы. Справочная система Windows позволяет дать краткое определение каждому термину приложения. Такие термины на экране выделены зеленым цветом и пунктирным подчеркиванием. Если щелкнуть мышью на термине, для которого определено краткое описание, оно появится на экране в рамке поверх текста темы.

Создание справочной системы в формате WinHelp включает следующие этапы:

1. Создание описания справочной системы. Для этого можно использовать любой текстовый редактор, поддерживающий формат RTF. Описание содержит темы, индексы и ключи справочной системы. Структура документа должна соответствовать требованиям, предъявляемым компилятором справочной системы (Help Compiler).

2. Формирование файла с расширением cnt, содержащего иерархическое содержание создаваемой справочной системы.

3. Формирование текстового файла с расширением hpj, содержащего параметры для компиляции справочной системы: имя файла с описанием справочной системы, заголовок справочной системы.

4. Компиляция созданного текстового описания с использованием Help Compiler, входящего в комплект Visual Basic.

5. Определение свойства HelpContextiD для требуемых объектов формы, а также создание в приложении кнопок и пунктов меню для вызова справочной системы.

Рассмотрим только средства, наиболее часто используемые при создании справочной системы. Подробную информацию вы найдете в руководстве по применению Help Compiler. В качестве примера создадим простую справочную систему, состоящую из нескольких тем. Для каждой темы определим заголовки, идентификаторы и ключи, служащие для поиска информации.

Замечание

При разработке справочной системы крупных приложений используются, как правило, специальные средства, например ForeHelp, содержащие интегрированную среду.

Темы справочной системы

Формирование тем справочной системы начинается с создания файла описания в формате RTF. Проще всего использовать для этого редактор Microsoft Word. Создайте с помощью него новый файл. После этого введите тексты тем справочной системы, расположив каждую тему на отдельной странице. Затем для разделения тем вставьте между ними признак начала новой страницы путем нажатия комбинации клавиш <Ctrl>+<Enter>. Вы можете форматировать отдельные части темы, а также вставлять в текст рисунки (рис. 13.1).

Можно определить заголовки, идентификаторы и ключи поиска для каждой темы. В Microsoft Word для этих целей необходимо воспользоваться сносками. Указатели сноски должны располагаться в начале темы, а сам текст заголовка, идентификатора и ключа поиска — в области сноски.

Для определения заголовка темы выполните следующие действия:

1. Установите курсор в начало темы.

2. В меню Вставка выберите команду Сноска.

3. В открывшемся диалоговом окне для определения сноски выберите опцию Нестандартный маркер, а в качестве маркера сноски используйте символ $.

4. После этого введите заголовок темы в поле сноски (рис. 13.2).

Предупреждение

Будьте внимательны. Между маркером сноски и текстом заголовка должен быть только один пробел. Заголовок должен содержать не более 128 символов. Кроме того, запрещено форматирование.

Рис. 13.1. Тексты тем с рисунками

Рис. 13.2. Определение заголовка темы

Идентификатор темы определяется аналогично заголовку темы, только в качестве маркера сноски используется символ ft. При создании идентификатора необходимо придерживаться следующих правил:

  • идентификатор может содержать латинские буквы, цифры, а также символы точка (.) и подчеркивание (_);
  • длина идентификатора не должна превышать 255 символов;
  • имя идентификатора должно быть уникальным, т. к. оно используется для организации перекрестных ссылок.

Ключи для поиска тем

При определении ключей необходимо иметь в виду следующее:

  • в качестве маркера сноски используется латинский символ к;
  • в тексте сноски можно определить сразу несколько ключей поиска, разделив их знаком (;);
  • длина строки с ключами поиска не должна превышать 255 символов;
  • ключи могут содержать любые символы, а также знаки пунктуации (за исключением точки с запятой) и пробелы;
  • при поиске тем по ключам регистр введенных букв не учитывается.

Рис. 13.3. Определение ключей для поиска тем справочной системы

Рис. 13.4. Поиск темы по ключам справочной системы

На рис. 13.3 представлен фрагмент текстового описания справочной системы, а на рис. 13.4 — вкладка Указатель основного окна справочной системы.

Перекрестные ссылки

Используя перекрестные ссылки справочной системы, вы можете перейти из текущей темы в связанные с ней или близкие ей по содержанию темы.

В предыдущем разделе вы узнали как создаются темы, для которых были определены идентификаторы. Теперь построим тему, в которой приводится ссылка на связанные с ней темы.

В качестве примера создадим в теме ссылку между фразой печать данных и темой с идентификатором Print_text. Для этого задайте для фразы печать данных формат Двойное подчеркивание. Затем установите курсор на следующую позицию за выделенной фразой, определите формат Скрытый и введите идентификатор темы, с которой устанавливается связь (в данном случае Print text).

Замечание

Идентификатор расположите сразу же за выделенной фразой, не оставляя между ними пробела (рис. 13.5).

Рис. 13.5. Создание перекрестной ссылки

Замечание

По умолчанию скрытый текст не отображается на экране, что довольно неудобно при создании описания справочной системы. Чтобы избежать этого, установите для категории Просмотр режим отображения скрытого текста в диалоговом окне Параметры, открывающемся при выборе команды Параметры меню Сервис.

Аналогичным образом вы можете установить связь с другими темами справочной системы Несмотря на то, что в тексте фраза была установлена в формате с двойным подчеркиванием, в справочной системе она появляется с обычным подчеркиванием. При позиционировании курсора на выделенной фразе меняется вид курсора, а при щелчке осуществляется переход к теме, связанной с данной фразой.

Пояснения к терминам

В справочной системе помимо перекрестных ссылок можно составить пояснения к отдельным терминам. Пояснение создается аналогично отдельной теме. Для него определяется идентификатор темы, после чего термин, требующий кратких пояснений, выделяется одинарным подчеркиванием. Затем за термином в скрытом формате вводится идентификатор поясняющей темы.

В справочной системе термины, для которых созданы пояснения, выделяются цветом и пунктирным подчеркиванием. При щелчке мыши на данном термине открывается окно с поясняющим текстом. Для закрытия окна с пояснениями необходимо щелкнуть мышью вне окна с текстом пояснения. После этого вы возвращаетесь в то же окно, откуда вызвали окно пояснения.

Формирование файла проекта справочной системы

Файл проекта справочной системы содержит параметры ее компиляции и может включать до шести разделов, выполняющих функции, указанные в табл. 13.1.

Таблица 13.1. Функции разделов справочной системы
Раздел | Функция
[Files] | Определяет список файлов с описанием тем
[Options] | Определяет заголовок справочной системы, а также некоторые другие параметры компиляции
[BuildTags] | Определяет список тем, включаемых в справочную систему
[Alias] | Определяет псевдонимы тем
[Map] | Назначает числовой индекс идентификатору темы
[Bitmaps] | Определяет список графических файлов, включаемых в справочную систему

Раздел [Files]

В разделе [Files] перечисляются файлы в формате RTF, включенные в состав справочной системы. Например:

[Files]

SALES.RTF; инструкция пользователя

EDIT.RTF; инструкция по общим правилам ввода данных

Определение параметров компиляции

Раздел [Options] файла проекта справочной системы содержит описание параметров компиляции. Ниже перечислены основные из них:

  • TITLE — определяет заголовок окна справочной системы, который должен содержать не более 32 символов;
  • COMPRESS — используется для сжатия справочного файла, создаваемого компилятором. Параметр может принимать значение True или False:
  • WARNING — определяет количество сообщений об ошибках и предупреждениях, выводимых при компиляции;
  • FORCEFONT — данный параметр используется в том случае, если в описании справочной системы использовались шрифты, отсутствующие на компьютере, где будет выполняться приложение. Параметр указывает компилятору на необходимость приведения всех используемых в описании шрифтов к типу, введенному с параметром FORCEFONT.

    Замечание

    Наименование шрифта, заданного параметром FORCEFONT, должно совпадать с его именем, которое отображается в папке Панель управления Windows. Пробелы в наименовании типа шрифта не допускаются.

Синтаксис параметра TITLE таков:

TITLE = имяЗаголовка

Параметр WARNING имеет следующий синтаксис:

WARNING = уровень,

где уровень имеет одно из трех значений:

Уровень | Выводимая информация
1 | Только наиболее серьезные ошибки
2 | Все ошибки
3 | Все ошибки и предупреждения

Раздел [Map]

Наличие раздела [Map] обязательно в том случае, если при организации файла справочной системы применялись контекстные ссылки или свойство HelpContextID для вызова темы справочной системы.

Данный раздел содержит описание связи между идентификаторами тем и соответствующими им целыми значениями индекса тем. При использовании в приложении контекстного вызова справочной системы в разделе необходимо описать все идентификаторы, по которым будет осуществляться контекстный вызов.

Компиляция справочной системы

После того как описание тем справочной системы и файл проекта подготовлены, можно приступать к компиляции справочной системы. В результате будет создан файл справки, имеющий расширение hip.

Для компиляции справочной системы в Visual Basic вы можете воспользоваться программой Help Workshop, входящей в комплект поставки Visual Basic, выполнив следующие действия:

1. Запустите программу Help Workshop. Появится пустое окно программы.

2. Откройте в этом окне созданный вами файл проекта sales командой Open меню File.

3. Окно проекта содержит область просмотра файла проекта и кнопки, предназначенные для редактирования его разделов. Например, для редактирования раздела [Options] нажмите кнопку Options (Параметры). В результате на экране откроется диалоговое окно Options, содержащее несколько вкладок. Для того чтобы скорректировать текст файла проекта, вы должны установить на вкладках требуемые параметры. Открывая соответствующие диалоговые окна, скорректируйте текст файла проекта.

4. Уточнив параметры файла проекта, запустите его на компиляцию, нажав кнопку Save and Compile (Сохранить и компилировать), расположенную в нижнем правом углу окна проекта. Результаты компиляции отображаются в диалоговом окне Compilation.

Если не было ошибок компиляции, создается файл справки. Вы можете запустить его для проверки непосредственно из программы Help Workshop. Для этого выполните следующие действия:

1. В меню File (Файл) выберите команду Run Winhelp (Запустить Winhelp).

2. В поле File открывшегося диалогового окна введите имя файла справки или выберите нужный файл из раскрывающегося списка ранее созданных файлов справок. Для поиска файла справки можно воспользоваться кнопкой Browse (Обзор), расположенной с правой стороны этого поля.

3. Используя раскрывающийся список. Mapped Topic IDs (Идентификаторы тем), выберите тему, которую вы хотите отобразить на экране.

Содержание справочной системы

Обычно окно справочной системы содержит три вкладки: Содержание, Указатель и Поиск. Для того чтобы в диалоговом окне появилась вкладка Содержание, необходимо создать файл с содержанием справки. Например, для файла справки, приведенного на рис. 13.8, такой файл не был создан. Конечно, можно в области текста темы, открываемой при вызове справочной системы, указать ссылки на все остальные темы файла справки. Но при создании файла справки в среде Windows предпочтительнее отобразить содержание в иерархическом виде. Для создания такого содержания в Help Workshop выполните следующие действия:

1. В меню File (Файл) выберите команду New (Новый).

2. На экране открывается диалоговое окно New, в котором можно выбрать режим создания содержания справочной системы. Выберите опцию Help Contents (Содержание справочной системы). Открывается окно редактора содержания справочной системы.

3. В поле Default filename (and window) введите имя файла справки с темами, к которым отсылают элементы содержания.

4. В поле Default title введите заголовок окна содержания.

5. В центре диалогового окна расположена область отображения содержания справочной системы. В нее вы можете добавить заголовки нескольких уровней вложенности и ссылки на темы справочной системы. Для добавления заголовка самого верхнего уровня нажмите на кнопку Add Below (Добавить ниже). На экране открывается диалоговое окно Edit Contents Tab Entry.

6. Установите опцию Heading (Заголовок).

7. В поле Title введите наименование заголовка.

8. Нажмите кнопку ОК для закрытия диалогового окна.

9. Для создания заголовка следующего уровня снова нажмите кнопку Add Below и введите его наименование.

10. Созданный заголовок является на самом деле подзаголовком предыдущего. Нажатием кнопки Move Right переместите его правее на следующий уровень вложенности.

11. Для добавления ссылки на тему справочной системы нажмите кнопку Add Below или Add Above.

12. В открывшемся диалоговом окне Edit Contents Tab Entry установите опцию Topic (Тема).

13. В поле Title введите наименование заголовка, а в поле Topic ID — идентификатор темы справки.

14. Если тема находится в файле справки, отличном от файла, указанного в поле Default filename (and window), укажите в поле ввода Help file имя файла справки.

15. После ввода содержания справочной системы сохраните его.

Чтобы подключить содержание к файлу справки, откройте окно файла проекта и в разделе [Options] укажите имя файла с содержанием справочной системы.

Создание справочной системы в формате HTML

В поставку Visual Basic 6 входит HTML Help Workshop, который, как и Help Workshop для WinHelp, позволяет создать справочную систему приложения. Для организации справочной системы в формате HTML выполните следующие действия:

1. Задайте темы справочной системы, сохраняя при этом каждую тему в отдельном HTML-файле. Для создания этих файлов вы можете использовать любой редактор файлов HTML, например, Microsoft Word.

2. Запустите программу HTML Help Workshop и постройте новый проект справочной системы. С помощью мастера проекта включите в проект ранее созданные файлы с темами. Определите свойства проекта.

Замечание

Если у вас имеется ранее созданный проект справочной системы в формате WinHelp, то с помощью мастера вы можете преобразовать его в проект формата HTML.

3. Укажите псевдоним для каждой темы.

4. Создайте файл, содержащий описание связи между псевдонимами тем и соответствующими им целочисленными значениями индексов тем. Включите этот файл в проект.

5. Создайте ключи для поиска тем справочной системы.

6. Сохраните все файлы проекта и скомпилируйте его.

7. В создаваемом на Visual Basic приложении укажите файл справочной системы (с расширением chm) в окне свойств проекта.

8. Для каждого объекта приложения, с которым связана тема справочной системы, задайте свойство HelpContextID.

Окно HTML Help Workshop

Окно программы HTML Help Workshop состоит из двух частей. В левой части находятся вкладки Project (Проект), Contents (Содержание), Index (Указатель) и Help (Справка). Слева от каждой вкладки размещена соответствующая панель инструментов.

В правой части окна отображается содержимое выбранной темы справочной системы в виде файла HTML. Вы можете не только просматривать этот файл, но и редактировать его с помощью команд меню Tags (Тэги) и кнопок панели инструментов.

HTML Help Workshop предоставляет возможность просматривать файлы с темами в Web-браузере. Для этого выберите имя требуемого файла в разделе [Files] и нажмите кнопку Display in Browser (Отобразить в браузере).

Определение параметров проекта справочной системы

Параметры проекта отображаются в разделе [Options] вкладки Project. Для их редактирования нажмите кнопку Change Project Options (Изменить параметры проекта) на панели инструментов вкладки. Откроется диалоговое окно Options, которое содержит четыре вкладки: General (Общие), Files (Файлы), Compiler (Компилятор) и Merge Files (Объединяемые файлы).

На вкладке General вы определяете:

  • заголовок окна справочной системы;
  • файл темы и окно, которые выбираются при открытии справочной системы;
  • язык справочной системы.

Вкладка Files используется для указания расположения файлов справочной системы, а также файлов с указателями и содержанием. На вкладке Compiler задаются параметры компиляции справочной системы.

Определение псевдонимов тем

Чтобы справочную систему можно было использовать в приложениях, вы должны определить псевдоним каждой темы. Для этого откройте диалоговое окно HtmlHelp API information, нажав одноименную кнопку на панели инструментов вкладки Project, и перейдите на вкладку Alias.

После нажатия кнопки Add (Добавить) и задания в диалоговом окне Alias (Псевдоним) псевдонима и имени связанного с ним файла темы в справочную систему будет добавлен новый псевдоним.

Определение связи между псевдонимами и индексами тем

Для открытия определенной темы справочной системы используются индексы тем. Связь между псевдонимами тем и соответствующими им целочисленными значениями индекса тем задается в отдельном текстовом файле. В нем вы должны описать все идентификаторы, по которым будет осуществляться контекстный вызов. Данный файл состоит из строк, содержащих ключевое слово #Define, за которым следуют разделенные пробелом идентификатор и индекс темы. Пример приведен ниже:

#Define IDH_CUSTOMER 3

#Define IDH_GOODS 4

После создания файла связи вы должны связать его с файлом проекта. Для этого в диалоговом окне HtmlHelp API information перейдите на вкладку Map и добавьте его в список подключаемых файлов.

Создание содержания справочной системы

Для создания содержания справочной системы в иерархическом виде перейдите на вкладку Contents (Содержание). В области содержания справочной системы вы можете добавить заголовки нескольких уровней вложенности и непосредственно ссылки на темы справочной системы.

Чтобы добавить заголовок или строку ссылки на тему справочной системы, нажмите соответственно на кнопку Insert a heading (Вставить заголовок) или Insert a page (Вставить страницу). Откроется диалоговое окно Table of Contents Entry. Задайте в нем наименование строки содержания и ссылку на тему справочной системы.

Вы можете создать многоуровневое содержание справочной системы. Для изменения уровня заголовка используйте кнопки Move selection right (Сдвинуть вправо) и Move selection left (Сдвинуть влево).

Создание ключей для поиска тем

Для создания ключей поиска перейдите на вкладку Index (Указатель). Используя кнопки панели инструментов вкладки, вы можете создать новый ключ, редактировать прежний или удалить его.

Для добавления нового ключа нажмите кнопку Insert a keyword (Вставить ключ). Откроется диалоговое окно Index Entry, в котором в поле Keyword (Ключ) введите значение ключа, а затем в список Files/URLs and their information types с помощью кнопки Add (Добавить) добавьте созданные ранее темы справочной системы. Для изменения тем используйте кнопку Edit (Редактировать), а для удаления — кнопку Remove (Удалить).

Компиляция и тестирование справочной системы

После того как вы подготовили проект справочной системы, его необходимо сохранить и скомпилировать. Используя кнопку Save project, contents and index files на панели инструментов вкладки Project, можно сохранять файлы проекта, содержания и указателя. Для компиляции созданного проекта нажмите кнопку Compile HTML file (Компилировать HTML-файл) на панели инструментов HTML Help Workshop.

Нажмите кнопку View compiled file (Просмотр скомпилированного файла), чтобы просмотреть созданный файл справочной системы.

Использование справочной системы в приложениях

Мы рассмотрели создание справочных систем двух типов. Однако обращение к ним из приложения, созданного в Visual Basic, осуществляется одинаково. Рассмотрим в данном разделе свойства элементов управления, с помощью которых организуется связь с темами справочной системы.

Определение темы справочной системы для элементов управления

Для связывания формы, элементов управления с темами справочной системы необходимо, прежде всего, определить для проекта файл справки. С помощью команды Properties меню Project откройте окно свойств проекта и введите в поле Help File Name (Имя файла справочной системы) имя файла справочной системы с полным путем к нему.

Затем необходимо задать для объектов формы или для самой формы свойство HelpContexID, которое использует индекс темы, заданный в разделе [MAP] файла проекта справочной системы.

Если вы установили это свойство, то во время просмотра формы нажатие клавиши <F1> приведет к открытию указанной темы справочной системы.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 14. Разработка компонентов ActiveX.

Прежде чем перейти к разработке компонентов ActiveX, необходимо рассказать об этой новой технологии, разработанной фирмой Microsoft. Она дает возможность программисту оторваться от среды разработки, поскольку среда, в которой поддерживается технология ActiveX, "понимает" любой компонент ActiveX, в том числе разработанный в другой среде. Это означает, что любые компоненты, созданные в Visual Basic 6, можно без проблем использовать при работе, например, в Visual C++ или в любой другой среде проектирования, которая поддерживает технологию ActiveX.

Одним из основных свойств технологии ActiveX является ее ориентация на Internet, что позволяет применять в своей разработке любые физически удаленные компоненты, используя возможности доступа через Internet. Это также означает, что любой компонент, разработанный при помощи этой технологии, можно использовать в проектах, предназначенных для работы в Internet.

На самом деле технология ActiveX — собирательное понятие, это сумма технологий, таких как:

  • элементы управления ActiveX — технология создания элементов управления ActiveX;
  • документы ActiveX — технология создания документов, работающих в браузерах Internet, и приведение документов (например, документов Word) к стандарту документов ActiveX;
  • Remote Automation — технология удаленного управления;
  • технология Active DeskTop — средства интеграции HTML-документов и элементов (таких, как элементы управления ActiveX или Java-апплеты — сценарии) непосредственно на рабочем экране пользователя;
  • Active Movie — технология работы с аудио и видео форматами в браузерах Internet;
  • Active Server Pages — технология создания и выполнения сценариев на Web-серверах.

В данной главе изучим только верхушку этого айсберга — элементы управления ActiveX, а именно: их создание, модификацию, использование в приложениях.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Основные сведения об ActiveX-компонентах

Основные понятия технологии ActiveX — компоненты ActiveX, объектные модели СОМ (Component Object Model, модель составных объектов) и DCOM (Distributed СОМ).

Компоненты ActiveX — это элементы управления ActiveX, документы ActiveX, источники данных (ADO или RDO), выполняемые файлы ActiveX ЕХЕ и библиотеки ActiveX DLL. Компоненты представляют собой отдельные файлы ОСХ, ЕХЕ или DLL и могут использоваться для создания классов объектов или выполнения каких-либо функций приложения.

Фактически компонент ActiveX — это отдельный проект, содержащий набор элементов управления, классов и других программных модулей, скомпилированный затем в файл ОСХ, ЕХЕ или DLL в зависимости от целей применения этого компонента.

При разработке компонентов ActiveX необходимо исходить из целей применения этих компонентов. Можно создать целый набор элементов управления в одном файле ОСХ для настольных приложений, однако из-за большого размера файла они будут медленно работать в Internet-приложениях. Для работы в Internet эти элементы управления необходимо выделить в отдельные файлы небольшого размера.

Компоненты ActiveX основаны на программной модели СОМ, которая обеспечивает межплатформенные возможности технологии ActiveX.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Модель составных объектов (СОМ)

Модель составных объектов представляет собой программную модель, а именно: набор стандартных сервисов (функций) и спецификаций (стандартов обмена, стандартов вызова функций), обеспечивающих реализацию объектно-ориентированного подхода для разработки приложений клиент/сервер, работающих в том числе и в Internet, точнее, в первую очередь в Internet. Причем данная модель работает вне зависимости от среды проектирования, с условием, конечно, что эта платформа (среда проектирования) поддерживает модель СОМ.

Модель СОМ определяет стандартный внутренний интерфейс между объектами и методику существования (создание объекта, инициализация объекта, завершение работы объекта) и взаимодействия объектов (вызов функций, обмен данными между объектами). Этот интерфейс обеспечивает взаимодействие любых объектов модели СОМ между собой.

Программная модель СОМ имеет открытую архитектуру, что дополняет гибкость модели и возможность работы с любой платформой.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Модель распределенных составных объектов (DCOM)

Модель DCOM (Distributed СОМ) — это развитие модели СОМ для эффективной работы в Internet. В модели DCOM поддерживается объектный протокол, который дает возможность прямого доступа объектов СОМ друг к другу при помощи сети.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание элементов управления ActiveX

Элементы управления ActiveX — один из типов компонентов ActiveX. Рассмотрим возможности их создания и использования в Visual Basic 6.

Создание элементов управления состоит из ряда этапов.

  • Постановка задачи на проектирование элемента управления ActiveX. На этом этапе определяется его внешний вид, то, какими свойствами и методами он должен обладать, на какие события должен реагировать, а также какие готовые элементы управления потребуются для его создания.
  • Проектирование вида создаваемого элемента управления, сборка элемента управления из готовых элементов, если в этом есть необходимость.
  • Добавление событий.
  • Добавление методов элемента управления. Добавление необходимых свойств. Проектирование страницы свойств.
  • Проверка и тестирование вновь созданного элемента управления ActiveX, в том числе с использованием Internet, если он создан для работы в сети.
  • Доработка по итогам проверки элемента управления.
  • Компиляция файла, то есть создание файла компонента.

    Замечание

    Проверка и доработки могут быть циклическими. После полной проверки можно выполнить компиляцию и получить файл нового компонента ActiveX. Этот файл можно подключать к проекту так же, как и все стандартные компоненты.

Рассмотрим более подробно этапы создания элемента управления ActiveX на примере кнопки управления типа commandButton, предназначенной для открытия бланка новой формы.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование вида элемента управления

Чтобы создать новый элемент управления ActiveX, откройте новый проект типа ActiveX Control. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в открывшемся диалоговом окне New Project (рис. 14.1) дважды щелкните мышью на значке ActiveX Control.

Рис. 14.1. Выбор типа нового проекта для создания элемента управления ActiveX

В открытом проекте по умолчанию находится объект типа UserControl, в котором размещаются все вновь создаваемые или вставляемые элементы управления. Этот объект служит контейнером для содержащихся в нем объектов, размещаемых при проектировании нового элемента управления ActiveX. Все свойства и события объекта UserControl можно в дальнейшем использовать при программировании вновь создаваемого элемента управления.

В нашем примере для создания кнопки управления выполните следующие действия:

1. Откройте новый проект, как было указано выше.

2. Присвойте проекту имя MyCBNewForm. Для этого в меню Project (Проект) выберите команду Projecti Properties (Свойства Project 1) и в поле Project Name открывшегося окна свойств проекта введите требуемое имя.

3. Сохраните проект под тем же именем, выбрав команду Save Project As (Сохранить проект как) меню File (Файл).

4. Добавьте в контейнер элемент управления commandButton, дважды щелкнув мышью кнопку CommandButton ЩЯ на панели элементов управления. Присвойте этой кнопке имя cbNewForm.

5. Чтобы поместить на кнопку графическое изображение, установите для свойства style значение 1-Graphical.

Воспользовавшись свойством picture кнопки, поместите на нее желаемое изображение, которое можно взять, например, из коллекции значков в каталоге \Common\Graphics\Bitmaps\OfrCtlBr\Small\Color\. Воспользуемся изображением New.bmp. С помощью свойств Disabiedpicture и Downpicture можно задать изображения, отображаемые на кнопке, в тех случаях, когда она недоступна или находится в нажатом состоянии.

Полученная кнопка показана на рис. 14.2, однако ее необходимо еще немного доработать.

Рис. 14.2. Новый элемент управления cbNewForm в контейнере UserControl

Чтобы при использовании созданной кнопки не было видно полей контейнера, переместите кнопку в левый верхний угол контейнера.

С той же целью установите размеры объекта-контейнера равными размерам кнопки.

Полученная кнопка показана на рис. 14.3.

Рис. 14.3. Окончательный вид нового элемента управления cbNewForm

В принципе, уже в таком виде вновь полученную кнопку (объект типа cbNewForm) можно вставлять в свои приложения. При этом кнопка cbNewForm созданного элемента управления появится на панели элементов управления.

Замечание

Прежде чем использовать созданную кнопку в проекте, ее необходимо подключить к проекту. О подключении элемента управления ActiveX к проекту будет сказано чуть позже.

По умолчанию все новые элементы управления представлены на панели элементов одним типовым значком Отличить их можно только по подсказке, появляющейся при установке курсора на значок. Она соответствует наименованию этого элемента управления, заданному свойством Name. Для замены типового значка на пользовательский используется свойство ToolboxBitmap элемента управления userControl (контейнера нашей кнопки). Чтобы изменить значок, откройте диалоговое окно Load Bitmap (Загрузить значок), нажав на кнопку с тремя точками в поле свойства ToolboxBitmap, найдите требуемый значок и нажмите кнопку Открыть или дважды щелкните кнопкой мыши на найденном файле значка.

Полученная в таком виде кнопка еще не совсем готова к использованию. Для того чтобы кнопка стала полноценным элементом управления ActiveX и выполняла заданные действия, а также обладала необходимыми свойствами и работала с событиями, их необходимо добавить в наш элемент управления cbNewForm. Рассмотрим, как в элемент управления ActiveX добавляются новые события, методы и свойства, называемые членами элемента управления.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление событий

По умолчанию кнопка уже характеризуется некоторыми событиями, унаследованными от объекта-контейнера. Среди них следующие:

  • click — щелчок левой кнопкой мыши
  • DragDrop — перемещение объекта
  • DragOver — перемещение объекта поверх другого объекта
  • GotFocus — установка фокуса на объект
  • KeyDown — нажатие на клавишу
  • Keypress — нажатие и отпускание клавиши
  • Keyup — отпускание клавиши
  • LostFocus — потеря фокуса объектом
  • MouseDown — нажатие кнопки мыши на объекте
  • MouseMove — перемещение указателя мыши за границы объекта
  • MouseUp — отпускание кнопки мыши на объекте

При необходимости можно добавить кнопке свои события. Сделать это достаточно просто. Для этого объявите новое событие с помощью следующего кода:

Public Event NewForm ()

Затем создайте процедуру активизации события, введя код, аналогичный указанному ниже:

Private Sub cbNewForm_Click()

RaiseEvent NewForm

End Sub

В приведенном примере при нажатии кнопки будет инициироваться дополнительное событие NewForm, к которому можно привязывать выполнение действий в приложении, в нашем случае вызов бланка формы.

Еще проще событие добавляется с помощью диалогового окна Add Procedure (рис. 14.4), открываемого командой Add Procedure (Добавить процедуру) меню Tools (Сервис).

Рис. 14.4. Диалоговое окно Add Procedure для ввода членов элемента управления ActiveX

Для ввода нового события в этом диалоговом окне необходимо лишь ввести имя события в поле Name (Наименование), установить переключатель Type (Тип) в положение Event (Событие) и выйти из диалогового окна Add Procedure, нажав кнопку ОК. При этом в код элемента управления будет введено объявление нового события. После этого следует ввести инициализацию события, как было указано выше при добавлении события вручную.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление методов

Чтобы добавить метод, необходимо ввести в окно редактора код следующего вида:

Public Sub NewMethod()

Функциональный код метода

End Sub

Как видно из текста кода, это просто добавление подпрограммы или функции, реализующей требуемые функциональные возможности в элементе управления ActiveX.

Как и для ввода события, для добавления метода можно воспользоваться диалоговым окном Add Procedure (Добавить процедуру), показанным на рис. 14.4. При этом переключатель Type (Тип) необходимо установить в значение Sub (Подпрограмма) или Function (Функция). Добавляемый в код элемента управления шаблон при выборе опции Sub будет следующим:

Public Sub NewMethod()

End Sub

При установке опции Function добавляемый в код элемента управления шаблон будет выглядеть так:

Public Function NewMethod()

End Function

После ввода шаблона необходимо запрограммировать вновь созданный метод, введя в шаблон функциональный код.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление свойств

Добавление свойств — наиболее трудоемкий процесс. В принципе, к свойству можно относиться как к переменной, связанной с объектом. Свойства для элемента управления ActiveX создаются при помощи процедур Property Get (возврат значения свойства) и property Let (установка значения свойства). При этом для добавления свойства, доступного только для чтения, можно определить только процедуру возврата значения свойства property Get.

Существует и третья процедура создания свойств property set, которая применяется при объявлении свойств, являющихся объектами, как, например, свойство Font, которое само по себе имеет набор свойств: шрифт, размер шрифта, начертание и другие. Однако такие сложные свойства пока не являются предметом нашего изучения.

Обычно при объявлении свойств также выполняется их начальная инициализация с использованием констант и переменных. Константы и переменные для начальной инициализации при этом должны быть объявлены, например:

Const prpToolTipTextDefault = ""

Dim prpToolTipText As String

Объявление свойств выполняется при помощи процедур свойств property Let и property Get следующим образом:

Public Property Get ToolTipText () As String

ToolTipText = prpToolTipText

End Property

Public Property Let ToolTipText(ByVal New_ToolTipText As String)

prpToolTipText = New_ToolTipText

PropertyChanged "ToolTipText"

End Property

Инициализация свойств (присвоение значений по умолчанию) выполняется по событию initproperties контейнера userControl с использованием констант и переменных инициализации:

Private Sub UserControl Initproperties ()

prpToolTipText = prpToolTipTextDefault

End Sub

Для сохранения значения свойства, установленного во время разработки приложения, вы можете использовать объект типа propertyBag, который содержится по умолчанию в контейнере userControl любого создаваемого в Visual Basic 6 объекта ActiveX. Объект PropertyBag имеет два метода для записи/чтения значения свойства: writeproperty и Readproperty. Синтаксис метода writeproperty следующий:

PropertyBag.WriteProperty (свойство, значение, эначениеПоУмолчанию)

где:

  • Property — наименование свойства;
  • valProperty — сохраняемое значение свойства;
  • valPropertyDef — значение свойства по умолчанию. Метод Readproperty, используемый для чтения данных из объекта

PropertyBag, выглядит так:

PropertyBag.WriteProperty (свойство, переменная)

где:

  • property — наименование свойства;
  • varForProperty — переменная, в которую передается сохраняемое значение свойства.

Кроме этих методов в контейнере UserControl существуют два специальных события: WriteProperties И ReadProperties. с помощью этих событий и методов вы можете установить и прочитать значения свойств:

Private Sub UserControlJReadProperties(PropBag As PropertyBag)

prpToolTipText = PropBag.ReadProperty("ToolTipText", prpToolTipTextDefault)

End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("ToolTipText", prpToolTipText, prpToolTipTextDefault)

End Sub

Для добавления свойства с помощью диалогового окна Add Procedure (рис. 14.4) следует установить переключатель Type (Тип) в значение Property (Свойство). После этого автоматически будет добавлен шаблон кода, в который затем необходимо внести следующие операторы:

Public Property Get NewPropertyO As Variant

End Property

Public Property Let NewProperty(ByVal vNewValue As Variant)

End Property

Добавим новое свойство Newproperty для созданной нами ранее кнопки cbNewForm. Свойство будет содержать текстовое значение. Для этого необходимо выполнить следующие действия:

1. Добавьте в исходный текст код, указанный ниже. Можно воспользоваться командой Add Procedure (Добавить процедуру) меню Tools (Сервис), выбрав из переключателя Type значение Property (Свойство). В начало исходного текста добавьте описание константы:

Const prpNewPropertyDefault = "Новое свойство"

Public Property Get NewPropertyO As String

NewProperty = prpNewPropertyDefault

End Property

Public Property Let NewProperty(ByVal vNewValue As String)

NewProperty() = vNewValue

End Property

2. Для дальнейшей демонстрации использования свойства создайте файл с расширением осх с помощью команды Make cbNewForm.ocx меню File.

3. Для присвоения свойства и чтения его значения создайте новый проект типа Standard EXE. Назовите его TestProject. С помощью окна компонентов Components (Компоненты), открываемого командой Components меню Project (Проект), подключите созданный компонент к этому проекту. Форму Formi переименуйте в frmTestForm.

4. После подключения новый элемент управления появляется на панели элементов управления.

5. Добавьте этот элемент управления в форму и назовите его cbNewFormAbout.

6. Определите следующие действия для процедуры обработки события нажатия кнопки мыши:

MsgBox cbNewFormAbout.NewProperty,, "Сведения о свойстве".

7. Запустите проект на выполнение и, нажимая на кнопку, убедитесь в правильности возвращаемого значения свойства.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание свойств, событий и методов с помощью мастера ActiveX Control Interface Wizard

Вышеуказанные способы добавления свойств, методов и событий для элемента управления — длительный и кропотливый процесс, особенно если операцию необходимо повторять много раз. Для облегчения и ускорения работы программиста при вводе большого количества свойств, методов, событий в элемент управления ActiveX среда Visual Basic 6 предоставляет специальный инструмент — мастер ActiveX Control Interface Wizard (Мастер интерфейса элемента управления ActiveX). Посмотрим, как он работает.

Мастер интерфейса элементов управления ActiveX (рис. 14.5) вызывается командой ActiveX Control Interface Wizard меню Add-Ins (Надстройки).

Замечание

Чтобы подключить мастера ActiveX Control Interface Wizard к среде проектирования, необходимо в меню Add-Ins выбрать команду Add-In Manager (Диспетчер надстроек). Затем в окне диспетчера следует дважды щелкнуть мышью на строке VB6 ActiveX Ctrl Interface Wizard или установить курсор на это значение и выбрать для него флажок Loaded/Unloaded (Загружен/Выгружен), после чего закрыть окно, нажав кнопку ОК. Если необходимо постоянное присутствие команды вызова мастера интерфейса в меню, следует установить флажок Load on Startup (Загрузить при запуске).

Мастер интерфейса добавляет необходимый код при объявлении свойств и переменных, инициализации членов элемента управления, шаблонов кода процедур и функций. Конечно, он не освобождает полностью программиста от написания кода, но существенно облегчает эту задачу.

Как и все мастера в Visual Basic 6, мастер ActiveX Control Interface Wizard

состоит из последовательности шагов по созданию свойств элемента управления. Переход к следующему шагу выполняется нажатием кнопки Next (Далее), возврат к предыдущему шагу — нажатием кнопки Back (Назад). Если кнопка Finish (Готово) доступна, на этом шаге можно завершить работу мастера и выполнять доработку кода самостоятельно.

1. Чтобы запустить мастера, в меню Tools выберите команду ActiveX Control Interface Wizard.

Появляется диалоговое окно Introduction (Введение) (рис 14.5). Оно содержит флажок Skip this screen in the future (Пропускать этот экран в дальнейшем), определяющий, показывать первое окно мастера при последующих запусках или нет. Нажмите кнопку Next.

Рис. 14.5. Диалоговое окно Introduction мастера ActiveX Control Interface Wizard

2. На втором шаге. Select Interface Members (Выбор членов интерфейса) мастера (рис. 14.6) начинается собственно проектирование событий, свойств и методов. На этом шаге следует сформировать список необходимых для нового элемента управления членов из набора возможных, предлагаемых в списке Available names (Доступные наименования). В элементе управления будут присутствовать только те члены, которые находятся в правом списке Selected names (Выбранные наименования). Правый список формируется переносом значений из левого списка с помощью следующих кнопок:

Кнопка | Назначение
 | Переносит из списка Available names в список Selected names выделенные члены элемента управления
 | Переносит из списка Available names в список Selected names все члены
 | Возвращает из списка Selected names в список Available names выделенные члены элемента управления
 | Возвращает из списка Selected names в список Available names все размещенные члены элемента управления

Используя кнопки, сформируйте список необходимых событий, свойств и методов элемента управления и нажмите кнопку Next.

Рис. 14.6. Выбор членов интерфейса на втором шаге мастера ActiveX Control Interface Wizard

Рис. 14.7. Диалоговое окно Create Custom Interface Members

3. На третьем шаге Create Custom Interface Members (Создание пользовательских членов интерфейса) мастер предоставляет возможность программисту работать с пользовательскими событиями, методами и свойствами. В этом окне (рис. 14.7) можно с помощью:

  • кнопки New (Новый) добавить член элемента управления;
  • кнопки Edit (Правка) изменить наименование уже существующего члена;
  • кнопки Delete (Удалить) удалить ненужный член элемента управления.

При добавлении нового члена элемента управления вызывается диалоговое окно Add Custom Member (Добавление пользовательского члена). В этом окне (рис. 14.8) необходимо в поле Name (Имя) ввести имя члена и указать с помощью переключателя Type (Тип) его тип.

После добавления нового пользовательского члена элемента управления ActiveX он появляется в списке My Custom Members (Мои пользовательские члены). Сформировав список всех необходимых пользовательских членов, нажмите кнопку Next для перехода к следующему шагу мастера.

Рис. 14.8. Диалоговое окно добавления пользовательского члена элемента управления

4. Четвертый шаг Set Mapping (Установить соответствие) мастера ActiveX Control Interface Wizard (рис. 14.9) связывает члены элемента управления, выбранные на втором и третьем шагах, с событиями, свойствами и методами объектов элемента управления ActiveX. Диалоговое окно мастера содержит список всех свойств, методов и событий, которые определены как часть общего интерфейса элемента управления. Для связывания члена, выбранного из списка Public Name (Наименование), необходимо из раскрывающегося списка Control (Объект элемента управления) группы Maps to (Отобразить на) выбрать объект элемента управления и из списка Member (Член) этой же группы соответствующее событие, свойство или метод.

5. На пятом шаге Set Attributes (Назначить атрибуты) (рис. 14.10) мастер предлагает определить атрибуты тех членов нового элемента управления ActiveX, которые не были связаны с событиями, методами и свойствами на предыдущем шаге.

Рис. 14.9. Диалоговое окно Set Mapping

Рис. 14.10. Диалоговое окно Set Attributes

Перечень таких членов находится в списке Public Name окна данного шага мастера. Работа с этими членами элемента управления заключается в определении их атрибутов и описания. Описание вводится в поле Description (Описание). Это то краткое описание, которое затем будет появляться, например, в окне свойств при просмотре свойств объекта нового элемента управления в форме приложения. В полях группы Attribute Information (Информация об атрибутах) можно задать следующие атрибуты:

  • Data Type (Тип данных) — назначает тип данных для свойств и методов. Для методов это тип возвращаемых методом данных (Return Type);
  • Default Value (Значение по умолчанию) — определяет значение свойства по умолчанию;
  • Run Time (Режим выполнения) — назначает доступность свойств в режиме выполнения: Read/Write (Чтение/Запись), Read (Чтение), Write (Запись) или Not Available (Нет доступа);
  • Design Time (Режим проектирования) — аналогично полю Run Time для режима проектирования;
  • Arguments (Аргументы) — назначает аргументы для событий и методов.

6. Шестой шаг мастера ActiveX Control Interface Wizard (рис. 14.11) является итоговым.

В диалоговом окне расположен флажок View Summary Report (Показать итоговый отчет), позволяющий вывести итоговый отчет. Если этот флажок установлен, то будет выведено окно Summary (Итоги), показанное на рис. 14.12. В этом окне мастера содержатся рекомендации по проверке нового элемента управления в составе приложения. Итоговый отчет можно сохранить в текстовом файле с помощью кнопки Save (Сохранить), открывающей диалоговое окно сохранения файла.

Рис. 14.11. Завершающий шаг мастера ActiveX Control Interface Wizard

Рис. 14.12. Итоговый отчет с рекомендациями мастера ActiveX Control Interface Wizard


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление страницы свойств с помощью мастера Property Page Wizard

Для настройки элемента управления, особенно сложного, часто используется страница свойств, которая делает такую настройку более простой и понятной. Visual Basic 6 предоставляет программисту возможность создать такую страницу свойств и для нового элемента управления ActiveX с помощью мастера Property Page Wizard (Мастер страницы свойств).

Замечание

Для работы с мастером Property Page Wizard его необходимо предварительно присоединить к среде проектирования. Мастер страницы свойств присоединяется к среде проектирования с помощью диспетчера надстроек аналогично мастеру ActiveX Control Interface Wizard. При этом в окне диспетчера Add-In Manager необходимо выбрать надстройку VB6 Property Page Wizard.

1. Для запуска мастера Property Page Wizard, создающего страницу свойств, в меню Add-Ins (Надстройки) выберите команду Property Page Wizard.

В первом окне мастера (рис. 14.13) расположен флажок Skip this screen in the future (Пропускать это окно в дальнейшем). Если установить этот флажок, то при последующих запусках мастера это диалоговое окно появляться не будет. Нажмите кнопку Next для перехода к следующему шагу.

2. Второй шаг мастера Select the Property Pages (Выбор страницы свойств) — это начало проектирования вкладок страницы свойств. В этом окне мастера (рис. 14.14) расположен список, в котором перечислены предполагаемые вкладки страницы свойств. Слева от наименования вкладки стоит флажок, с помощью которого соответствующую вкладку можно отключить от страницы свойств. В дальнейшем при проектировании страницы свойств отключенная вкладка не участвует.

Первоначально список вкладок этого окна может быть пустым, поэтому необходимо сначала добавить, по крайней мере, одну вкладку окна страницы свойств. Однако если выбраны какие-либо стандартные группы свойств, то мастер по умолчанию заводит вкладку для каждой из этих групп. На рис. 14.14 отображены группы StandardPicture и StandardFont.

Рис. 14.13. Первое окно мастера Property Page Wizard

Рис. 14.14. Диалоговое окно Select the Property Pages

Замечание

У мастера есть некоторые ограничения, касающиеся стандартных вкладок: наименования вкладок, а также группировка свойств не редактируются.

В окне мастера Select the Property Pages для добавления новых вкладок используется кнопка Add (Добавить). При нажатии этой кнопки открывается диалоговое окно Property Page Name (Наименование страницы свойства), показанное на рис. 14.15. В этом окне расположено только поле для ввода имени вкладки. Можно переименовать выбранную вкладку, воспользовавшись кнопкой Rename (Переименовать). При ее нажатии вызывается то же самое диалоговое окно Property Page Name, что и в случае добавления новой вкладки.

Рис. 14.15. Диалоговое окно для добавления новой вкладки

На этом шаге мастера можно также изменить порядок следования вкладок. Для этого используются две кнопки, расположенные справа от списка. Кнопка с направленной вверх стрелкой перемещает вкладку на одну позицию вперед. Кнопка с направленной вниз стрелкой перемещает вкладку на одну позицию назад.

3. Следующее диалоговое окно Add Properties (Добавить свойства) мастера Property Page Wizard (рис. 14.16) предоставляет возможность распределить свойства по вкладкам (кроме стандартных). Сначала следует выбрать вкладку из списка Available Property Pages (Доступные страницы свойств). После того как вкладка выбрана, в нее из списка Available Properties (Доступные свойства) с помощью перечисленных ниже кнопок переносятся необходимые свойства.

Кнопка | Назначение
 | Переносит свойство на выбранную вкладку
 | Переносит все свойства на выбранную вкладку
 | Возвращает свойство с выбранной вкладки
 | Возвращает все свойства с выбранной вкладки

Совет

Для переноса свойства из одного списка в другой помимо кнопок можно воспользоваться мышью. Например, если дважды щелкнуть мышью в списке свойств, то выбранное свойство переместится на выбранную вкладку, и наоборот, если дважды щелкнуть мышью на свойстве в списке вкладки, то оно вернется в список свойств.

Рис. 14.16. Диалоговое окно Add Properties

Рис. 14.17. Завершающий шаг мастера Property Page Wizard

4. Завершает работу мастера Property Page Wizard диалоговое окно Finished! (рис. 14.17). В нем можно согласиться или отказаться от просмотра итогового отчета о работе мастера при помощи переключателя, выбрав значение Yes (Да) или No (Нет) соответственно.

Окно итогового отчета мастера Property Page Wizard показано на рис. 14.18.

На рис. 14.19 представлена страница свойств, созданная с помощью мастера Property Page Wizard для разработанной ранее кнопки cbNewForm. Если необходимо добавить новые свойства и затем вставить их в страницу свойств, то можно снова обратиться к мастеру ActiveX Control Interface Wizard, добавить требуемые свойства, определить для них процедуры чтения и установки, а затем, запустив мастер Property Page Wizard, добавить эти свойства на требуемые вкладки или создать новую вкладку для этих свойств.

Рис. 14.18. Итоговый отчет мастера Property Page Wizard

Рис.14.19. Страница свойств, созданная с помощью мастера Property Page Wizard


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проверка и компиляция нового элемента управления ActiveX

После того как создан элемент управления ActiveX с нужными свойствами, методами и событиями, разработано диалоговое окно со страницами свойств, можно переходить к проверке, доработке и компиляции элемента управления в файл компонентов с расширением осх.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проверка элемента управления ActiveX

Для простой проверки созданного элемента управления ActiveX можно запустить его на выполнение. При этом запустится браузер Internet с новым элементом управления. Если браузер запускается, значит явных ошибок при проектировании элемента управления не обнаружено, и можно проводить полноценную проверку его работы.

Полноценную проверку можно провести, только используя новый элемент управления в приложениях, по крайней мере, двумя способами.

  • При помощи группы проектов.
  • Подключением к проверочному проекту скомпилированного в файл компонентов (файл с расширением осх) нового элемента управления с помощью диалогового окна Components, открываемого командой Components (Компоненты) меню Project (Проект).

Рассмотрим сначала первый способ, как более простой и не требующий процесса компиляции. Для первой проверки данный способ хорош еще и тем, что в процессе проверки в новый элемент управления ActiveX можно вносить изменения.

В составе проверочной группы проектов должны быть, как минимум, два проекта:

  • стандартный проект, проверяющий работу нашего элемента управления, формы которого должны содержать этот элемент управления ActiveX;
  • проект самого элемента управления ActiveX. В нашем случае это проект кнопки cbNewForm.

Создадим тестовую группу проектов. Для этого выполните следующие действия:

1. Откройте новый стандартный проект.

2. Добавьте в него проект, содержащий кнопку cbNewForm, воспользовавшись командой Add Project (Добавить проект) меню File (Файл).

3. Разработайте форму с использованием нового элемента управления.

Созданная группа может служить для проверки работы нового элемента управления (рис. 14.21). После подключения проекта кнопки ее значок появляется на панели элементов управления.

Рис. 14.21. Группа проектов для проверки работы элемента управления ActiveX

Необходимо помнить, что Visual Basic 6 не разрешает работать одновременно с двумя проектами вне группы проектов. Поэтому при создании тестовой группы проект элемента управления должен быть закрыт, если вы работали с ним в отдельном сеансе Visual Basic 6. Работая с группой проектов, все необходимые изменения и доработки можно вносить и в проект элемента управления.

Разумеется, более полная проверка выполняется при подключении нового компонента к тестовому проекту.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Доработка программного кода элемента ActiveX

При проверке нового элемента управления могут быть выявлены недостатки, которые необходимо устранить. Например, если в режиме проектирования попробовать поменять размеры созданной вами кнопки в форме, растягивая ее за край, то будут изменяться размеры контейнера, а не кнопки. Чтобы устранить этот недостаток, необходимо привязать края кнопки к краям контейнера. Это можно сделать с помощью события Resize контейнера, возникающего при изменении размеров последнего, введя следующий код:

Private Sub UserControl Resize()

cbCalculate.Height = UserControl.ScaleHeight

cbCalculate.Width = UserControl.Width

End Sub

В тексте этого кода при каждом изменении размеров контейнера соответственно изменяется размер кнопки до максимальных размеров контейнера.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Компиляция элемента управления в файл компонентов ActiveX

После всех проверок и доработок новый элемент управления можно скомпилировать в файл компонентов. Этот процесс не представляет ничего сложного. Достаточно выполнить команду Make NameProject.ocx (Создать NameProject.ocx) меню File (Файл), где NameProject.ocx— это имя проекта нового элемента управления ActiveX.

Вновь созданный файл компонентов можно подключать к проектам с помощью диалогового окна Components (Компоненты) аналогично стандартным файлам компонентов. После присоединения все элементы управления файла компонентов появятся на панели элементов управления и будут работать в приложениях. Для примера попробуем подключить файл компонентов созданного в предыдущих разделах элемента управления ActiveX (кнопки) к проекту и включить этот элемент управления в форму проекта.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Пример подключения нового компонента к проекту

Рассмотрим пример подключения элемента управления ActiveX cbNewForm к проекту, созданному при изучении типов интерфейсов в разделе "MDI интерфейс" главы 7. Для этого выполните следующие действия:

1. Создайте новый проект с родительским и дочерним окнами или воспользуйтесь приложением MyMDiApp.vbp, созданным при изучении типов интерфейсов.

2. После того как новый проект создан (или открыт проект MyMDiApp.vbp), командой Components (Компоненты) меню Project (Проект) откройте окно компонентов (рис. 14.22).

3. В диалоговом окне Components установите новый компонент в состояние загрузки. Для этого слева от имени нового компонента установите галочку.

Замечание

Если компонент не подключился автоматически, то есть отсутствует в диалоговом окне Components, его можно найти с помощью кнопки Browse (Просмотр) поиска компонентов.

Рис. 14.22. Подключение нового компонента к проекту

Замечание

Необходимо отметить, что наименование компонента соответствует наименованию проекта, то есть тому имени, которое было введено в поле Project Name (Наименование проекта) в окне свойств проекта, открываемом командой MyMDIApp Properties (Свойства MyMDIApp) меню Project. При этом сам файл компонента может называться совершенно иначе.

4. После подключения компонента к проекту значок элемента управления cbNewForm появляется на панели элементов управления.

5. Вставьте новую кнопку в панель инструментов родительского окна и назовите ее cbCallNewFom.

6. Осталось ввести код вызова окна для события NewForm кнопки cbCallNewForm, как указано ниже:

Private Sub cbCailNewForm_NewForm()

Dim frrriNewForm As New fmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

Результат показан на рис. 14.23.

Рис. 14.23. Подключение нового компонента к проекту

Конечно, это достаточно простой пример, но на нем наглядно видно, как использовать вновь созданный компонент в своих проектах.

После проверки и тестирования новый элемент управления, в частности кнопку cbNewForm, можно использовать во всех проектах.


Ch 14.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 14. Разработка компонентов ActiveX.

Прежде чем перейти к разработке компонентов ActiveX, необходимо рассказать об этой новой технологии, разработанной фирмой Microsoft. Она дает возможность программисту оторваться от среды разработки, поскольку среда, в которой поддерживается технология ActiveX, "понимает" любой компонент ActiveX, в том числе разработанный в другой среде. Это означает, что любые компоненты, созданные в Visual Basic 6, можно без проблем использовать при работе, например, в Visual C++ или в любой другой среде проектирования, которая поддерживает технологию ActiveX.

Одним из основных свойств технологии ActiveX является ее ориентация на Internet, что позволяет применять в своей разработке любые физически удаленные компоненты, используя возможности доступа через Internet. Это также означает, что любой компонент, разработанный при помощи этой технологии, можно использовать в проектах, предназначенных для работы в Internet.

На самом деле технология ActiveX — собирательное понятие, это сумма технологий, таких как:

  • элементы управления ActiveX — технология создания элементов управления ActiveX;
  • документы ActiveX — технология создания документов, работающих в браузерах Internet, и приведение документов (например, документов Word) к стандарту документов ActiveX;
  • Remote Automation — технология удаленного управления;
  • технология Active DeskTop — средства интеграции HTML-документов и элементов (таких, как элементы управления ActiveX или Java-апплеты — сценарии) непосредственно на рабочем экране пользователя;
  • Active Movie — технология работы с аудио и видео форматами в браузерах Internet;
  • Active Server Pages — технология создания и выполнения сценариев на Web-серверах.

В данной главе изучим только верхушку этого айсберга — элементы управления ActiveX, а именно: их создание, модификацию, использование в приложениях.

Основные сведения об ActiveX-компонентах

Основные понятия технологии ActiveX — компоненты ActiveX, объектные модели СОМ (Component Object Model, модель составных объектов) и DCOM (Distributed СОМ).

Компоненты ActiveX — это элементы управления ActiveX, документы ActiveX, источники данных (ADO или RDO), выполняемые файлы ActiveX ЕХЕ и библиотеки ActiveX DLL. Компоненты представляют собой отдельные файлы ОСХ, ЕХЕ или DLL и могут использоваться для создания классов объектов или выполнения каких-либо функций приложения.

Фактически компонент ActiveX — это отдельный проект, содержащий набор элементов управления, классов и других программных модулей, скомпилированный затем в файл ОСХ, ЕХЕ или DLL в зависимости от целей применения этого компонента.

При разработке компонентов ActiveX необходимо исходить из целей применения этих компонентов. Можно создать целый набор элементов управления в одном файле ОСХ для настольных приложений, однако из-за большого размера файла они будут медленно работать в Internet-приложениях. Для работы в Internet эти элементы управления необходимо выделить в отдельные файлы небольшого размера.

Компоненты ActiveX основаны на программной модели СОМ, которая обеспечивает межплатформенные возможности технологии ActiveX.

Модель составных объектов (СОМ)

Модель составных объектов представляет собой программную модель, а именно: набор стандартных сервисов (функций) и спецификаций (стандартов обмена, стандартов вызова функций), обеспечивающих реализацию объектно-ориентированного подхода для разработки приложений клиент/сервер, работающих в том числе и в Internet, точнее, в первую очередь в Internet. Причем данная модель работает вне зависимости от среды проектирования, с условием, конечно, что эта платформа (среда проектирования) поддерживает модель СОМ.

Модель СОМ определяет стандартный внутренний интерфейс между объектами и методику существования (создание объекта, инициализация объекта, завершение работы объекта) и взаимодействия объектов (вызов функций, обмен данными между объектами). Этот интерфейс обеспечивает взаимодействие любых объектов модели СОМ между собой.

Программная модель СОМ имеет открытую архитектуру, что дополняет гибкость модели и возможность работы с любой платформой.

Модель распределенных составных объектов (DCOM)

Модель DCOM (Distributed СОМ) — это развитие модели СОМ для эффективной работы в Internet. В модели DCOM поддерживается объектный протокол, который дает возможность прямого доступа объектов СОМ друг к другу при помощи сети.

Создание элементов управления ActiveX

Элементы управления ActiveX — один из типов компонентов ActiveX. Рассмотрим возможности их создания и использования в Visual Basic 6.

Создание элементов управления состоит из ряда этапов.

  • Постановка задачи на проектирование элемента управления ActiveX. На этом этапе определяется его внешний вид, то, какими свойствами и методами он должен обладать, на какие события должен реагировать, а также какие готовые элементы управления потребуются для его создания.
  • Проектирование вида создаваемого элемента управления, сборка элемента управления из готовых элементов, если в этом есть необходимость.
  • Добавление событий.
  • Добавление методов элемента управления. Добавление необходимых свойств. Проектирование страницы свойств.
  • Проверка и тестирование вновь созданного элемента управления ActiveX, в том числе с использованием Internet, если он создан для работы в сети.
  • Доработка по итогам проверки элемента управления.
  • Компиляция файла, то есть создание файла компонента.

    Замечание

    Проверка и доработки могут быть циклическими. После полной проверки можно выполнить компиляцию и получить файл нового компонента ActiveX. Этот файл можно подключать к проекту так же, как и все стандартные компоненты.

Рассмотрим более подробно этапы создания элемента управления ActiveX на примере кнопки управления типа commandButton, предназначенной для открытия бланка новой формы.

Проектирование вида элемента управления

Чтобы создать новый элемент управления ActiveX, откройте новый проект типа ActiveX Control. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в открывшемся диалоговом окне New Project (рис. 14.1) дважды щелкните мышью на значке ActiveX Control.

Рис. 14.1. Выбор типа нового проекта для создания элемента управления ActiveX

В открытом проекте по умолчанию находится объект типа UserControl, в котором размещаются все вновь создаваемые или вставляемые элементы управления. Этот объект служит контейнером для содержащихся в нем объектов, размещаемых при проектировании нового элемента управления ActiveX. Все свойства и события объекта UserControl можно в дальнейшем использовать при программировании вновь создаваемого элемента управления.

В нашем примере для создания кнопки управления выполните следующие действия:

1. Откройте новый проект, как было указано выше.

2. Присвойте проекту имя MyCBNewForm. Для этого в меню Project (Проект) выберите команду Projecti Properties (Свойства Project 1) и в поле Project Name открывшегося окна свойств проекта введите требуемое имя.

3. Сохраните проект под тем же именем, выбрав команду Save Project As (Сохранить проект как) меню File (Файл).

4. Добавьте в контейнер элемент управления commandButton, дважды щелкнув мышью кнопку CommandButton ЩЯ на панели элементов управления. Присвойте этой кнопке имя cbNewForm.

5. Чтобы поместить на кнопку графическое изображение, установите для свойства style значение 1-Graphical.

Воспользовавшись свойством picture кнопки, поместите на нее желаемое изображение, которое можно взять, например, из коллекции значков в каталоге \Common\Graphics\Bitmaps\OfrCtlBr\Small\Color\. Воспользуемся изображением New.bmp. С помощью свойств Disabiedpicture и Downpicture можно задать изображения, отображаемые на кнопке, в тех случаях, когда она недоступна или находится в нажатом состоянии.

Полученная кнопка показана на рис. 14.2, однако ее необходимо еще немного доработать.

Рис. 14.2. Новый элемент управления cbNewForm в контейнере UserControl

Чтобы при использовании созданной кнопки не было видно полей контейнера, переместите кнопку в левый верхний угол контейнера.

С той же целью установите размеры объекта-контейнера равными размерам кнопки.

Полученная кнопка показана на рис. 14.3.

Рис. 14.3. Окончательный вид нового элемента управления cbNewForm

В принципе, уже в таком виде вновь полученную кнопку (объект типа cbNewForm) можно вставлять в свои приложения. При этом кнопка cbNewForm созданного элемента управления появится на панели элементов управления.

Замечание

Прежде чем использовать созданную кнопку в проекте, ее необходимо подключить к проекту. О подключении элемента управления ActiveX к проекту будет сказано чуть позже.

По умолчанию все новые элементы управления представлены на панели элементов одним типовым значком Отличить их можно только по подсказке, появляющейся при установке курсора на значок. Она соответствует наименованию этого элемента управления, заданному свойством Name. Для замены типового значка на пользовательский используется свойство ToolboxBitmap элемента управления userControl (контейнера нашей кнопки). Чтобы изменить значок, откройте диалоговое окно Load Bitmap (Загрузить значок), нажав на кнопку с тремя точками в поле свойства ToolboxBitmap, найдите требуемый значок и нажмите кнопку Открыть или дважды щелкните кнопкой мыши на найденном файле значка.

Полученная в таком виде кнопка еще не совсем готова к использованию. Для того чтобы кнопка стала полноценным элементом управления ActiveX и выполняла заданные действия, а также обладала необходимыми свойствами и работала с событиями, их необходимо добавить в наш элемент управления cbNewForm. Рассмотрим, как в элемент управления ActiveX добавляются новые события, методы и свойства, называемые членами элемента управления.

Добавление событий

По умолчанию кнопка уже характеризуется некоторыми событиями, унаследованными от объекта-контейнера. Среди них следующие:

  • click — щелчок левой кнопкой мыши
  • DragDrop — перемещение объекта
  • DragOver — перемещение объекта поверх другого объекта
  • GotFocus — установка фокуса на объект
  • KeyDown — нажатие на клавишу
  • Keypress — нажатие и отпускание клавиши
  • Keyup — отпускание клавиши
  • LostFocus — потеря фокуса объектом
  • MouseDown — нажатие кнопки мыши на объекте
  • MouseMove — перемещение указателя мыши за границы объекта
  • MouseUp — отпускание кнопки мыши на объекте

При необходимости можно добавить кнопке свои события. Сделать это достаточно просто. Для этого объявите новое событие с помощью следующего кода:

Public Event NewForm ()

Затем создайте процедуру активизации события, введя код, аналогичный указанному ниже:

Private Sub cbNewForm_Click()

RaiseEvent NewForm

End Sub

В приведенном примере при нажатии кнопки будет инициироваться дополнительное событие NewForm, к которому можно привязывать выполнение действий в приложении, в нашем случае вызов бланка формы.

Еще проще событие добавляется с помощью диалогового окна Add Procedure (рис. 14.4), открываемого командой Add Procedure (Добавить процедуру) меню Tools (Сервис).

Рис. 14.4. Диалоговое окно Add Procedure для ввода членов элемента управления ActiveX

Для ввода нового события в этом диалоговом окне необходимо лишь ввести имя события в поле Name (Наименование), установить переключатель Type (Тип) в положение Event (Событие) и выйти из диалогового окна Add Procedure, нажав кнопку ОК. При этом в код элемента управления будет введено объявление нового события. После этого следует ввести инициализацию события, как было указано выше при добавлении события вручную.

Добавление методов

Чтобы добавить метод, необходимо ввести в окно редактора код следующего вида:

Public Sub NewMethod()

Функциональный код метода

End Sub

Как видно из текста кода, это просто добавление подпрограммы или функции, реализующей требуемые функциональные возможности в элементе управления ActiveX.

Как и для ввода события, для добавления метода можно воспользоваться диалоговым окном Add Procedure (Добавить процедуру), показанным на рис. 14.4. При этом переключатель Type (Тип) необходимо установить в значение Sub (Подпрограмма) или Function (Функция). Добавляемый в код элемента управления шаблон при выборе опции Sub будет следующим:

Public Sub NewMethod()

End Sub

При установке опции Function добавляемый в код элемента управления шаблон будет выглядеть так:

Public Function NewMethod()

End Function

После ввода шаблона необходимо запрограммировать вновь созданный метод, введя в шаблон функциональный код.

Добавление свойств

Добавление свойств — наиболее трудоемкий процесс. В принципе, к свойству можно относиться как к переменной, связанной с объектом. Свойства для элемента управления ActiveX создаются при помощи процедур Property Get (возврат значения свойства) и property Let (установка значения свойства). При этом для добавления свойства, доступного только для чтения, можно определить только процедуру возврата значения свойства property Get.

Существует и третья процедура создания свойств property set, которая применяется при объявлении свойств, являющихся объектами, как, например, свойство Font, которое само по себе имеет набор свойств: шрифт, размер шрифта, начертание и другие. Однако такие сложные свойства пока не являются предметом нашего изучения.

Обычно при объявлении свойств также выполняется их начальная инициализация с использованием констант и переменных. Константы и переменные для начальной инициализации при этом должны быть объявлены, например:

Const prpToolTipTextDefault = ""

Dim prpToolTipText As String

Объявление свойств выполняется при помощи процедур свойств property Let и property Get следующим образом:

Public Property Get ToolTipText () As String

ToolTipText = prpToolTipText

End Property

Public Property Let ToolTipText(ByVal New_ToolTipText As String)

prpToolTipText = New_ToolTipText

PropertyChanged "ToolTipText"

End Property

Инициализация свойств (присвоение значений по умолчанию) выполняется по событию initproperties контейнера userControl с использованием констант и переменных инициализации:

Private Sub UserControl Initproperties ()

prpToolTipText = prpToolTipTextDefault

End Sub

Для сохранения значения свойства, установленного во время разработки приложения, вы можете использовать объект типа propertyBag, который содержится по умолчанию в контейнере userControl любого создаваемого в Visual Basic 6 объекта ActiveX. Объект PropertyBag имеет два метода для записи/чтения значения свойства: writeproperty и Readproperty. Синтаксис метода writeproperty следующий:

PropertyBag.WriteProperty (свойство, значение, эначениеПоУмолчанию)

где:

  • Property — наименование свойства;
  • valProperty — сохраняемое значение свойства;
  • valPropertyDef — значение свойства по умолчанию. Метод Readproperty, используемый для чтения данных из объекта

PropertyBag, выглядит так:

PropertyBag.WriteProperty (свойство, переменная)

где:

  • property — наименование свойства;
  • varForProperty — переменная, в которую передается сохраняемое значение свойства.

Кроме этих методов в контейнере UserControl существуют два специальных события: WriteProperties И ReadProperties. с помощью этих событий и методов вы можете установить и прочитать значения свойств:

Private Sub UserControlJReadProperties(PropBag As PropertyBag)

prpToolTipText = PropBag.ReadProperty("ToolTipText", prpToolTipTextDefault)

End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("ToolTipText", prpToolTipText, prpToolTipTextDefault)

End Sub

Для добавления свойства с помощью диалогового окна Add Procedure (рис. 14.4) следует установить переключатель Type (Тип) в значение Property (Свойство). После этого автоматически будет добавлен шаблон кода, в который затем необходимо внести следующие операторы:

Public Property Get NewPropertyO As Variant

End Property

Public Property Let NewProperty(ByVal vNewValue As Variant)

End Property

Добавим новое свойство Newproperty для созданной нами ранее кнопки cbNewForm. Свойство будет содержать текстовое значение. Для этого необходимо выполнить следующие действия:

1. Добавьте в исходный текст код, указанный ниже. Можно воспользоваться командой Add Procedure (Добавить процедуру) меню Tools (Сервис), выбрав из переключателя Type значение Property (Свойство). В начало исходного текста добавьте описание константы:

Const prpNewPropertyDefault = "Новое свойство"

Public Property Get NewPropertyO As String

NewProperty = prpNewPropertyDefault

End Property

Public Property Let NewProperty(ByVal vNewValue As String)

NewProperty() = vNewValue

End Property

2. Для дальнейшей демонстрации использования свойства создайте файл с расширением осх с помощью команды Make cbNewForm.ocx меню File.

3. Для присвоения свойства и чтения его значения создайте новый проект типа Standard EXE. Назовите его TestProject. С помощью окна компонентов Components (Компоненты), открываемого командой Components меню Project (Проект), подключите созданный компонент к этому проекту. Форму Formi переименуйте в frmTestForm.

4. После подключения новый элемент управления появляется на панели элементов управления.

5. Добавьте этот элемент управления в форму и назовите его cbNewFormAbout.

6. Определите следующие действия для процедуры обработки события нажатия кнопки мыши:

MsgBox cbNewFormAbout.NewProperty,, "Сведения о свойстве".

7. Запустите проект на выполнение и, нажимая на кнопку, убедитесь в правильности возвращаемого значения свойства.

Создание свойств, событий и методов с помощью мастера ActiveX Control Interface Wizard

Вышеуказанные способы добавления свойств, методов и событий для элемента управления — длительный и кропотливый процесс, особенно если операцию необходимо повторять много раз. Для облегчения и ускорения работы программиста при вводе большого количества свойств, методов, событий в элемент управления ActiveX среда Visual Basic 6 предоставляет специальный инструмент — мастер ActiveX Control Interface Wizard (Мастер интерфейса элемента управления ActiveX). Посмотрим, как он работает.

Мастер интерфейса элементов управления ActiveX (рис. 14.5) вызывается командой ActiveX Control Interface Wizard меню Add-Ins (Надстройки).

Замечание

Чтобы подключить мастера ActiveX Control Interface Wizard к среде проектирования, необходимо в меню Add-Ins выбрать команду Add-In Manager (Диспетчер надстроек). Затем в окне диспетчера следует дважды щелкнуть мышью на строке VB6 ActiveX Ctrl Interface Wizard или установить курсор на это значение и выбрать для него флажок Loaded/Unloaded (Загружен/Выгружен), после чего закрыть окно, нажав кнопку ОК. Если необходимо постоянное присутствие команды вызова мастера интерфейса в меню, следует установить флажок Load on Startup (Загрузить при запуске).

Мастер интерфейса добавляет необходимый код при объявлении свойств и переменных, инициализации членов элемента управления, шаблонов кода процедур и функций. Конечно, он не освобождает полностью программиста от написания кода, но существенно облегчает эту задачу.

Как и все мастера в Visual Basic 6, мастер ActiveX Control Interface Wizard

состоит из последовательности шагов по созданию свойств элемента управления. Переход к следующему шагу выполняется нажатием кнопки Next (Далее), возврат к предыдущему шагу — нажатием кнопки Back (Назад). Если кнопка Finish (Готово) доступна, на этом шаге можно завершить работу мастера и выполнять доработку кода самостоятельно.

1. Чтобы запустить мастера, в меню Tools выберите команду ActiveX Control Interface Wizard.

Появляется диалоговое окно Introduction (Введение) (рис 14.5). Оно содержит флажок Skip this screen in the future (Пропускать этот экран в дальнейшем), определяющий, показывать первое окно мастера при последующих запусках или нет. Нажмите кнопку Next.

Рис. 14.5. Диалоговое окно Introduction мастера ActiveX Control Interface Wizard

2. На втором шаге. Select Interface Members (Выбор членов интерфейса) мастера (рис. 14.6) начинается собственно проектирование событий, свойств и методов. На этом шаге следует сформировать список необходимых для нового элемента управления членов из набора возможных, предлагаемых в списке Available names (Доступные наименования). В элементе управления будут присутствовать только те члены, которые находятся в правом списке Selected names (Выбранные наименования). Правый список формируется переносом значений из левого списка с помощью следующих кнопок:

Кнопка | Назначение
 | Переносит из списка Available names в список Selected names выделенные члены элемента управления
 | Переносит из списка Available names в список Selected names все члены
 | Возвращает из списка Selected names в список Available names выделенные члены элемента управления
 | Возвращает из списка Selected names в список Available names все размещенные члены элемента управления

Используя кнопки, сформируйте список необходимых событий, свойств и методов элемента управления и нажмите кнопку Next.

Рис. 14.6. Выбор членов интерфейса на втором шаге мастера ActiveX Control Interface Wizard

Рис. 14.7. Диалоговое окно Create Custom Interface Members

3. На третьем шаге Create Custom Interface Members (Создание пользовательских членов интерфейса) мастер предоставляет возможность программисту работать с пользовательскими событиями, методами и свойствами. В этом окне (рис. 14.7) можно с помощью:

  • кнопки New (Новый) добавить член элемента управления;
  • кнопки Edit (Правка) изменить наименование уже существующего члена;
  • кнопки Delete (Удалить) удалить ненужный член элемента управления.

При добавлении нового члена элемента управления вызывается диалоговое окно Add Custom Member (Добавление пользовательского члена). В этом окне (рис. 14.8) необходимо в поле Name (Имя) ввести имя члена и указать с помощью переключателя Type (Тип) его тип.

После добавления нового пользовательского члена элемента управления ActiveX он появляется в списке My Custom Members (Мои пользовательские члены). Сформировав список всех необходимых пользовательских членов, нажмите кнопку Next для перехода к следующему шагу мастера.

Рис. 14.8. Диалоговое окно добавления пользовательского члена элемента управления

4. Четвертый шаг Set Mapping (Установить соответствие) мастера ActiveX Control Interface Wizard (рис. 14.9) связывает члены элемента управления, выбранные на втором и третьем шагах, с событиями, свойствами и методами объектов элемента управления ActiveX. Диалоговое окно мастера содержит список всех свойств, методов и событий, которые определены как часть общего интерфейса элемента управления. Для связывания члена, выбранного из списка Public Name (Наименование), необходимо из раскрывающегося списка Control (Объект элемента управления) группы Maps to (Отобразить на) выбрать объект элемента управления и из списка Member (Член) этой же группы соответствующее событие, свойство или метод.

5. На пятом шаге Set Attributes (Назначить атрибуты) (рис. 14.10) мастер предлагает определить атрибуты тех членов нового элемента управления ActiveX, которые не были связаны с событиями, методами и свойствами на предыдущем шаге.

Рис. 14.9. Диалоговое окно Set Mapping

Рис. 14.10. Диалоговое окно Set Attributes

Перечень таких членов находится в списке Public Name окна данного шага мастера. Работа с этими членами элемента управления заключается в определении их атрибутов и описания. Описание вводится в поле Description (Описание). Это то краткое описание, которое затем будет появляться, например, в окне свойств при просмотре свойств объекта нового элемента управления в форме приложения. В полях группы Attribute Information (Информация об атрибутах) можно задать следующие атрибуты:

  • Data Type (Тип данных) — назначает тип данных для свойств и методов. Для методов это тип возвращаемых методом данных (Return Type);
  • Default Value (Значение по умолчанию) — определяет значение свойства по умолчанию;
  • Run Time (Режим выполнения) — назначает доступность свойств в режиме выполнения: Read/Write (Чтение/Запись), Read (Чтение), Write (Запись) или Not Available (Нет доступа);
  • Design Time (Режим проектирования) — аналогично полю Run Time для режима проектирования;
  • Arguments (Аргументы) — назначает аргументы для событий и методов.

6. Шестой шаг мастера ActiveX Control Interface Wizard (рис. 14.11) является итоговым.

В диалоговом окне расположен флажок View Summary Report (Показать итоговый отчет), позволяющий вывести итоговый отчет. Если этот флажок установлен, то будет выведено окно Summary (Итоги), показанное на рис. 14.12. В этом окне мастера содержатся рекомендации по проверке нового элемента управления в составе приложения. Итоговый отчет можно сохранить в текстовом файле с помощью кнопки Save (Сохранить), открывающей диалоговое окно сохранения файла.

Рис. 14.11. Завершающий шаг мастера ActiveX Control Interface Wizard

Рис. 14.12. Итоговый отчет с рекомендациями мастера ActiveX Control Interface Wizard

Добавление страницы свойств с помощью мастера Property Page Wizard

Для настройки элемента управления, особенно сложного, часто используется страница свойств, которая делает такую настройку более простой и понятной. Visual Basic 6 предоставляет программисту возможность создать такую страницу свойств и для нового элемента управления ActiveX с помощью мастера Property Page Wizard (Мастер страницы свойств).

Замечание

Для работы с мастером Property Page Wizard его необходимо предварительно присоединить к среде проектирования. Мастер страницы свойств присоединяется к среде проектирования с помощью диспетчера надстроек аналогично мастеру ActiveX Control Interface Wizard. При этом в окне диспетчера Add-In Manager необходимо выбрать надстройку VB6 Property Page Wizard.

1. Для запуска мастера Property Page Wizard, создающего страницу свойств, в меню Add-Ins (Надстройки) выберите команду Property Page Wizard.

В первом окне мастера (рис. 14.13) расположен флажок Skip this screen in the future (Пропускать это окно в дальнейшем). Если установить этот флажок, то при последующих запусках мастера это диалоговое окно появляться не будет. Нажмите кнопку Next для перехода к следующему шагу.

2. Второй шаг мастера Select the Property Pages (Выбор страницы свойств) — это начало проектирования вкладок страницы свойств. В этом окне мастера (рис. 14.14) расположен список, в котором перечислены предполагаемые вкладки страницы свойств. Слева от наименования вкладки стоит флажок, с помощью которого соответствующую вкладку можно отключить от страницы свойств. В дальнейшем при проектировании страницы свойств отключенная вкладка не участвует.

Первоначально список вкладок этого окна может быть пустым, поэтому необходимо сначала добавить, по крайней мере, одну вкладку окна страницы свойств. Однако если выбраны какие-либо стандартные группы свойств, то мастер по умолчанию заводит вкладку для каждой из этих групп. На рис. 14.14 отображены группы StandardPicture и StandardFont.

Рис. 14.13. Первое окно мастера Property Page Wizard

Рис. 14.14. Диалоговое окно Select the Property Pages

Замечание

У мастера есть некоторые ограничения, касающиеся стандартных вкладок: наименования вкладок, а также группировка свойств не редактируются.

В окне мастера Select the Property Pages для добавления новых вкладок используется кнопка Add (Добавить). При нажатии этой кнопки открывается диалоговое окно Property Page Name (Наименование страницы свойства), показанное на рис. 14.15. В этом окне расположено только поле для ввода имени вкладки. Можно переименовать выбранную вкладку, воспользовавшись кнопкой Rename (Переименовать). При ее нажатии вызывается то же самое диалоговое окно Property Page Name, что и в случае добавления новой вкладки.

Рис. 14.15. Диалоговое окно для добавления новой вкладки

На этом шаге мастера можно также изменить порядок следования вкладок. Для этого используются две кнопки, расположенные справа от списка. Кнопка с направленной вверх стрелкой перемещает вкладку на одну позицию вперед. Кнопка с направленной вниз стрелкой перемещает вкладку на одну позицию назад.

3. Следующее диалоговое окно Add Properties (Добавить свойства) мастера Property Page Wizard (рис. 14.16) предоставляет возможность распределить свойства по вкладкам (кроме стандартных). Сначала следует выбрать вкладку из списка Available Property Pages (Доступные страницы свойств). После того как вкладка выбрана, в нее из списка Available Properties (Доступные свойства) с помощью перечисленных ниже кнопок переносятся необходимые свойства.

Кнопка | Назначение
 | Переносит свойство на выбранную вкладку
 | Переносит все свойства на выбранную вкладку
 | Возвращает свойство с выбранной вкладки
 | Возвращает все свойства с выбранной вкладки

Совет

Для переноса свойства из одного списка в другой помимо кнопок можно воспользоваться мышью. Например, если дважды щелкнуть мышью в списке свойств, то выбранное свойство переместится на выбранную вкладку, и наоборот, если дважды щелкнуть мышью на свойстве в списке вкладки, то оно вернется в список свойств.

Рис. 14.16. Диалоговое окно Add Properties

Рис. 14.17. Завершающий шаг мастера Property Page Wizard

4. Завершает работу мастера Property Page Wizard диалоговое окно Finished! (рис. 14.17). В нем можно согласиться или отказаться от просмотра итогового отчета о работе мастера при помощи переключателя, выбрав значение Yes (Да) или No (Нет) соответственно.

Окно итогового отчета мастера Property Page Wizard показано на рис. 14.18.

На рис. 14.19 представлена страница свойств, созданная с помощью мастера Property Page Wizard для разработанной ранее кнопки cbNewForm. Если необходимо добавить новые свойства и затем вставить их в страницу свойств, то можно снова обратиться к мастеру ActiveX Control Interface Wizard, добавить требуемые свойства, определить для них процедуры чтения и установки, а затем, запустив мастер Property Page Wizard, добавить эти свойства на требуемые вкладки или создать новую вкладку для этих свойств.

Рис. 14.18. Итоговый отчет мастера Property Page Wizard

Рис.14.19. Страница свойств, созданная с помощью мастера Property Page Wizard

Проверка и компиляция нового элемента управления ActiveX

После того как создан элемент управления ActiveX с нужными свойствами, методами и событиями, разработано диалоговое окно со страницами свойств, можно переходить к проверке, доработке и компиляции элемента управления в файл компонентов с расширением осх.

Проверка элемента управления ActiveX

Для простой проверки созданного элемента управления ActiveX можно запустить его на выполнение. При этом запустится браузер Internet с новым элементом управления. Если браузер запускается, значит явных ошибок при проектировании элемента управления не обнаружено, и можно проводить полноценную проверку его работы.

Полноценную проверку можно провести, только используя новый элемент управления в приложениях, по крайней мере, двумя способами.

  • При помощи группы проектов.
  • Подключением к проверочному проекту скомпилированного в файл компонентов (файл с расширением осх) нового элемента управления с помощью диалогового окна Components, открываемого командой Components (Компоненты) меню Project (Проект).

Рассмотрим сначала первый способ, как более простой и не требующий процесса компиляции. Для первой проверки данный способ хорош еще и тем, что в процессе проверки в новый элемент управления ActiveX можно вносить изменения.

В составе проверочной группы проектов должны быть, как минимум, два проекта:

  • стандартный проект, проверяющий работу нашего элемента управления, формы которого должны содержать этот элемент управления ActiveX;
  • проект самого элемента управления ActiveX. В нашем случае это проект кнопки cbNewForm.

Создадим тестовую группу проектов. Для этого выполните следующие действия:

1. Откройте новый стандартный проект.

2. Добавьте в него проект, содержащий кнопку cbNewForm, воспользовавшись командой Add Project (Добавить проект) меню File (Файл).

3. Разработайте форму с использованием нового элемента управления.

Созданная группа может служить для проверки работы нового элемента управления (рис. 14.21). После подключения проекта кнопки ее значок появляется на панели элементов управления.

Рис. 14.21. Группа проектов для проверки работы элемента управления ActiveX

Необходимо помнить, что Visual Basic 6 не разрешает работать одновременно с двумя проектами вне группы проектов. Поэтому при создании тестовой группы проект элемента управления должен быть закрыт, если вы работали с ним в отдельном сеансе Visual Basic 6. Работая с группой проектов, все необходимые изменения и доработки можно вносить и в проект элемента управления.

Разумеется, более полная проверка выполняется при подключении нового компонента к тестовому проекту.

Доработка программного кода элемента ActiveX

При проверке нового элемента управления могут быть выявлены недостатки, которые необходимо устранить. Например, если в режиме проектирования попробовать поменять размеры созданной вами кнопки в форме, растягивая ее за край, то будут изменяться размеры контейнера, а не кнопки. Чтобы устранить этот недостаток, необходимо привязать края кнопки к краям контейнера. Это можно сделать с помощью события Resize контейнера, возникающего при изменении размеров последнего, введя следующий код:

Private Sub UserControl Resize()

cbCalculate.Height = UserControl.ScaleHeight

cbCalculate.Width = UserControl.Width

End Sub

В тексте этого кода при каждом изменении размеров контейнера соответственно изменяется размер кнопки до максимальных размеров контейнера.

Компиляция элемента управления в файл компонентов ActiveX

После всех проверок и доработок новый элемент управления можно скомпилировать в файл компонентов. Этот процесс не представляет ничего сложного. Достаточно выполнить команду Make NameProject.ocx (Создать NameProject.ocx) меню File (Файл), где NameProject.ocx— это имя проекта нового элемента управления ActiveX.

Вновь созданный файл компонентов можно подключать к проектам с помощью диалогового окна Components (Компоненты) аналогично стандартным файлам компонентов. После присоединения все элементы управления файла компонентов появятся на панели элементов управления и будут работать в приложениях. Для примера попробуем подключить файл компонентов созданного в предыдущих разделах элемента управления ActiveX (кнопки) к проекту и включить этот элемент управления в форму проекта.

Пример подключения нового компонента к проекту

Рассмотрим пример подключения элемента управления ActiveX cbNewForm к проекту, созданному при изучении типов интерфейсов в разделе "MDI интерфейс" главы 7. Для этого выполните следующие действия:

1. Создайте новый проект с родительским и дочерним окнами или воспользуйтесь приложением MyMDiApp.vbp, созданным при изучении типов интерфейсов.

2. После того как новый проект создан (или открыт проект MyMDiApp.vbp), командой Components (Компоненты) меню Project (Проект) откройте окно компонентов (рис. 14.22).

3. В диалоговом окне Components установите новый компонент в состояние загрузки. Для этого слева от имени нового компонента установите галочку.

Замечание

Если компонент не подключился автоматически, то есть отсутствует в диалоговом окне Components, его можно найти с помощью кнопки Browse (Просмотр) поиска компонентов.

Рис. 14.22. Подключение нового компонента к проекту

Замечание

Необходимо отметить, что наименование компонента соответствует наименованию проекта, то есть тому имени, которое было введено в поле Project Name (Наименование проекта) в окне свойств проекта, открываемом командой MyMDIApp Properties (Свойства MyMDIApp) меню Project. При этом сам файл компонента может называться совершенно иначе.

4. После подключения компонента к проекту значок элемента управления cbNewForm появляется на панели элементов управления.

5. Вставьте новую кнопку в панель инструментов родительского окна и назовите ее cbCallNewFom.

6. Осталось ввести код вызова окна для события NewForm кнопки cbCallNewForm, как указано ниже:

Private Sub cbCailNewForm_NewForm()

Dim frrriNewForm As New fmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

Результат показан на рис. 14.23.

Рис. 14.23. Подключение нового компонента к проекту

Конечно, это достаточно простой пример, но на нем наглядно видно, как использовать вновь созданный компонент в своих проектах.

После проверки и тестирования новый элемент управления, в частности кнопку cbNewForm, можно использовать во всех проектах.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 15. Создание собственных классов.

Как и во всех современных средствах визуального проектирования, в Visual Basic 6 применяется ООП (Объектно-ориентированное программирование). Основными понятиями ООП являются объект и класс, которые, в свою очередь, включают в себя такие базовые понятия, как методы, свойства, события, а также инкапсуляция, наследование, полиморфизм.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Основные понятия ООП

При разработке приложений для изучения основ Visual Basic 6 в предыдущих главах уже использовались понятия класса и объекта, но их значение не раскрывалось. Попробуем в этом разделе разобраться, что такое класс, и что такое объект.

Объектно-ориентированный подход в программировании предлагает все, что входит в состав приложения, считать объектами, которые взаимодействуют друг с другом и с пользователем в соответствии с заданными в программе свойствами и поведением, выполняя необходимые функции приложения. Таким образом, любое приложение при данном подходе представляет собой набор взаимосвязанных объектов, реализующих необходимые функциональные требования, предъявленные к приложению.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объект

Объект — это некая отдельная сущность, выделяющаяся среди других сущностей особыми свойствами, поведением, взаимодействием с себе подобными объектами приложения. Объект всегда конкретен и реально существует в форме или в приложении, обладая при этом только ему присущими свойствами и поведением. Признаками объектов, отличающих их друг от друга, являются их свойства и поведение. Объект характеризуется следующими основными понятиями.

  • Метод — это функция или процедура, которая реализует возможные с объектом действия.
  • Событие — это средство взаимодействия объектов друг с другом. Объекты генерируют заданные события и выполняют действия в ответ на заданные события. События — это аналог сообщений, которые получают и отправляют объекты.
  • Состояние — каждый объект всегда находится в определенном состоянии, которое характеризуется набором свойств объекта. Под воздействием событий объект переходит в другие состояния. При этом объект может сам генерировать события о переходе в другое состояние.
  • Свойство — признак, некоторое отдельное качество (параметр) объекта. Например, свойствами могут быть размеры объекта, заголовок, его наименование. Совокупность свойств объекта определяет его состояние. Как правило, свойства — это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс

Объекты, имеющие общие свойства и поведение, объединяются в классы. Таким образом, класс можно определить как некую общность конкретных объектов, как описание объекта — каким он должен быть и что должен делать.

Если объекты существуют в приложениях, то класс — это абстракция, объединяющая объекты в одну группу согласно их свойствам и поведению в среде окружения, в которой они существуют и взаимодействуют. Класс, таким образом, является некоей абстракцией, так как он не существует в работающем приложении.

Например, кнопка в форме со всеми своими конкретными свойствами и действием является объектом класса commandButton.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства класса

Класс является носителем общих для объектов этого класса признаков. Класс характеризуется следующими основополагающими понятиями ООП.

  • Наследование. Объект класса обладает всеми свойствами, методами и событиями класса.
  • Иерархия. Все классы образуют иерархическую систему и могут быть дочерними по отношению к нескольким вышестоящим классам.
  • Инкапсуляция. Скрытие сложного механизма действия объекта.
  • Полиморфизм. Объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Методы класса

Методы класса — это выполняемые классом функциональные "обязанности", задаваемые при его проектировании. Практически они представляют собой процедуры и функции, которые реализуют все функциональные требования к объектам класса и, соответственно, к классу, как описанию объектов.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

События класса

События — это сообщения, при помощи которых класс управляется и реагирует на воздействия внешней среды. Все события определяются в классе при его проектировании. В дальнейшем при использовании объектов этого класса они будут воспринимать и генерировать соответствующие классу события. Классам присущи разнообразные события и они, конечно, различны для каждого класса, однако в Visual Basic 6 имеются два специальных события, которые присущи всем классам. Это события создания и уничтожения (прекращения работы) объектов класса:

  • Initialize — это событие возникает в момент создания (появления) нового объекта класса при работе приложения;
  • Terminate — это событие возникает в момент уничтожения объекта.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства объекта

Объект обладает всеми свойствами класса. Однако это не означает, что объекту нельзя добавить какое-либо дополнительное свойство, событие или метод. Если необходимо использовать в объекте дополнительные методы или другие члены, их можно добавить в объект или создать дочерний класс с требуемыми членами на базе класса этого объекта.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Понятие коллекции объектов

Коллекция — это набор объектов, объединенных общим именем, причем не обязательно это объекты одного класса. Для типовых пользовательских объектов характерны (и обычно присутствуют при создании коллекции без специального их объявления) следующие свойства и методы:

  • метод Add — добавляет объект в коллекцию;
  • метод Remove — исключает объект из коллекции;
  • свойство count — возвращает общее число объектов в коллекции;
  • метод item — возвращает объект из коллекции.

Примером коллекций могут служить встроенные в Visual Basic 6 коллекции, в числе которых Forms и controls. Forms — это множество загруженных форм приложения, Controls — это множество всех элементов управления в форме.

На практике для объявления пользовательской коллекции применяется тип данных collection. Для пользовательских коллекции указанные выше методы и свойство создаются автоматически. Например, следующий код создает новую коллекцию:

Dim MyCollection As New Collection

Замечание

Для организации цикла по элементам коллекции служит конструкция For Each ... Next.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание собственных классов

Для создания классов используются команды Add Class Module (Добавить модуль класса) или Add User Control (Добавить пользовательский элемент управления), если это класс элементов управления, меню Project (Проект). Для изучения возможностей создания классов создадим класс подразделений некой фирмы со следующими атрибутами:

  • Шифр подразделения
  • Наименование подразделения
  • Шифр вышестоящего подразделения
  • Руководитель подразделения
  • Фонд заработной платы подразделения
  • Премиальный фонд подразделения

Для создания такого класса выполните следующие действия:

1. Создайте новый проект типа Standard EXE и назовите его MyClass при помощи страницы свойств проекта, вызываемой командой Project1 Properties меню Project (Проект).

2. Форму приложения Fonn1, создаваемую в проекте автоматически, переименуйте В frmMyClass.

3. Командой Add Class Module меню Project (Проект) добавьте в проект новый модуль класса. В окне проводника проекта появится группа Class Modules.

4. Используя свойство Name окна Properties (Свойства), вызываемого командой Properties Window (Окно свойств) меню View (Вид), присвойте классу

ИМЯ cIsDepartment (рис. 15.1).

5. Теперь, чтобы определить объект данного класса, необходимо в окне редактора формы или модуля ввести следующий код:

Dim objDep As New cIsDepartment

или

Dim objDep As Object

Set objDep = New cIsDepartment

Рис: 15.1. Проект MyClass с вновь созданным классом cIsDepartment


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление свойств класса

Для добавления свойств в созданный модуль класса можно воспользоваться глобальными переменными или процедурами установки и чтения свойств. Сначала рассмотрим добавление свойств с помощью глобальных переменных. Введите в модуль класса текст кода, указанный ниже:

' Свойства объектов класса

Public nDepCode As Integer

Public nDepParentCode As Integer

Public sDepName As String

Public sDepManager As String

Public nSalary As Currency

Public nAddSalary As Currency

Для проверки работы свойств объекта класса cIsDepartment необходимо установить значения этих свойств с помощью указанного ниже кода. Сделать это можно в любом требуемом месте приложения. В данном случае выполним это при загрузке формы в память, то есть по событию Load формы frmMyClass Приложения MyClass:

Private Sub Form_Load()

objDep.nDepCode = 12

objDep.nDepParentCode = 1

objDep.sDepName = "Общий отдел"

objDep.sDepManager = "Петров Иван Иванович"

objDep.nSalary = 1200

objDep.nAddSalary = 12

End Sub

Для просмотра свойств объекта добавьте в форму frmMyClass кнопку типа commandButton и для размещения надписи кнопки введите Сведения об обьекте. Наименование кнопки можно не менять. Форма примет вид, показанный на рис. 15.2. Затем добавьте для этой кнопки следующий код:

Private Sub Commandl_Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(lO)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(lO)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

End Sub

Рис. 15.2. Форма для проверки свойств объекта класса с Is Department

При загрузке формы назначаются свойства объекта, которые затем можно посмотреть с помощью кнопки формы.

В нашем примере вы задавали свойства с помощью глобальных переменных. Однако для задания свойств можно использовать более гибкий и защищенный от внешней среды по отношению к классу вариант назначения свойств класса, то есть функции свойств:

  • property Let — устанавливает значение свойства;
  • property set — устанавливает значение свойства в случае, если оно (значение) является объектом;
  • property Get — возвращает значение свойства.

Добавим, например, в класс сlsDepartment свойство InAddress, описывающее внутренний адрес подразделения (например, номер помещения) внутри фирмы.

Для добавления нового свойства можно использовать диалоговое окно ввода членов класса Add Procedure (Добавить процедуру), показанное на рис. 15.3. Оно вызывается командой Add Procedure (Добавить процедуру) меню Tools (Сервис) при работе в редакторе кода модуля. Напомним, что члены класса — это свойства, методы и события, присущие классу.

Для ввода необходимого свойства следует вписать его имя в поле Name (Имя) диалогового окна Add Procedure и установить опцию Property (Свойство) в группе переключателей Type (Тип). Данное окно автоматически добавляет в код модуля шаблоны функций property Get и property Let с заданным наименованием свойства.

Рис. 15.3. Диалоговое окно Add Procedure для ввода членов класса

Необходимо назначить переменную для хранения свойства, но это уже внутренняя переменная класса типа private, защищенная от внешнего доступа. Окончательный код в модуле класса с учетом нового свойства выглядит так:

' Свойства объектов класса

Public nDepCode As Integer

Public nDepParentCode As Integer

Public sDepName As String

Public sDepManager As String

Public nSalary As Currency

Public nAddSalary As Currency

' Переменная для хранения значения нового свойства

Private sInAddress

' Определение нового свойства

Public Property Get InAddressO As String

InAddress = sInAddress End Property

Public Property Let InAddress(ByVal sNewValue As String)

sInAddress = sNewValue End Property

Если модифицировать код, выполняемый при нажатии кнопки, следующим образом:

Private Sub Commandl_Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(10)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(10)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager + Chr(10)

' Добавленное свойство

sSayAboutObj = sSayAboutObj + "Размещается: " + objDep.InAddress

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

End Sub

то будет возвращаться и значение нового свойства, определяющего место размещения подразделения.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление методов в класс

Добавление метода в класс осуществляется гораздо проще. Фактически необходимо просто объявить функцию или процедуру типа public в классе. Практически метод добавляется с помощью диалогового окна Add Procedure (Добавить процедуру), которое показано на рис. 15.3. При этом переключатель Type (Тип) необходимо установить в положение Sub (Процедура) или Function (Функция), а переключатель Score (Область видимости) в положение Public.

Замечание

Напомним, что диалоговое окно Add Procedure вызывается командой Add Procedure меню Tools (Сервис) при открытом редакторе кода. При помощи Add Procedure в текст модуля добавляется только шаблон метода, который затем необходимо программировать вручную.

В качестве примера добавим в класс с is Department метод SayAboutDep, возвращающий информацию о подразделении. Для этого, используя диалоговое окно Add Procedure, введем в модуль класса следующий код:

Public Function SayAboutDep() As String

' Вывод общей информации об объекте

SayAboutDep = sDepName + ". Руководитель: " + sDepManager

End Function

Для проверки работы метода в событие click кнопки Commandl приложения Myciass вместо строки:

MsgBox sSayAboutObj,, "Сведения об объекте"

введите следующую строку;

MsgBox objDep.SayAboutDep(),, "Сведения об объекте"

Теперь при нажатии на кнопку Сведения об объекте метод SayAboutDep возвращает общую информацию об объекте.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление событий в класс

Для добавления в класс события также необходимо воспользоваться диалоговым окном Add Procedure (рис. 15.3). При этом переключатель Type (Тип) нужно установить в положение Event (Событие), а переключатель Score (Область видимости) в положение Public.

Рассмотрим такой пример. Добавим в класс cisDepartment событие initciass, при возникновении которого все свойства класса будут устанавливаться в требуемое состояние. Для этого с помощью диалогового окна Add Procedure добавьте в модуль класса определение события и введите следующий код:

' Новое событие

Public Event InitClass ()

' Процедура инициализации класса

Public Sub SetInitClass ()

RaiseEvent InitClass

End Sub

Для инициализации события в Visual Basic 6 есть специальный оператор RaiseEvent, который в данном случае работает в процедуре инициализации класса.

Для работы с этим событием необходимо немного доработать приложение Myciass. Выполните следующие действия:

1. Добавьте в форму еще одну кнопку типа commandButton и, используя свойство caption, разместите на ней надпись Установить свойства. Вид формы показан на рис. 15.4.

Рис. 15.4. форма для проверки события InitClass

2. Модифицируйте код приложения, чтобы он принял следующий вид:

Dim WithEvents objDep As cisDepartment

Private Sub Commandl Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(10)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(10)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager + Chr(10)

' Добавленное свойство

sSayAboutObj = sSayAboutObj + "Размещается: " + objDep.InAddress

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

MsgBox objDep.SayAboutDep (),, "Сведения об объекте"

End Sub

Private Sub Conimand2_Click ()

obj Dep.SetInitClass

End Sub

Private Sub Form Load()

Set objDep = New с Is Department

End Sub

Private Sub objDep_InitClass ()

obj Dep. nDepCode =12

objDep.nDepParentCode = 1

objDep.sDepName = "Общий отдел"

objDep.sDepManager ~= "Петров Иван Иванович"

objDep.nSalary = 1200

objDep.nAddSalary = 12

objDep.InAddress = "к.103"

End Sub

Для того чтобы события объекта были доступны в форме, необходимо объявлять его с использованием ключевого слова withEvents. Как только это слово включено в объявление объекта, он появляется в левом списке окна редактора кода, а соответствующие ему события будут доступны в правом списке. При этом несколько изменяется и само объявление объекта, то есть для этого служит оператор set.

Если теперь при загрузке формы приложения нажать кнопку Сведения об объекте, то никаких данных не будет показано. Данные появятся только после выполнения инициализации объекта, то есть после нажатия на кнопку Установить свойства.

.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание классов форм

Интересно, что с самого начала работы с Visual Basic 6 программист начинает создавать классы. И эти классы — это классы форм. Рассмотрим, как можно создавать и использовать данные классы форм.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание класса формы

Вначале займемся созданием класса формы. Выполните следующие действия:

1. Откройте новый проект типа Standard EXE.

2. Используя диалоговое окно свойств проекта, открываемое командой Projecti Properties меню Project, назовите проект classForms.

3. С помощью окна свойств Properties (Свойства), открываемого командой Properties Window меню View или командой Properties контекстного меню, переименуйте форму в frmFormcis.

4. Добавьте в форму элемент управления типа commandButtom, дважды щелкнув мышью кнопку CommandButtom на панели элементов управления. Можно не изменять имени кнопки, заданного по умолчанию. Используя свойство Caption, задайте название кнопки Создать новый объект.

Выполненный проект показан на рис. 15.5.

Рис. 15.5. Приложение для изучения класса форм

5. В окно редактора введите следующий код:

Private Sub Commandl_Click()

Dim FormNew As New frmFormCIs

FormNew.Show

End Sub

6. Запустите приложение на выполнение. При нажатии на размещенную в форме кнопку создаются объекты класса frmFormcis, то есть, проектируя форму, вы спроектировали целый класс форм.

При многократном вызове объектов этого класса создается коллекция объектов, и каждая форма при этом является членом коллекции. Для идентификации конкретного члена используется индекс членов коллекции, при помощи которого можно сослаться на любую форму из коллекции или получить управление конкретной формой. Для форм в Visual Basic 6 существует специальная коллекция Forms, при помощи которой можно адресоваться к конкретной форме. Чтобы изучить данное свойство коллекции форм, усовершенствуйте приложение следующим образом:

1. Добавьте в приложение еще один элемент управления типа commandButton и задайте наименование созданной кнопки Переход к объекту. Имя кнопки можно оставить заданным по умолчанию (рис. 15.6).

Рис. 15.6. Приложение для изучения адресации к объектам класса форм

2. Измените код приложения в соответствии с указанным ниже:

Dim frmCount As Integer

Dim frmCountMax As Integer

Private Sub Commandl_Click()

' Создание объекта

Dim FormNew As New frmFormCIs

FormNew.Show

frmCountMax = frmCountMax + 1

End Sub

Private Sub Command2_Click()

' Переход к объекту

Forms(frmCount).Caption = "Форма-объект " + Str(frmCount)

Forms(frmCount).Show

frmCount = frmCount + 1

If frmCount > frmCountMax Then frmCount = 0

End Sub

Private Sub Form Load()

frmCount = 0

frmCountMax = 0

End Sub

В этом приложении при нажатии кнопки Переход к объекту активизируется соответствующий объект класса frmFormCIs и изменяется одно из его свойств, в данном случае свойство заголовка окна. При этом, конечно, доступны и все другие свойства объекта.

Для изучения возможности обращения к объектам формы экземпляра класса frmFormCis доработайте приложение следующим образом:

1. Добавьте в форму текстовое поле типа TextBox, дважды щелкнув мышью кнопку TextBox на панели элементов управления, и присвойте ей имя txtFormNum. Из свойства Text удалите текст, введенный по умолчанию.

2. Измените текст кода для объекта command2 на следующий:

Private Sub Coiroiand2_Click ()

' Переход к объекту

Forms(frmCount).Caption = "Форма-объект " + Str(frmCount)

Forms(frmCount).Show

' Адресация к объекту формы

Forms(frmCount).txtFormNum.Text = frmCount

frmCount = frmCount + 1

If frmCount > frmCountMax Then frmCount = 0

End Sub

В этом тексте продемонстрировано, как адресоваться к одному и тому же объекту в формах, которые являются экземплярами класса frmFormCis, с помощью установки значения свойства Text этого объекта. Как видите, при помощи такого описания классов форм можно создавать достаточно сложные формы и использовать их в качестве классов в последующих разработках.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление свойств, методов, событий в класс формы

Добавить в форму члены класса можно визуально простым добавлением элемента управления в форму. Действительно, если для проекта classForms открыть браузер объектов и выбрать в нем проект, то кнопки и поля будут включены в него как члены с ключевым словом withEvents. Это означает, что все события этих объектов будут контролироваться и формой.

Добавление членов класса формы, то есть свойств, методов и событий, выполняется обычным способом, как это было сделано для класса подразделения.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание классов с помощью VB Class Builder

Для создания сложных классов или доработки уже имеющихся в среде Visual Basic 6 предусмотрено специальное инструментальное средство — построитель классов Class Builder.

Замечание

Построитель классов подключается к среде проектирования с помощью диспетчера надстроек командой Add-In Manager (Диспетчер надстроек) меню Add-Ins (Надстройки). В окне диспетчера Add-In Manager необходимо назначить загрузку построителя классов, установив флажок загрузки для значения VB6 Class Builder Utility.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Построитель классов

После присоединения построителя классов к среде проектирования, команда запуска построителя классов Class Builder (Построитель классов) появляется в меню Add-Ins. При работе над проектом построитель классов можно также вызвать с помощью значка VB Class Builder в диалоговом окне Add Class Module (рис. 15.7), которое открывается командой Add Class Module (Добавить модуль класса) меню Project (Проект).

Рис. 15.7. Диалоговое окно Add Class Module для запуска построителя классов

При запуске построителя классов открывается окно Class Builder (рис. 15.8) для проектирования классов, в котором выполняется вся работа по созданию или дополнению класса. Это окно состоит из четырех вкладок:

  • Properties (Свойства) — вкладка для работы со свойствами;
  • Methods (Методы) — вкладка для работы с методами;
  • Events (События) — вкладка для работы с событиями;
  • All (Все) — вкладка, на которой представлены все члены класса.

Рис. 15.8. Окно построителя классов Class Builder

Построитель классов содержит собственное меню и панель инструментов с кнопками, назначение которых описано в табл. 15.1.

Таблица 15.1. Кнопки окна построителя классов Class Builder
Кнопка | Название | Назначение
 | Add New Class (Добавить новый класс) | Добавляет новый класс. Дублирует команду Class (Класс), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Property to Current Class (Добавить новое свойство в текущий класс) | Добавляет новое свойство в класс. Дублирует команду Property (Свойство), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Method to Current Class (Добавить новый метод в текущий класс) | Добавляет новый метод в класс. Дублирует команду Method (Метод), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Event to Current Class (Добавить новое событие в текущий класс) | Добавляет новое событие в класс. Дублирует команду Event (Событие), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Show Properties for the Current Object (Показать свойства текущего объекта) | Показывает свойства текущего члена класса. Соответствует команде Properties (Свойства) меню Edit (Правка)
 | Cut (Вырезать) | Вырезает выделенное в буфер
 | Copy (Копировать) | Копирует выделенное из буфера
 | Paste (Вставить) | Вставляет информацию из буфера

Кроме этих кнопок, дублирующих команды меню, в меню построителя классов Class Builder есть одна важная команда, которая не продублирована кнопкой. Это команда Update Project (Внести изменения в проект). При выполнении данной команды внесенные в классы проекта изменения запоминаются для последующего сохранения в файлах классов.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление нового класса

Рассмотрим, как проектируется класс с помощью построителя классов. Для добавления нового класса нажмите кнопку Add New Class на панели инструментов окна построителя или выберите в меню File (Файл) построителя значение New (Новое), а затем — Class (Класс). Открывается окно Class Module Builder (Построитель модулей классов) для ввода описания атрибутов класса (рис. 15.9). Это окно достаточно простое. В поле Name (Имя) окна необходимо ввести наименование нового класса и указать базовый класс, если новый класс строится на основании существующего. Если это не так, то из списка Based On выбирается значение New Class (Новый класс).

Рис. 15.9. Окно построителя модулей классов Class Module Builder

После того как модуль класса создан, работа над классом продолжается на вкладках построителя. При этом для каждого члена класса вызывается соответствующее окно проектирования.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление свойств класса

При работе со свойствами необходимо перейти на вкладку Properties (Свойства) построителя классов (рис. 15.8). При нажатии на кнопку добавления нового свойства Add New Property to Current Class открывается диалоговое окно Property Builder (Построитель свойств), показанное на рис. 15.10. Для добавления нового свойства необходимо в поле Name (Имя) этого окна ввести наименование свойства, выбрать тип переменной, которой соответствует свойство, назначить объявление свойства с помощью переключателя Declarations (Объявления).

Рис. 15.10. Окно построителя свойств классов Property Builder


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление методов класса

Чтобы добавить новый метод в класс, следует перейти на вкладку Methods (Методы) построителя классов (рис. 15.11).

Для проектирования методов необходимо открыть диалоговое окно Method Builder (Построитель методов) (рис. 15.12), предназначенное для работы с методами класса. Чтобы открыть это окно, следует нажать кнопку Add New Method to Current Class (Добавить новый метод в текущий класс) на панели окна или выбрать команду New (Новое) меню File (Файл), а затем значение Method (Метод).

Рис. 15.11. Вкладка Methods построителя классов Class Builder

Рис. 15.12. Окно Method Builder построителя методов

В диалоговом окне Method Builder можно в поле Name (Имя) ввести имя нового метода и добавить, при необходимости, аргументы метода в список Arguments (Аргументы). Для добавления или редактирования аргументов вызывается окно ввода аргументов Add Argument (Добавить аргумент), показанное на рис. 15.13. В этом окне в поле Name (Имя) следует ввести наименование аргумента, указать его тип, выбрав требуемое значение из списка Data Type (Тип данных), назначить ключевые слова ByVal, Array, optional описания метода, установив соответствующие флажки.

Рис. 15.13. Окно добавления аргументов в метод

Слева от списка в диалоговом окне Method Builder (Построитель методов) находятся кнопки управления аргументами. Они выполняют следующие действия:

Кнопка | Назначение
 | Открывает диалоговое окно Add Argument (Добавить аргумент), предназначенное для ввода нового аргумента метода
 | Удаляет аргумент
 | Перемещает аргумент в списке на позицию вверх
 | Перемещает аргумент в списке на позицию вниз


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление событий класса

Для работы с событиями класса необходимо перейти на вкладку Events (События) построителя, которая показана на рис. 15.14.

Для работы с событиями в построителе предназначено диалоговое окно Event Builder (Построитель событий) (рис. 15.15), которое открывается при нажатии кнопки Add New Event to Current Class (Добавить новое событие в текущий класс) на панели окна построителя. Для открытия этого окна можно также выбрать команду New (Новое) меню File (Файл), а затем значение Event (Событие).

Диалоговое окно построителя событий похоже на окно построителя методов. При необходимости можно добавить аргументы в событие с помощью окна Add Argument (Добавить аргумент), аналогичного окну добавления аргументов в метод.

Рис. 15.14. Вкладка Events построителя классов Class Builder

Рис. 15.15. Диалоговое окно построителя событий Event Builder

При необходимости можно работать сразу со всеми членами класса с помощью вкладки All (Все) построителя классов (рис. 15.16).

После завершения работы с классом его необходимо сохранить в файле с расширением els.

Полный текст полученного при помощи Class Builder класса приводить нет необходимости, поскольку он достаточно объемный. Следует заметить, что свойства вводятся не как глобальные переменные, а с помощью функций Property Get и Property Let. Для примера можно привести текст свойства AddSalary:

Private mvarAddSalary As Currency 'local copy

Public Property Let AddSalary(ByVal vData As Currency)

'used when assigning a value to the property, on the left side of an assignment.

'Syntax: X.AddSalary = 5

mvarAddSalary = vData

End Property

Public Property Get AddSalary () As Currency

'used when retrieving value of a property, on the right side of an assignment.

'Syntax: Debug.Print X.AddSalary

AddSalary = mvarAddSalary

End Property

Замечание

Необходимо отметить, что спроектированные при помощи построителя классов члены класса после завершения проектирования и сохранения класса уже недоступны в построителе для редактирования или удаления. Неудачно созданные и сохраненные члены класса удаляются непосредственно из кода модуля класса в редакторе кода.

Рис. 15.16. Вкладка АН построителя классов Class Builder

Созданные таким образом классы работают только в проекте, для которого они созданы. Однако подход ООП изобретен в том числе и для многократного использования кода, чем он и замечателен. Такую возможность предоставляет Visual Basic 6.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс как способ многократного использования кода

Как и компоненты ActiveX, класс служит для многократного использования кода. Однако в отличие от компонентов ActiveX, которые специально разрабатываются для применения во всех последующих приложениях, класс действует только в рамках данного проекта. Это ограничение можно устранить, подключив проект с интересующим классом к текущему проекту с помощью окна ссылок Reference. После того как проект подключен к разрабатываемому приложению, можно легко сослаться на класс, например, при создании объекта, следующим образом:

Dim NewObj As New MyClass.clsClass

Здесь MyClass — это проект, который содержит интересующий пользователя класс clsClass.


Ch 15.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 15. Создание собственных классов.

Как и во всех современных средствах визуального проектирования, в Visual Basic 6 применяется ООП (Объектно-ориентированное программирование). Основными понятиями ООП являются объект и класс, которые, в свою очередь, включают в себя такие базовые понятия, как методы, свойства, события, а также инкапсуляция, наследование, полиморфизм.

Основные понятия ООП

При разработке приложений для изучения основ Visual Basic 6 в предыдущих главах уже использовались понятия класса и объекта, но их значение не раскрывалось. Попробуем в этом разделе разобраться, что такое класс, и что такое объект.

Объектно-ориентированный подход в программировании предлагает все, что входит в состав приложения, считать объектами, которые взаимодействуют друг с другом и с пользователем в соответствии с заданными в программе свойствами и поведением, выполняя необходимые функции приложения. Таким образом, любое приложение при данном подходе представляет собой набор взаимосвязанных объектов, реализующих необходимые функциональные требования, предъявленные к приложению.

Объект

Объект — это некая отдельная сущность, выделяющаяся среди других сущностей особыми свойствами, поведением, взаимодействием с себе подобными объектами приложения. Объект всегда конкретен и реально существует в форме или в приложении, обладая при этом только ему присущими свойствами и поведением. Признаками объектов, отличающих их друг от друга, являются их свойства и поведение. Объект характеризуется следующими основными понятиями.

  • Метод — это функция или процедура, которая реализует возможные с объектом действия.
  • Событие — это средство взаимодействия объектов друг с другом. Объекты генерируют заданные события и выполняют действия в ответ на заданные события. События — это аналог сообщений, которые получают и отправляют объекты.
  • Состояние — каждый объект всегда находится в определенном состоянии, которое характеризуется набором свойств объекта. Под воздействием событий объект переходит в другие состояния. При этом объект может сам генерировать события о переходе в другое состояние.
  • Свойство — признак, некоторое отдельное качество (параметр) объекта. Например, свойствами могут быть размеры объекта, заголовок, его наименование. Совокупность свойств объекта определяет его состояние. Как правило, свойства — это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта.

Класс

Объекты, имеющие общие свойства и поведение, объединяются в классы. Таким образом, класс можно определить как некую общность конкретных объектов, как описание объекта — каким он должен быть и что должен делать.

Если объекты существуют в приложениях, то класс — это абстракция, объединяющая объекты в одну группу согласно их свойствам и поведению в среде окружения, в которой они существуют и взаимодействуют. Класс, таким образом, является некоей абстракцией, так как он не существует в работающем приложении.

Например, кнопка в форме со всеми своими конкретными свойствами и действием является объектом класса commandButton.

Свойства класса

Класс является носителем общих для объектов этого класса признаков. Класс характеризуется следующими основополагающими понятиями ООП.

  • Наследование. Объект класса обладает всеми свойствами, методами и событиями класса.
  • Иерархия. Все классы образуют иерархическую систему и могут быть дочерними по отношению к нескольким вышестоящим классам.
  • Инкапсуляция. Скрытие сложного механизма действия объекта.
  • Полиморфизм. Объекты разных классов могут использовать одноименные методы, работающие по-разному для разных объектов.

Методы класса

Методы класса — это выполняемые классом функциональные "обязанности", задаваемые при его проектировании. Практически они представляют собой процедуры и функции, которые реализуют все функциональные требования к объектам класса и, соответственно, к классу, как описанию объектов.

События класса

События — это сообщения, при помощи которых класс управляется и реагирует на воздействия внешней среды. Все события определяются в классе при его проектировании. В дальнейшем при использовании объектов этого класса они будут воспринимать и генерировать соответствующие классу события. Классам присущи разнообразные события и они, конечно, различны для каждого класса, однако в Visual Basic 6 имеются два специальных события, которые присущи всем классам. Это события создания и уничтожения (прекращения работы) объектов класса:

  • Initialize — это событие возникает в момент создания (появления) нового объекта класса при работе приложения;
  • Terminate — это событие возникает в момент уничтожения объекта.

Свойства объекта

Объект обладает всеми свойствами класса. Однако это не означает, что объекту нельзя добавить какое-либо дополнительное свойство, событие или метод. Если необходимо использовать в объекте дополнительные методы или другие члены, их можно добавить в объект или создать дочерний класс с требуемыми членами на базе класса этого объекта.

Понятие коллекции объектов

Коллекция — это набор объектов, объединенных общим именем, причем не обязательно это объекты одного класса. Для типовых пользовательских объектов характерны (и обычно присутствуют при создании коллекции без специального их объявления) следующие свойства и методы:

  • метод Add — добавляет объект в коллекцию;
  • метод Remove — исключает объект из коллекции;
  • свойство count — возвращает общее число объектов в коллекции;
  • метод item — возвращает объект из коллекции.

Примером коллекций могут служить встроенные в Visual Basic 6 коллекции, в числе которых Forms и controls. Forms — это множество загруженных форм приложения, Controls — это множество всех элементов управления в форме.

На практике для объявления пользовательской коллекции применяется тип данных collection. Для пользовательских коллекции указанные выше методы и свойство создаются автоматически. Например, следующий код создает новую коллекцию:

Dim MyCollection As New Collection

Замечание

Для организации цикла по элементам коллекции служит конструкция For Each ... Next.

Создание собственных классов

Для создания классов используются команды Add Class Module (Добавить модуль класса) или Add User Control (Добавить пользовательский элемент управления), если это класс элементов управления, меню Project (Проект). Для изучения возможностей создания классов создадим класс подразделений некой фирмы со следующими атрибутами:

  • Шифр подразделения
  • Наименование подразделения
  • Шифр вышестоящего подразделения
  • Руководитель подразделения
  • Фонд заработной платы подразделения
  • Премиальный фонд подразделения

Для создания такого класса выполните следующие действия:

1. Создайте новый проект типа Standard EXE и назовите его MyClass при помощи страницы свойств проекта, вызываемой командой Project1 Properties меню Project (Проект).

2. Форму приложения Fonn1, создаваемую в проекте автоматически, переименуйте В frmMyClass.

3. Командой Add Class Module меню Project (Проект) добавьте в проект новый модуль класса. В окне проводника проекта появится группа Class Modules.

4. Используя свойство Name окна Properties (Свойства), вызываемого командой Properties Window (Окно свойств) меню View (Вид), присвойте классу

ИМЯ cIsDepartment (рис. 15.1).

5. Теперь, чтобы определить объект данного класса, необходимо в окне редактора формы или модуля ввести следующий код:

Dim objDep As New cIsDepartment

или

Dim objDep As Object

Set objDep = New cIsDepartment

Рис: 15.1. Проект MyClass с вновь созданным классом cIsDepartment

Добавление свойств класса

Для добавления свойств в созданный модуль класса можно воспользоваться глобальными переменными или процедурами установки и чтения свойств. Сначала рассмотрим добавление свойств с помощью глобальных переменных. Введите в модуль класса текст кода, указанный ниже:

' Свойства объектов класса

Public nDepCode As Integer

Public nDepParentCode As Integer

Public sDepName As String

Public sDepManager As String

Public nSalary As Currency

Public nAddSalary As Currency

Для проверки работы свойств объекта класса cIsDepartment необходимо установить значения этих свойств с помощью указанного ниже кода. Сделать это можно в любом требуемом месте приложения. В данном случае выполним это при загрузке формы в память, то есть по событию Load формы frmMyClass Приложения MyClass:

Private Sub Form_Load()

objDep.nDepCode = 12

objDep.nDepParentCode = 1

objDep.sDepName = "Общий отдел"

objDep.sDepManager = "Петров Иван Иванович"

objDep.nSalary = 1200

objDep.nAddSalary = 12

End Sub

Для просмотра свойств объекта добавьте в форму frmMyClass кнопку типа commandButton и для размещения надписи кнопки введите Сведения об обьекте. Наименование кнопки можно не менять. Форма примет вид, показанный на рис. 15.2. Затем добавьте для этой кнопки следующий код:

Private Sub Commandl_Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(lO)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(lO)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

End Sub

Рис. 15.2. Форма для проверки свойств объекта класса с Is Department

При загрузке формы назначаются свойства объекта, которые затем можно посмотреть с помощью кнопки формы.

В нашем примере вы задавали свойства с помощью глобальных переменных. Однако для задания свойств можно использовать более гибкий и защищенный от внешней среды по отношению к классу вариант назначения свойств класса, то есть функции свойств:

  • property Let — устанавливает значение свойства;
  • property set — устанавливает значение свойства в случае, если оно (значение) является объектом;
  • property Get — возвращает значение свойства.

Добавим, например, в класс сlsDepartment свойство InAddress, описывающее внутренний адрес подразделения (например, номер помещения) внутри фирмы.

Для добавления нового свойства можно использовать диалоговое окно ввода членов класса Add Procedure (Добавить процедуру), показанное на рис. 15.3. Оно вызывается командой Add Procedure (Добавить процедуру) меню Tools (Сервис) при работе в редакторе кода модуля. Напомним, что члены класса — это свойства, методы и события, присущие классу.

Для ввода необходимого свойства следует вписать его имя в поле Name (Имя) диалогового окна Add Procedure и установить опцию Property (Свойство) в группе переключателей Type (Тип). Данное окно автоматически добавляет в код модуля шаблоны функций property Get и property Let с заданным наименованием свойства.

Рис. 15.3. Диалоговое окно Add Procedure для ввода членов класса

Необходимо назначить переменную для хранения свойства, но это уже внутренняя переменная класса типа private, защищенная от внешнего доступа. Окончательный код в модуле класса с учетом нового свойства выглядит так:

' Свойства объектов класса

Public nDepCode As Integer

Public nDepParentCode As Integer

Public sDepName As String

Public sDepManager As String

Public nSalary As Currency

Public nAddSalary As Currency

' Переменная для хранения значения нового свойства

Private sInAddress

' Определение нового свойства

Public Property Get InAddressO As String

InAddress = sInAddress End Property

Public Property Let InAddress(ByVal sNewValue As String)

sInAddress = sNewValue End Property

Если модифицировать код, выполняемый при нажатии кнопки, следующим образом:

Private Sub Commandl_Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(10)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(10)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager + Chr(10)

' Добавленное свойство

sSayAboutObj = sSayAboutObj + "Размещается: " + objDep.InAddress

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

End Sub

то будет возвращаться и значение нового свойства, определяющего место размещения подразделения.

Добавление методов в класс

Добавление метода в класс осуществляется гораздо проще. Фактически необходимо просто объявить функцию или процедуру типа public в классе. Практически метод добавляется с помощью диалогового окна Add Procedure (Добавить процедуру), которое показано на рис. 15.3. При этом переключатель Type (Тип) необходимо установить в положение Sub (Процедура) или Function (Функция), а переключатель Score (Область видимости) в положение Public.

Замечание

Напомним, что диалоговое окно Add Procedure вызывается командой Add Procedure меню Tools (Сервис) при открытом редакторе кода. При помощи Add Procedure в текст модуля добавляется только шаблон метода, который затем необходимо программировать вручную.

В качестве примера добавим в класс с is Department метод SayAboutDep, возвращающий информацию о подразделении. Для этого, используя диалоговое окно Add Procedure, введем в модуль класса следующий код:

Public Function SayAboutDep() As String

' Вывод общей информации об объекте

SayAboutDep = sDepName + ". Руководитель: " + sDepManager

End Function

Для проверки работы метода в событие click кнопки Commandl приложения Myciass вместо строки:

MsgBox sSayAboutObj,, "Сведения об объекте"

введите следующую строку;

MsgBox objDep.SayAboutDep(),, "Сведения об объекте"

Теперь при нажатии на кнопку Сведения об объекте метод SayAboutDep возвращает общую информацию об объекте.

Добавление событий в класс

Для добавления в класс события также необходимо воспользоваться диалоговым окном Add Procedure (рис. 15.3). При этом переключатель Type (Тип) нужно установить в положение Event (Событие), а переключатель Score (Область видимости) в положение Public.

Рассмотрим такой пример. Добавим в класс cisDepartment событие initciass, при возникновении которого все свойства класса будут устанавливаться в требуемое состояние. Для этого с помощью диалогового окна Add Procedure добавьте в модуль класса определение события и введите следующий код:

' Новое событие

Public Event InitClass ()

' Процедура инициализации класса

Public Sub SetInitClass ()

RaiseEvent InitClass

End Sub

Для инициализации события в Visual Basic 6 есть специальный оператор RaiseEvent, который в данном случае работает в процедуре инициализации класса.

Для работы с этим событием необходимо немного доработать приложение Myciass. Выполните следующие действия:

1. Добавьте в форму еще одну кнопку типа commandButton и, используя свойство caption, разместите на ней надпись Установить свойства. Вид формы показан на рис. 15.4.

Рис. 15.4. форма для проверки события InitClass

2. Модифицируйте код приложения, чтобы он принял следующий вид:

Dim WithEvents objDep As cisDepartment

Private Sub Commandl Click()

sSayAboutObj = "Код подразделения: " + Str(objDep.nDepCode) + Chr(10)

sSayAboutObj = sSayAboutObj + "Наименование подразделения: " + objDep.sDepName + Chr(10)

sSayAboutObj = sSayAboutObj + "Руководитель: " + objDep.sDepManager + Chr(10)

' Добавленное свойство

sSayAboutObj = sSayAboutObj + "Размещается: " + objDep.InAddress

'Вывод в окно сообщения

MsgBox sSayAboutObj,, "Сведения об объекте"

MsgBox objDep.SayAboutDep (),, "Сведения об объекте"

End Sub

Private Sub Conimand2_Click ()

obj Dep.SetInitClass

End Sub

Private Sub Form Load()

Set objDep = New с Is Department

End Sub

Private Sub objDep_InitClass ()

obj Dep. nDepCode =12

objDep.nDepParentCode = 1

objDep.sDepName = "Общий отдел"

objDep.sDepManager ~= "Петров Иван Иванович"

objDep.nSalary = 1200

objDep.nAddSalary = 12

objDep.InAddress = "к.103"

End Sub

Для того чтобы события объекта были доступны в форме, необходимо объявлять его с использованием ключевого слова withEvents. Как только это слово включено в объявление объекта, он появляется в левом списке окна редактора кода, а соответствующие ему события будут доступны в правом списке. При этом несколько изменяется и само объявление объекта, то есть для этого служит оператор set.

Если теперь при загрузке формы приложения нажать кнопку Сведения об объекте, то никаких данных не будет показано. Данные появятся только после выполнения инициализации объекта, то есть после нажатия на кнопку Установить свойства.

Создание классов форм

Интересно, что с самого начала работы с Visual Basic 6 программист начинает создавать классы. И эти классы — это классы форм. Рассмотрим, как можно создавать и использовать данные классы форм.

Создание класса формы

Вначале займемся созданием класса формы. Выполните следующие действия:

1. Откройте новый проект типа Standard EXE.

2. Используя диалоговое окно свойств проекта, открываемое командой Projecti Properties меню Project, назовите проект classForms.

3. С помощью окна свойств Properties (Свойства), открываемого командой Properties Window меню View или командой Properties контекстного меню, переименуйте форму в frmFormcis.

4. Добавьте в форму элемент управления типа commandButtom, дважды щелкнув мышью кнопку CommandButtom на панели элементов управления. Можно не изменять имени кнопки, заданного по умолчанию. Используя свойство Caption, задайте название кнопки Создать новый объект.

Выполненный проект показан на рис. 15.5.

Рис. 15.5. Приложение для изучения класса форм

5. В окно редактора введите следующий код:

Private Sub Commandl_Click()

Dim FormNew As New frmFormCIs

FormNew.Show

End Sub

6. Запустите приложение на выполнение. При нажатии на размещенную в форме кнопку создаются объекты класса frmFormcis, то есть, проектируя форму, вы спроектировали целый класс форм.

При многократном вызове объектов этого класса создается коллекция объектов, и каждая форма при этом является членом коллекции. Для идентификации конкретного члена используется индекс членов коллекции, при помощи которого можно сослаться на любую форму из коллекции или получить управление конкретной формой. Для форм в Visual Basic 6 существует специальная коллекция Forms, при помощи которой можно адресоваться к конкретной форме. Чтобы изучить данное свойство коллекции форм, усовершенствуйте приложение следующим образом:

1. Добавьте в приложение еще один элемент управления типа commandButton и задайте наименование созданной кнопки Переход к объекту. Имя кнопки можно оставить заданным по умолчанию (рис. 15.6).

Рис. 15.6. Приложение для изучения адресации к объектам класса форм

2. Измените код приложения в соответствии с указанным ниже:

Dim frmCount As Integer

Dim frmCountMax As Integer

Private Sub Commandl_Click()

' Создание объекта

Dim FormNew As New frmFormCIs

FormNew.Show

frmCountMax = frmCountMax + 1

End Sub

Private Sub Command2_Click()

' Переход к объекту

Forms(frmCount).Caption = "Форма-объект " + Str(frmCount)

Forms(frmCount).Show

frmCount = frmCount + 1

If frmCount > frmCountMax Then frmCount = 0

End Sub

Private Sub Form Load()

frmCount = 0

frmCountMax = 0

End Sub

В этом приложении при нажатии кнопки Переход к объекту активизируется соответствующий объект класса frmFormCIs и изменяется одно из его свойств, в данном случае свойство заголовка окна. При этом, конечно, доступны и все другие свойства объекта.

Для изучения возможности обращения к объектам формы экземпляра класса frmFormCis доработайте приложение следующим образом:

1. Добавьте в форму текстовое поле типа TextBox, дважды щелкнув мышью кнопку TextBox на панели элементов управления, и присвойте ей имя txtFormNum. Из свойства Text удалите текст, введенный по умолчанию.

2. Измените текст кода для объекта command2 на следующий:

Private Sub Coiroiand2_Click ()

' Переход к объекту

Forms(frmCount).Caption = "Форма-объект " + Str(frmCount)

Forms(frmCount).Show

' Адресация к объекту формы

Forms(frmCount).txtFormNum.Text = frmCount

frmCount = frmCount + 1

If frmCount > frmCountMax Then frmCount = 0

End Sub

В этом тексте продемонстрировано, как адресоваться к одному и тому же объекту в формах, которые являются экземплярами класса frmFormCis, с помощью установки значения свойства Text этого объекта. Как видите, при помощи такого описания классов форм можно создавать достаточно сложные формы и использовать их в качестве классов в последующих разработках.

Добавление свойств, методов, событий в класс формы

Добавить в форму члены класса можно визуально простым добавлением элемента управления в форму. Действительно, если для проекта classForms открыть браузер объектов и выбрать в нем проект, то кнопки и поля будут включены в него как члены с ключевым словом withEvents. Это означает, что все события этих объектов будут контролироваться и формой.

Добавление членов класса формы, то есть свойств, методов и событий, выполняется обычным способом, как это было сделано для класса подразделения.

Создание классов с помощью VB Class Builder

Для создания сложных классов или доработки уже имеющихся в среде Visual Basic 6 предусмотрено специальное инструментальное средство — построитель классов Class Builder.

Замечание

Построитель классов подключается к среде проектирования с помощью диспетчера надстроек командой Add-In Manager (Диспетчер надстроек) меню Add-Ins (Надстройки). В окне диспетчера Add-In Manager необходимо назначить загрузку построителя классов, установив флажок загрузки для значения VB6 Class Builder Utility.

Построитель классов

После присоединения построителя классов к среде проектирования, команда запуска построителя классов Class Builder (Построитель классов) появляется в меню Add-Ins. При работе над проектом построитель классов можно также вызвать с помощью значка VB Class Builder в диалоговом окне Add Class Module (рис. 15.7), которое открывается командой Add Class Module (Добавить модуль класса) меню Project (Проект).

Рис. 15.7. Диалоговое окно Add Class Module для запуска построителя классов

При запуске построителя классов открывается окно Class Builder (рис. 15.8) для проектирования классов, в котором выполняется вся работа по созданию или дополнению класса. Это окно состоит из четырех вкладок:

  • Properties (Свойства) — вкладка для работы со свойствами;
  • Methods (Методы) — вкладка для работы с методами;
  • Events (События) — вкладка для работы с событиями;
  • All (Все) — вкладка, на которой представлены все члены класса.

Рис. 15.8. Окно построителя классов Class Builder

Построитель классов содержит собственное меню и панель инструментов с кнопками, назначение которых описано в табл. 15.1.

Таблица 15.1. Кнопки окна построителя классов Class Builder
Кнопка | Название | Назначение
 | Add New Class (Добавить новый класс) | Добавляет новый класс. Дублирует команду Class (Класс), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Property to Current Class (Добавить новое свойство в текущий класс) | Добавляет новое свойство в класс. Дублирует команду Property (Свойство), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Method to Current Class (Добавить новый метод в текущий класс) | Добавляет новый метод в класс. Дублирует команду Method (Метод), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Add New Event to Current Class (Добавить новое событие в текущий класс) | Добавляет новое событие в класс. Дублирует команду Event (Событие), появляющуюся при выборе в меню File (Файл) построителя команды New (Новое)
 | Show Properties for the Current Object (Показать свойства текущего объекта) | Показывает свойства текущего члена класса. Соответствует команде Properties (Свойства) меню Edit (Правка)
 | Cut (Вырезать) | Вырезает выделенное в буфер
 | Copy (Копировать) | Копирует выделенное из буфера
 | Paste (Вставить) | Вставляет информацию из буфера

Кроме этих кнопок, дублирующих команды меню, в меню построителя классов Class Builder есть одна важная команда, которая не продублирована кнопкой. Это команда Update Project (Внести изменения в проект). При выполнении данной команды внесенные в классы проекта изменения запоминаются для последующего сохранения в файлах классов.

Добавление нового класса

Рассмотрим, как проектируется класс с помощью построителя классов. Для добавления нового класса нажмите кнопку Add New Class на панели инструментов окна построителя или выберите в меню File (Файл) построителя значение New (Новое), а затем — Class (Класс). Открывается окно Class Module Builder (Построитель модулей классов) для ввода описания атрибутов класса (рис. 15.9). Это окно достаточно простое. В поле Name (Имя) окна необходимо ввести наименование нового класса и указать базовый класс, если новый класс строится на основании существующего. Если это не так, то из списка Based On выбирается значение New Class (Новый класс).

Рис. 15.9. Окно построителя модулей классов Class Module Builder

После того как модуль класса создан, работа над классом продолжается на вкладках построителя. При этом для каждого члена класса вызывается соответствующее окно проектирования.

Добавление свойств класса

При работе со свойствами необходимо перейти на вкладку Properties (Свойства) построителя классов (рис. 15.8). При нажатии на кнопку добавления нового свойства Add New Property to Current Class открывается диалоговое окно Property Builder (Построитель свойств), показанное на рис. 15.10. Для добавления нового свойства необходимо в поле Name (Имя) этого окна ввести наименование свойства, выбрать тип переменной, которой соответствует свойство, назначить объявление свойства с помощью переключателя Declarations (Объявления).

Рис. 15.10. Окно построителя свойств классов Property Builder

Добавление методов класса

Чтобы добавить новый метод в класс, следует перейти на вкладку Methods (Методы) построителя классов (рис. 15.11).

Для проектирования методов необходимо открыть диалоговое окно Method Builder (Построитель методов) (рис. 15.12), предназначенное для работы с методами класса. Чтобы открыть это окно, следует нажать кнопку Add New Method to Current Class (Добавить новый метод в текущий класс) на панели окна или выбрать команду New (Новое) меню File (Файл), а затем значение Method (Метод).

Рис. 15.11. Вкладка Methods построителя классов Class Builder

Рис. 15.12. Окно Method Builder построителя методов

В диалоговом окне Method Builder можно в поле Name (Имя) ввести имя нового метода и добавить, при необходимости, аргументы метода в список Arguments (Аргументы). Для добавления или редактирования аргументов вызывается окно ввода аргументов Add Argument (Добавить аргумент), показанное на рис. 15.13. В этом окне в поле Name (Имя) следует ввести наименование аргумента, указать его тип, выбрав требуемое значение из списка Data Type (Тип данных), назначить ключевые слова ByVal, Array, optional описания метода, установив соответствующие флажки.

Рис. 15.13. Окно добавления аргументов в метод

Слева от списка в диалоговом окне Method Builder (Построитель методов) находятся кнопки управления аргументами. Они выполняют следующие действия:

Кнопка | Назначение
 | Открывает диалоговое окно Add Argument (Добавить аргумент), предназначенное для ввода нового аргумента метода
 | Удаляет аргумент
 | Перемещает аргумент в списке на позицию вверх
 | Перемещает аргумент в списке на позицию вниз

Добавление событий класса

Для работы с событиями класса необходимо перейти на вкладку Events (События) построителя, которая показана на рис. 15.14.

Для работы с событиями в построителе предназначено диалоговое окно Event Builder (Построитель событий) (рис. 15.15), которое открывается при нажатии кнопки Add New Event to Current Class (Добавить новое событие в текущий класс) на панели окна построителя. Для открытия этого окна можно также выбрать команду New (Новое) меню File (Файл), а затем значение Event (Событие).

Диалоговое окно построителя событий похоже на окно построителя методов. При необходимости можно добавить аргументы в событие с помощью окна Add Argument (Добавить аргумент), аналогичного окну добавления аргументов в метод.

Рис. 15.14. Вкладка Events построителя классов Class Builder

Рис. 15.15. Диалоговое окно построителя событий Event Builder

При необходимости можно работать сразу со всеми членами класса с помощью вкладки All (Все) построителя классов (рис. 15.16).

После завершения работы с классом его необходимо сохранить в файле с расширением els.

Полный текст полученного при помощи Class Builder класса приводить нет необходимости, поскольку он достаточно объемный. Следует заметить, что свойства вводятся не как глобальные переменные, а с помощью функций Property Get и Property Let. Для примера можно привести текст свойства AddSalary:

Private mvarAddSalary As Currency 'local copy

Public Property Let AddSalary(ByVal vData As Currency)

'used when assigning a value to the property, on the left side of an assignment.

'Syntax: X.AddSalary = 5

mvarAddSalary = vData

End Property

Public Property Get AddSalary () As Currency

'used when retrieving value of a property, on the right side of an assignment.

'Syntax: Debug.Print X.AddSalary

AddSalary = mvarAddSalary

End Property

Замечание

Необходимо отметить, что спроектированные при помощи построителя классов члены класса после завершения проектирования и сохранения класса уже недоступны в построителе для редактирования или удаления. Неудачно созданные и сохраненные члены класса удаляются непосредственно из кода модуля класса в редакторе кода.

Рис. 15.16. Вкладка АН построителя классов Class Builder

Созданные таким образом классы работают только в проекте, для которого они созданы. Однако подход ООП изобретен в том числе и для многократного использования кода, чем он и замечателен. Такую возможность предоставляет Visual Basic 6.

Класс как способ многократного использования кода

Как и компоненты ActiveX, класс служит для многократного использования кода. Однако в отличие от компонентов ActiveX, которые специально разрабатываются для применения во всех последующих приложениях, класс действует только в рамках данного проекта. Это ограничение можно устранить, подключив проект с интересующим классом к текущему проекту с помощью окна ссылок Reference. После того как проект подключен к разрабатываемому приложению, можно легко сослаться на класс, например, при создании объекта, следующим образом:

Dim NewObj As New MyClass.clsClass

Здесь MyClass — это проект, который содержит интересующий пользователя класс clsClass.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 16. Основы баз данных.

В настоящее время большинство компьютерных приложений работает с информацией, хранящейся в базах данных. Visual Basic также располагает средствами, позволяющими создавать приложения, эффективно работающие с такого рода информацией.

В настоящей главе обсуждаются вопросы проектирования структуры данных создаваемого приложения и эффективного распределения данных между таблицами, применения Visual Data Manager для создания баз данных, а также разработки баз данных в Visual Basic с помощью других средств. В этой главе также рассматривается использование в Visual Basic баз данных, размещенных на сервере.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование базы данных

Для создания эффективного приложения, работающего с информацией, хранящейся в базе данных, основное внимание должно быть уделено проектированию структуры базы данных. Только хорошо организованная структура данных позволит:

  • сделать ввод информации простым и понятным для пользователя приложения;
  • быстро находить в базе данных требуемую информацию;
  • хранить данные в виде, который не приведет к чрезмерному разрастанию базы данных;
  • упростить разработку и сопровождение программного обеспечения.

Теория реляционной базы данных разработана в начале 70-х годов Коддом на основе математической теории отношений. В реляционной базе данных все данные хранятся в виде таблиц, при этом все операции сводятся к манипуляциям с таблицами. Основными понятиями в этой теории являются таблица, отношение, строка, столбец, ключи.

Основой любой базы данных являются таблицы. Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. База данных содержит множество таблиц, связь между которыми устанавливается с помощью совпадающих полей. В каждой из таблиц содержится информация о каких-либо объектах одного типа (группы).

Между таблицами в базе данных устанавливаются отношения. Имеются четыре типа отношений между таблицами: один-к-одному, один-ко-многим, много-к-одному, много-ко-многим.

Прежде чем перейти к вопросам проектирования реляционных баз данных, остановимся подробнее на каждом из возможных типов отношений.

Отношение один-к-одному означает, что каждая запись одной таблицы соответствует только одной записи в другой таблице. Например, если рассматривать таблицы, одна из которых содержит данные о сотрудниках предприятия, а вторая — профессиональные сведения, то можно сказать, что между этими таблицами существует отношение один-к-одному, поскольку для одного человека, информация о котором содержится в первой таблице, может существовать только одна запись, содержащая профессиональные сведения, во второй таблице.

Наиболее часто встречающимся типом отношений в базе данных является отношение один-ко-многим. В качестве иллюстрации данного типа отношения можно обратиться к таблицам, содержащим информацию о клиентах предприятия и сделанных ими заказах. В качестве других примеров могут быть рассмотрены отношения между предприятием и работающими на нем сотрудниками. Аналогичный тип отношения существует между компьютером и входящими в него компонентами и т. д.

Отношение много-к-одному аналогично рассмотренному ранее типу один-ко-многим. Тип отношения между объектами зависит от вашей точки зрения. Например, если вы будете рассматривать отношение между сделанными заказами и клиентами, то получите отношение много-к-одному.

Отношение много-ко-многим возникает между двумя таблицами в тех случаях, когда:

  • одна запись из первой таблицы может быть связана более чем с одной записью из второй таблицы;
  • одна запись из второй таблицы может быть связана более чем с одной записью из первой таблицы.

Для примера обратимся к магазину оптовой торговли. Рассмотрим две группы объектов: список товаров, производимых предприятиями-поставщиками, и список товаров, заказанных потребителями. Между таблицами, содержащими данные сведения, существует отношение много-ко-многим, так как на каждый поставляемый товар может быть более одного заказа. Аналогично, каждый заказанный товар может производиться более чем одним предприятием.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Нормализация данных

При проектировании базы данных вам необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются:

  • обеспечить быстрый доступ к данным в таблицах;
  • исключить ненужное повторение данных, которое может являться причиной ошибок при вводе и нерационального использования дискового пространства вашего компьютера;
  • обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходило соответствующее изменение связанных с ними объектов.

Процесс уменьшения избыточности информации в базе данных называется нормализацией. В теории нормализации баз данных разработаны достаточно формализованные подходы по разбиению данных, обладающих сложной структурой, на несколько таблиц. Эти вопросы детально освещаются в специальной литературе. Мы остановимся на некоторых практических аспектах нормализации таблиц, не вдаваясь в их теоретическое обоснование.

Теория нормализации оперирует с пятью нормальными формами таблиц (от первой до пятой включительно). Эти формы предназначены для уменьшения избыточной информации от первой до пятой нормальной формы. Поэтому каждая последующая нормальная форма должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям.

Воспользуемся результатами теории при проектировании многотабличной базы данных с эффективной структурой. В качестве примера рассмотрим таблицу, которая содержит следующую информацию о покупателе и сделанных им заказах:

  • сведения о покупателях;
  • дату заказа и количество заказанного товара;
  • дату выполнения заказа и количество проданного товара;
  • характеристику проданного товара (наименование, стоимость).

Эту таблицу можно рассматривать как однотабличную базу данных. Основная проблема заключается в том, что в ней содержится значительное количество повторяющейся информации. Например, сведения о каждом покупателе повторяются для каждого сделанного им заказа. Такая структура данных является причиной следующих проблем, возникающих при работе с базой данных.

Вам придется тратить значительное время на ввод повторяющихся данных. Например, для всех заказов, сделанных одним из покупателей, вам придется каждый раз вводить одни и те же данные о покупателе.

  • При изменении адреса или телефона покупателя необходимо корректировать все записи, содержащие сведения о заказах этого покупателя.
  • Наличие повторяющейся информации приведет к неоправданному увеличению размера базы данных. В результате снизится скорость выполнения запросов. Кроме того, повторяющиеся данные нерационально используют дисковое пространство вашего компьютера.
  • Любые внештатные ситуации потребуют от вас значительного времени для получения требуемой информации. Например, при многократном вводе повторяющихся данных возрастает вероятность ошибки. При больших размерах таблиц поиск ошибок будет занимать значительное время.

Воспользуемся практическими рекомендациями теории нормализации для разработки на основании таблицы о сделанных заказах многотабличной базы данных с эффективной структурой.

Таблица, содержащая сведения о сделанных заказах, является ненормализованной. Таблица базы данных в первой нормальной форме должна, например, удовлетворять следующим требованиям:

  • таблица не должна иметь повторяющихся записей;
  • в таблице должны отсутствовать повторяющиеся группы полей;
  • строки должны быть не упорядочены;
  • столбцы должны быть не упорядочены.

Для выполнения первого условия каждая таблицы должна иметь уникальный индекс. С этой целью в таблицу следует добавить поле, которое будет содержать уникальные значения. Например, в таблицу, содержащую информацию о покупателях, необходимо добавить поле с кодом клиента.

Второе требование постулирует устранение повторяющихся групп. Поскольку каждый покупатель может иметь несколько телефонов и сделать несколько заказов, в каждом из которых в свою очередь может заказать несколько товаров, нам необходимы четыре таблицы. Каждая запись этих таблиц будет содержать следующие данные:

Таблица | Данные
Первая | Сведения о покупателях
Вторая | Список телефонов покупателя
Третья | Номер и дата заказа покупателя, данные о менеджере
Четвертая | Код, наименование, количество заказанного и проданного товара

Отметим, что отношение между связываемыми таблицами один-ко-многим. Теперь первая и вторая таблица нормализованы. В третьей таблице находится повторяющаяся информация о менеджере, оформлявшем заказ. Следовательно, эту таблицу можно разделить на две. В одну из них вынесем информацию о менеджерах фирмы, а во вторую — номер и дату заказа покупателя, а также код менеджера, оформлявшего заказ.

Рассмотрим четвертую таблицу, содержащую код, наименование, количество заказанного и проданного товара. Она также содержит повторяющуюся информацию о проданном товаре. Эту информацию базы данных можно разместить в отдельной таблице списка товаров, продаваемых фирмой.

В результате проведенной нормализации вместо одной исходной таблицы мы получили шесть простых таблиц, содержащих неповторяющуюся информацию.

После определения структуры таблиц, отношений между ними и совпадающих полей, которые будут использованы для связывания отдельных таблиц, вы готовы к созданию многотабличной базы данных в Visual Basic.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Индексы

Информация в таблицы базы данных вводится в произвольном порядке и в этом же порядке сохраняется на диске. Поиск нужной информации в такой таблице затруднен, особенно если она имеет большое количество записей. Например, рассмотрим таблицу, содержащую список клиентов фирмы. Чтобы облегчить поиск информации о нужном клиенте в этой таблице, данные необходимо упорядочить в алфавитном порядке по фамилиям. Если фамилии клиента вы не знаете, а проводите поиск по району, в котором он проживает, в этом случае данные можно упорядочить по районам.

Одним из основных требований, предъявляемых к базам, является возможность быстрого поиска требуемых записей среди большого объема информации. Индексы представляют собой наиболее эффективное средство, которое позволяет значительно ускорить поиск данных в таблицах по сравнению с таблицами, не содержащими индексов. Таблица может иметь несколько индексов. В зависимости от количества полей, используемых в индексе, различают простые (по одному ключу) и составные индексы (по нескольким полям).

Для каждого значения индекса в индексном файле содержится уникальная ссылка, указывающая на местонахождение в таблице записи, соответствующей индексу. Поэтому при поиске записи осуществляется не последовательный просмотр всей таблицы, а прямой доступ к записи на основании упорядоченных значений индекса.

Важной особенностью индексов является то, что вы можете использовать их для создания первичных ключей. В этом случае индексы должны быть уникальными. Это означает, что для таблицы, содержащей только одно индексное поле, уникальным должно быть значение этого поля. Для составных индексов величины в каждом из индексных полей могут иметь повторяющиеся значения. Однако индексное выражение должно быть уникальным.

Замечание

Требование уникальности индекса не является обязательным. Для ускорения поиска требуемой информации могут быть использованы индексы, не являющиеся уникальными.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование Visual Data Manager для создания базы данных

В Visual Basic с помощью надстройки Visual Data Manager можно создавать базы данных, создавать и модифицировать таблицы, индексы.

Для запуска Visual Data Manager используется команда Visual Data Manager меню Add-Ins (Надстройки). При ее выполнении открывается окно VisData, содержащее меню и панель инструментов.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание базы данных

Создание базы данных рассмотрим на примере базы данных Microsoft Access, так как это наиболее часто используемое в Visual Basic средство. Для создания базы данных в Visual Data Manager выполните следующие действия:

1. В меню File (Файл) окна VisData выберите команду New (Новый). Открывается меню, содержащее список создаваемых файлов. Выберите из него тип создаваемого файла Microsoft Access. При выборе значения Microsoft Access появляется еще одно меню следующего уровня, позволяющее выбрать версию Access. Выберите нужное значение. Открывается диалоговое окно Select Microsoft Access Database to Create (рис. 16.1).

Рис. 16.1. Диалоговое окно Select Microsoft Access Database to Create

Замечание

Visual Data Manager позволяет работать с базами данных Access, dBase, FoxPro, Paradox, с текстовыми файлами, поддерживает ODBC.

2. Используя раскрывающийся список Папка, укажите папку, в которой хотите сохранить создаваемую базу данных. В поле Имя файла введите имя базы данных и нажмите кнопку Сохранить. Открывается окно проектирования базы данных (рис. 16.2), в котором вы можете создавать новые таблицы, входящие в базу данных, а также изменять структуру и индексы существующих таблиц.

Рис. 16.2. Окно проектирования базы данных


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание таблицы

После того как база данных создана, можно приступать к созданию таблиц, входящих в ее состав. Для создания таблицы выполните следующие действия:

1. В окне Database Window созданной базы данных щелкните правой кнопкой мыши и выберите в контекстном меню команду New Table (Новая таблица). Открывается диалоговое окно Table Structure (Структура таблицы), предназначенное для создания таблицы (рис. 16.3).

2. В поле Table Name (Имя таблицы) введите наименование создаваемой таблицы.

Рис. 16.3. Диалоговое окно Table Structure, предназначенное для создания таблицы

3. Для создания первого поля таблицы нажмите кнопку Add Field (Добавить поле). Открывается диалоговое окно Add Field, предназначенное для ввода информации, определяющей текущее поле (рис. 16.4).

Каждое поле таблицы характеризуется наименованием, типом и шириной поля. Кроме этих основных параметров каждое поле обладает дополнительными свойствами, назначающими условия ввода данных. Все эти параметры можно задать в данном диалоговом окне.

Рис. 16.4. Диалоговое окно Add Field, предназначенное для создания полей

4. В поле Name (Имя) введите наименование поля. Наименование каждого из полей таблицы, как правило, выбирается произвольно, но таким образом, чтобы отразить характер информации, которая будет храниться в данном поле.

5. Тип поля определяется типом данных, хранящихся в этом поле. Используя раскрывающийся список Type (Тип) диалогового окна Add Field, укажите тип поля.

6. С помощью полей ValidationText и ValidationRule можно задать текст сообщения, выводимого при неправильном вводе данных в это поле, и условие правильности ввода данных.

7. Используя поле DefaultValue (Значение по умолчанию), можно задать значение, вводимое в поле по умолчанию при добавлении в таблицу новой записи.

8. Завершив ввод информации, касающейся текущего поля, нажмите кнопку ОК. Созданное поле будет добавлено в таблицу, а поля диалогового окна Add Field будут подготовлены для ввода следующего поля.

9. Повторяя пункты с 4 по 8, введите все поля таблицы.

10. Завершив ввод всех полей таблицы, нажмите кнопку Close для закрытия диалогового окна Add Field.

Вы возвращаетесь в диалоговое окно Table Structure. Список Field List (Список полей) содержит поля таблицы. При выборе из этого списка наименования поля, в полях, расположенных справа от списка, отображаются параметры текущего поля, введенные в диалоговом окне Add Field.

11. Для создания индекса таблицы нажмите кнопку Add Index (Добавить индекс). Открывается диалоговое окно Add Index (рис. 16.5), содержащее в названии наименование таблицы, для которой создается индекс.

Рис. 16.5. Диалоговое окно, предназначенное для создания индекса таблицы

12. В поле Name диалогового окна введите наименование индекса.

13. Для указания полей, входящих в индекс, используется список Available Fields (Доступные поля). Дважды щелкая мышью на наименовании поля в этом списке, перенесите в поле Indexed Fields (Поля индекса) поля, образующие индекс.

Замечание

При создании индекса переносите поля в Indexed Fields в том порядке, в каком они должны входить в индекс, иначе упорядочение данных будет осуществляться иначе, чем вам бы хотелось.

14. По умолчанию поля таблицы индексируются по возрастанию значения поля, входящего в индекс. Для изменения порядка упорядочения в списке Indexed Fields поставьте знак минус (-) перед полем, для которого хотите изменить установленный по умолчанию порядок.

15. Используя флажки Primary (Первичный) и Unique (Уникальный), укажите тип создаваемого индекса.

Замечание

При установке флажка Primary создается первичный ключ, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввод пустых значений.

16. Завершив ввод индекса, нажмите кнопку ОК. Созданный индекс добавится в таблицу, а поля диалогового окна Add Index будут подготовлены для ввода следующего индекса.

17. Повторяя пункты с 12 по 16, введите все индексы таблицы.

18. Завершив формирование всех индексов таблицы, нажмите кнопку Close для закрытия диалогового окна Add Index.

Вы возвращаетесь в диалоговое окно Table Structure. Список Index List (Список индексов) содержит список созданных для таблицы индексов.

19. Таблица создана. Нажмите кнопку Build the Table (Построить таблицу).

После создания таблицы вы возвращаетесь в Visual Data Manager. В окне Database Window появляется наименование созданной таблицы (рис. 16.6).


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с таблицей в базе данных

После создания в базе данных таблицы ее наименование появляется в окне Database Window. При установке курсора на наименование и нажатии правой кнопки мыши появляется контекстное меню (рис. 16.6), содержащее команды, предназначенные для работы с данной таблицей.

Назначение команд для работы с таблицей описано в табл. 16.1.

Рис. 16.6. Контекстное меню таблицы

Таблица 16.1. Команды, предназначенные для работы с таблицей
Команда | Назначение
Open (Открыть) | Открывает таблицу для просмотра, редактирования и ввода новых записей
Design (Конструировать) | Открывает диалоговое окно Table Structure (Структура таблицы) для просмотра и редактирования структуры таблицы
Rename (Переименовать) | Переименовывает таблицу
Delete (Удалить) | Удаляет таблицу из базы данных
Copy Structure (Копировать структуру) | Копирует структуру таблицы

Рассмотрим перечисленные в табл. 16.1 команды более подробно.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Просмотр содержимого таблицы

Первой в контекстном меню таблицы расположена команда Open (Открыть), открывающая таблицу для просмотра, редактирования и ввода данных. При выборе этой команды открывается диалоговое окно Table, содержащее поля таблицы и кнопки (рис. 16.7). В нижней части диалогового окна расположена панель инструментов, предназначенная для перемещения по записям таблицы, а в верхней — кнопки, позволяющие добавлять в таблицу новые записи, редактировать или удалять текущую запись, осуществлять поиск в таблице нужных данных. Назначение этих кнопок описано в табл. 16.2.

Таблица 16.2. Кнопки диалогового окна Table
Кнопка | Назначение
Add (Добавить) | Добавляет в таблицу новую запись и позволяет ввести в нее данные
Edit (Редактировать) | Позволяет отредактировать текущую запись таблицы, выбранную с помощью кнопок перемещения по записям
Delete (Удалить) | Удаляет из таблицы текущую запись
Seek (Искать) | Открывает диалоговое окно Seek Parameters (Искать параметры), позволяющее задать параметры для поиска информации в таблице. Прежде чем осуществлять поиск, необходимо, используя раскрывающийся список Index, проиндек-сировать таблицу по полю, значение которого хотите найти
Filter (Фильтр) | Открывает диалоговое окно, позволяющее задать выражение для фильтра, накладываемого на таблицу
Close (Закрыть) | Закрывает диалоговое окно Table

Рис. 16.7. Просмотр содержимого таблицы


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Модификация структуры таблицы

Для просмотра и модификации структуры таблицы базы данных используется команда Design (Конструировать) контекстного меню. При выборе этой команды открывается диалоговое окно Table Structure (Структура таблицы) (рис. 16.3), использовавшееся при создании таблицы.

С помощью Visual Data Manager нельзя изменять тип и размер созданных ранее полей таблицы. Вы можете их только переименовать и изменить параметры проверки достоверности вводимых данных. Помимо этого, вы можете добавить в таблицу новые поля, удалить ненужные, добавить, переименовать или удалить индексы.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переименование таблицы

Visual Data Manager позволяет переименовать таблицу в базе данных. Для этого необходимо в окне Database Window установить курсор на наименование переименовываемой таблицы и выбрать в контекстном меню команду Rename (Переименовать). Имя таблицы помещается в редактируемое поле, в которое можно ввести новое поле или отредактировать имеющееся. После ввода нового имени нажмите клавишу <Enter>. Для отказа от переименования нажмите клавишу <Esc>.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление таблицы

Для удаления таблицы из базы данных в Visual Data Manager в окне Database Window установите курсор на наименование таблицы и выберите из появившегося контекстного меню команду Delete (Удалить). Появляется запрос на подтверждение удаления таблицы. Для удаления таблицы нажмите кнопку Да, для отказа от удаления — Нет.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Копирование структуры таблицы

Visual Data Manager позволяет скопировать структуру таблицы в базе данных. Для этого необходимо в окне Database Window установить курсор на наименование таблицы и выбрать в контекстном меню команду Copy Structure (Копировать структуру). Открывается диалоговое окно Copy Structure, показанное на рис. 16.8.

Рис. 16.8. Диалоговое окно Copy Structure

Поле Tables содержит список таблиц базы данных. Выберите из этого списка наименование копируемой таблицы. В поле Target Database необходимо указать название базы данных, в которую копируется таблица. По умолчанию это поле содержит наименование текущей базы данных. Используя флажки Copy Indexes и Copy Data, можно указать, копировать ли со структурой индексы таблицы и данные, размещенные в ней. Завершив установку параметров, нажмите кнопку ОК для осуществления копирования.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание соединений с серверами баз данных

В Visual Basic для работы можно использовать базы данных, размещенные на сервере. Прежде чем работать с такой базой данных, необходимо создать соединение с ней. Для создания соединения выполните следующие действия:

1. Откройте окно DataEnvironment (рис. 16.9). Для этого в меню Project (Проект) выберите команду Add Data Environment (Среда окружения).

Рис. 16.9. Окно DataEnvironment

2. Для добавления нового соединения нажмите кнопку Add Connection (Добавить соединение) на панели инструментов окна DataEnvironment. В окне появится новый элемент, который по умолчанию имеет наименование Connection 1.

3. Выберите для данного элемента команду контекстного меню Properties (Свойства). Открывается диалоговое окно Свойства связи с данными, предназначенное для ввода параметров соединения с сервером.

4. На вкладке Поставщик услуг диалогового окна Свойства связи с данными (рис. 16.10) выберите из предложенного списка тип подключаемых данных.

5. Перейдите на вкладку Подключение и введите имя сервера, имя и пароль пользователя (если в этом есть необходимость), выберите из раскрывающегося списка базу данных на сервере.

6. Чтобы убедиться в правильности задания параметров соединения, нажмите кнопку Проверить подключение. Если подключение выполнено успешно, появится сообщение, что проверка подключения выполнена.

7. Завершив установку параметров, нажмите кнопку ОК для закрытия диалогового окна.

Для просмотра входящих в соединение объектов откройте окно Data View. Для этого в меню View (Вид) выберите команду Data View Window (Окно просмотра данных) или нажмите одноименную кнопку на стандартной панели инструментов Visual Basic.

Рис. 16.10. Диалоговое окно установления соединения с базой данных на сервере.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Таблицы

Вы можете открыть для просмотра любую из таблиц, находящихся в окне Data View. Для этого установите курсор на наименование просматриваемой таблицы, нажмите правую кнопку мыши и выберите из контекстного меню команду Open (Открыть). Для открытия таблицы можно также дважды щелкнуть мышью на ее наименовании.

При открытии таблицы, находящейся на SQL Server, в режиме конструктора появляется структура таблицы. Столбцы этой таблицы отображают свойства полей открытой в конструкторе таблицы. Их назначение описано в табл. 16.3. Для открытия таблицы в конструкторе установите курсор на наименование просматриваемой таблицы, нажмите правую кнопку мыши и выберите из контекстного меню команду Design (Конструктор).

Таблица 16.3. Свойства полей таблицы, находящейся в базе данных СУБД SQL Server
Свойство | Описание
Column Name | Имя поля таблицы
Datatype | Тип данных поля таблицы
Length | Максимальный размер поля
Precision | Максимальное число десятичных знаков в числовом поле
Scale | Максимальное количество десятичных знаков после разделителя
Allow Nulls | Указывает, допустимо ли для данного поля значение NULL
Default Value | Значение, вводимое в поле по умолчанию
Identity | Если в данном поле установлен флажок, то при добавлении в таблицу нового значения в поле автоматически добавляется уникальное значение
Identity Seed | Значение, присваиваемое первой записи таблицы. Если свойство не содержит никаких значений, то по умолчанию присваивается 1
Identity Increment | Шаг, с которым изменяется значение в данном поле


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Схема базы данных

Visual Basic позволяет в окне Data View просматривать и модифицировать схему базы данных, размещенной на сервере.

Чтобы открыть схему базы данных, необходимо установить курсор на наименование схемы в папке Database Diagrams, нажать правую кнопку мыши и выбрать в контекстном меню команду Open (Открыть). Можно также дважды щелкнуть мышью на наименовании схемы. Открывается окно Database Diagram (Схема базы данных), содержащее таблицы, входящие в схему, и установленные между ними связи.

Замечание

Схем базы данных в окне Data View для данного соединения может быть несколько. В схеме данных таблицы объединяются в логические группы. В этом случае легче ориентироваться в структуре, чем при просмотре одной схемы данных, содержащей огромное количество таблиц.

Используя схему базы данных, можно создавать новые таблицы, изменять структуру и свойства существующих таблиц, устанавливать между таблицами связи.

Удобство работы со схемой базы данных заключается еще и в том, что осуществленные в ее структуре изменения сохраняются лишь при сохранении схемы, то есть, когда вы уверены, что все изменения выполнены верно.

Для создания новой схемы базы данных из окна Data View установите курсор на папку Database Diagrams, нажмите правую кнопку мыши и выберите из контекстного меню команду New Diagram (Новая схема). Откроется пустое окно схемы базы данных. Используя механизм перенести-и-оставить, перенесите в окно New Database Diagram (Новая схема базы данных) из окна Data View необходимые таблицы из базы данных, размещенной на сервере.

Для удобства работы вы можете перемещать таблицы на схеме, изменять масштаб отображения схемы, используя для этого команды контекстного меню.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание новой таблицы

Для создания новой таблицы в окне схемы базы данных выполните следующие действия:

1. Установите курсор в окно схемы данных, нажмите правую кнопку мыши и выберите в контекстном меню команду New Table (Новая таблица).

2. В открывшемся диалоговом окне Choose Name введите имя таблицы и нажмите кнопку ОК. Появляется пустая таблица со свойствами полей таблицы.

3. Введите поля таблицы и определите их свойства.

4. Определите первичный ключ таблицы. Для этого выделите поле, которое вы хотите использовать в качестве первичного ключа, и выберите в контекстном меню команду Set Primary Key.

5. После того как все поля и первичный ключ таблицы определены, выберите команду контекстного меню Column Names (Имена столбцов). Таблица примет вид, отображающий только наименования полей.

Замечание

Новые и измененные таблицы схемы базы данных помечаются звездочкой, помещаемой в заголовок таблицы.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление таблицы в схему

Для добавления таблицы в схему базы данных служит диалоговое окно Data View.

Чтобы перенести таблицы в схему базы данных, в диалоговом окне Data View откройте папку Tables (Таблицы) и, используя механизм перенести-и-оставить, переместите поочередно в окно схемы требуемые таблицы. При этом сразу отображаются связи, установленные между таблицами.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Установление связей между таблицами

Для установления связей между таблицами в схеме базы данных используется механизм перенести-и-оставить:

1. Расположите связываемые таблицы в окне схемы так, чтобы они обе были видны, и вам было удобно с ними работать.

2. Установите курсор на область выделения слева от наименования поля, по которому будет осуществляться связь.

3. Нажмите и, удерживая в нажатом состоянии левую кнопку мыши, переместите появившийся под курсором значок на связываемое поле второй таблицы.

4. Открывается диалоговое окно Create Relationship, указывающее, с использованием каких полей осуществлено связывание таблиц. Если связь установлена верно, нажмите кнопку ОК.

Между связанными таблицами в схеме базы данных появляется линия. На одном ее конце изображен ключ. Это говорит о том, что данная таблица связывалась по первичному ключу. На втором конце линии также может находиться ключ, если связанные таблицы имеют отношение один-к-одному, или знак бесконечности, если таблицы имеют отношение один-ко-многим.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление таблиц

Для удаления таблицы из схемы базы данных необходимо ее выделить и выбрать из контекстного меню команду Remove Table from Diagram (Удалить таблицу из схемы). При этом таблица удаляется из схемы, но не удаляется из базы данных. Если вы хотите удалить таблицу и из базы данных, то в этом случае вам необходимо воспользоваться командой Delete Table from Database (Удалить таблицу из базы данных).


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Представление данных

В базах данных широко используются представления данных. Они создаются аналогично запросу и содержат выборку данных из таблиц базы данных. После создания представления данных вы можете открывать и просматривать данные из него как из обычной таблицы, использовать в формах и отчетах. Вы можете даже создавать вложенные представления данных, используя при создании нового представления созданные ранее.

Представления являются чрезвычайно удобным и полезным средством доступа к базе данных. При создании базовых таблиц главное внимание необходимо уделять нормализации данных. Поэтому просмотр и редактирование базовых таблиц может вызывать определенные трудности. Представления позволяют вам объединять данные таблиц и отображать их в более удобном виде. Вы можете выбрать только интересующие вас поля таблиц, объединить несколько полей в одно поле, вычислить итоговые значения, задать новые имена полей таблицы.

Для базы данных, размещенной на сервере, с которой установлено соединение, из программы Visual Basic можно создавать представления данных с помощью конструктора представлений. Для создания нового представления в окне Data View (Просмотр данных) установите курсор на папку Views (Представления), нажмите правую кнопку мыши и выберите из контекстного меню команду New View (Новое представление).

Открывается пустое окно конструктора представлений. Оно содержит четыре панели. На верхней панели окна размещаются таблицы или представления, являющиеся источником данных для создаваемого представления. Ниже панели таблиц располагается бланк, используемый для формирования запроса. Под бланком запроса в окне представления находится область, отображающая текст инструкции SQL. Затем располагается панель, отображающая результаты запроса.

Замечание

Отображением панелей в окне представления управляет команда Show Panes (Отображать панели) меню View (Вид), содержащая в свою очередь меню с наименованием панелей. Если панель отображается в конструкторе, то в меню рядом с ее названием стоит галочка. Чтобы удалить панель из конструктора представлений, необходимо выбрать команду с ее названием. Помимо этого, для удаления панели можно установить на нее курсор, нажать правую кнопку мыши и выбрать в контекстном меню команду Hide Pane (Скрыть панель).

Для добавления в окно конструктора таблиц или представлений, используемых при создании нового представления, необходимо в окне Data View открыть папку Tables (Таблицы) или Views (Представления), а затем, используя механизм перенести-и-оставить, переместить поочередно в конструктор требуемые таблицы. При переносе в окно конструктора таблиц сразу отображаются связи, установленные между ними.

Для выбора полей, отображаемых в представлении, необходимо установить флажки с левой стороны полей исходных таблиц. При этом выбранные поля появляются в бланке, и одновременно формируется инструкция SQL на одноименной панели.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Типы объединения таблиц в представлении

По умолчанию в окне конструктора представлений используется внутреннее объединение таблиц, при котором из обеих таблиц выбираются только те записи, у которых совпадают значения связанных полей. Можно также создавать внешние объединения, тогда из одной таблицы выбираются все записи, а из другой — только связанные.

Для выбора типа объединения таблиц необходимо установить курсор на ромб, находящийся в центре линии, обозначающей связь, нажать правую кнопку мыши и выбрать в контекстном меню одну из команд, обозначающую тип связи: Select All Rows from <имя таблицы 1> или Select All Rows from <имя таблицы 2>. Помимо этого, для установления типа связи можно воспользоваться диалоговым окном Properties, которое открывается при выборе команды Свойства контекстного меню.

В центре диалогового окна расположен раскрывающийся список, содержащий операторы сравнения, позволяющие связывать записи в таблицах. Флажки области Include rows позволяют задать тип внешнего соединения:

  • полное внешнее объединение, при котором выбираются строки из обеих таблиц;
  • левое внешнее объединение, при котором выбираются все строки из левой таблицы;
  • правое внешнее объединение, при котором выбираются все строки из правой таблицы.


Ch 16.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 16. Основы баз данных.

В настоящее время большинство компьютерных приложений работает с информацией, хранящейся в базах данных. Visual Basic также располагает средствами, позволяющими создавать приложения, эффективно работающие с такого рода информацией.

В настоящей главе обсуждаются вопросы проектирования структуры данных создаваемого приложения и эффективного распределения данных между таблицами, применения Visual Data Manager для создания баз данных, а также разработки баз данных в Visual Basic с помощью других средств. В этой главе также рассматривается использование в Visual Basic баз данных, размещенных на сервере.

Проектирование базы данных

Для создания эффективного приложения, работающего с информацией, хранящейся в базе данных, основное внимание должно быть уделено проектированию структуры базы данных. Только хорошо организованная структура данных позволит:

  • сделать ввод информации простым и понятным для пользователя приложения;
  • быстро находить в базе данных требуемую информацию;
  • хранить данные в виде, который не приведет к чрезмерному разрастанию базы данных;
  • упростить разработку и сопровождение программного обеспечения.

Теория реляционной базы данных разработана в начале 70-х годов Коддом на основе математической теории отношений. В реляционной базе данных все данные хранятся в виде таблиц, при этом все операции сводятся к манипуляциям с таблицами. Основными понятиями в этой теории являются таблица, отношение, строка, столбец, ключи.

Основой любой базы данных являются таблицы. Таблица состоит из строк и столбцов и имеет уникальное имя в базе данных. База данных содержит множество таблиц, связь между которыми устанавливается с помощью совпадающих полей. В каждой из таблиц содержится информация о каких-либо объектах одного типа (группы).

Между таблицами в базе данных устанавливаются отношения. Имеются четыре типа отношений между таблицами: один-к-одному, один-ко-многим, много-к-одному, много-ко-многим.

Прежде чем перейти к вопросам проектирования реляционных баз данных, остановимся подробнее на каждом из возможных типов отношений.

Отношение один-к-одному означает, что каждая запись одной таблицы соответствует только одной записи в другой таблице. Например, если рассматривать таблицы, одна из которых содержит данные о сотрудниках предприятия, а вторая — профессиональные сведения, то можно сказать, что между этими таблицами существует отношение один-к-одному, поскольку для одного человека, информация о котором содержится в первой таблице, может существовать только одна запись, содержащая профессиональные сведения, во второй таблице.

Наиболее часто встречающимся типом отношений в базе данных является отношение один-ко-многим. В качестве иллюстрации данного типа отношения можно обратиться к таблицам, содержащим информацию о клиентах предприятия и сделанных ими заказах. В качестве других примеров могут быть рассмотрены отношения между предприятием и работающими на нем сотрудниками. Аналогичный тип отношения существует между компьютером и входящими в него компонентами и т. д.

Отношение много-к-одному аналогично рассмотренному ранее типу один-ко-многим. Тип отношения между объектами зависит от вашей точки зрения. Например, если вы будете рассматривать отношение между сделанными заказами и клиентами, то получите отношение много-к-одному.

Отношение много-ко-многим возникает между двумя таблицами в тех случаях, когда:

  • одна запись из первой таблицы может быть связана более чем с одной записью из второй таблицы;
  • одна запись из второй таблицы может быть связана более чем с одной записью из первой таблицы.

Для примера обратимся к магазину оптовой торговли. Рассмотрим две группы объектов: список товаров, производимых предприятиями-поставщиками, и список товаров, заказанных потребителями. Между таблицами, содержащими данные сведения, существует отношение много-ко-многим, так как на каждый поставляемый товар может быть более одного заказа. Аналогично, каждый заказанный товар может производиться более чем одним предприятием.

Нормализация данных

При проектировании базы данных вам необходимо решить вопрос о наиболее эффективной структуре данных. Основные цели, которые при этом преследуются:

  • обеспечить быстрый доступ к данным в таблицах;
  • исключить ненужное повторение данных, которое может являться причиной ошибок при вводе и нерационального использования дискового пространства вашего компьютера;
  • обеспечить целостность данных таким образом, чтобы при изменении одних объектов автоматически происходило соответствующее изменение связанных с ними объектов.

Процесс уменьшения избыточности информации в базе данных называется нормализацией. В теории нормализации баз данных разработаны достаточно формализованные подходы по разбиению данных, обладающих сложной структурой, на несколько таблиц. Эти вопросы детально освещаются в специальной литературе. Мы остановимся на некоторых практических аспектах нормализации таблиц, не вдаваясь в их теоретическое обоснование.

Теория нормализации оперирует с пятью нормальными формами таблиц (от первой до пятой включительно). Эти формы предназначены для уменьшения избыточной информации от первой до пятой нормальной формы. Поэтому каждая последующая нормальная форма должна удовлетворять требованиям предыдущей формы и некоторым дополнительным условиям.

Воспользуемся результатами теории при проектировании многотабличной базы данных с эффективной структурой. В качестве примера рассмотрим таблицу, которая содержит следующую информацию о покупателе и сделанных им заказах:

  • сведения о покупателях;
  • дату заказа и количество заказанного товара;
  • дату выполнения заказа и количество проданного товара;
  • характеристику проданного товара (наименование, стоимость).

Эту таблицу можно рассматривать как однотабличную базу данных. Основная проблема заключается в том, что в ней содержится значительное количество повторяющейся информации. Например, сведения о каждом покупателе повторяются для каждого сделанного им заказа. Такая структура данных является причиной следующих проблем, возникающих при работе с базой данных.

Вам придется тратить значительное время на ввод повторяющихся данных. Например, для всех заказов, сделанных одним из покупателей, вам придется каждый раз вводить одни и те же данные о покупателе.

  • При изменении адреса или телефона покупателя необходимо корректировать все записи, содержащие сведения о заказах этого покупателя.
  • Наличие повторяющейся информации приведет к неоправданному увеличению размера базы данных. В результате снизится скорость выполнения запросов. Кроме того, повторяющиеся данные нерационально используют дисковое пространство вашего компьютера.
  • Любые внештатные ситуации потребуют от вас значительного времени для получения требуемой информации. Например, при многократном вводе повторяющихся данных возрастает вероятность ошибки. При больших размерах таблиц поиск ошибок будет занимать значительное время.

Воспользуемся практическими рекомендациями теории нормализации для разработки на основании таблицы о сделанных заказах многотабличной базы данных с эффективной структурой.

Таблица, содержащая сведения о сделанных заказах, является ненормализованной. Таблица базы данных в первой нормальной форме должна, например, удовлетворять следующим требованиям:

  • таблица не должна иметь повторяющихся записей;
  • в таблице должны отсутствовать повторяющиеся группы полей;
  • строки должны быть не упорядочены;
  • столбцы должны быть не упорядочены.

Для выполнения первого условия каждая таблицы должна иметь уникальный индекс. С этой целью в таблицу следует добавить поле, которое будет содержать уникальные значения. Например, в таблицу, содержащую информацию о покупателях, необходимо добавить поле с кодом клиента.

Второе требование постулирует устранение повторяющихся групп. Поскольку каждый покупатель может иметь несколько телефонов и сделать несколько заказов, в каждом из которых в свою очередь может заказать несколько товаров, нам необходимы четыре таблицы. Каждая запись этих таблиц будет содержать следующие данные:

Таблица | Данные
Первая | Сведения о покупателях
Вторая | Список телефонов покупателя
Третья | Номер и дата заказа покупателя, данные о менеджере
Четвертая | Код, наименование, количество заказанного и проданного товара

Отметим, что отношение между связываемыми таблицами один-ко-многим. Теперь первая и вторая таблица нормализованы. В третьей таблице находится повторяющаяся информация о менеджере, оформлявшем заказ. Следовательно, эту таблицу можно разделить на две. В одну из них вынесем информацию о менеджерах фирмы, а во вторую — номер и дату заказа покупателя, а также код менеджера, оформлявшего заказ.

Рассмотрим четвертую таблицу, содержащую код, наименование, количество заказанного и проданного товара. Она также содержит повторяющуюся информацию о проданном товаре. Эту информацию базы данных можно разместить в отдельной таблице списка товаров, продаваемых фирмой.

В результате проведенной нормализации вместо одной исходной таблицы мы получили шесть простых таблиц, содержащих неповторяющуюся информацию.

После определения структуры таблиц, отношений между ними и совпадающих полей, которые будут использованы для связывания отдельных таблиц, вы готовы к созданию многотабличной базы данных в Visual Basic.

Индексы

Информация в таблицы базы данных вводится в произвольном порядке и в этом же порядке сохраняется на диске. Поиск нужной информации в такой таблице затруднен, особенно если она имеет большое количество записей. Например, рассмотрим таблицу, содержащую список клиентов фирмы. Чтобы облегчить поиск информации о нужном клиенте в этой таблице, данные необходимо упорядочить в алфавитном порядке по фамилиям. Если фамилии клиента вы не знаете, а проводите поиск по району, в котором он проживает, в этом случае данные можно упорядочить по районам.

Одним из основных требований, предъявляемых к базам, является возможность быстрого поиска требуемых записей среди большого объема информации. Индексы представляют собой наиболее эффективное средство, которое позволяет значительно ускорить поиск данных в таблицах по сравнению с таблицами, не содержащими индексов. Таблица может иметь несколько индексов. В зависимости от количества полей, используемых в индексе, различают простые (по одному ключу) и составные индексы (по нескольким полям).

Для каждого значения индекса в индексном файле содержится уникальная ссылка, указывающая на местонахождение в таблице записи, соответствующей индексу. Поэтому при поиске записи осуществляется не последовательный просмотр всей таблицы, а прямой доступ к записи на основании упорядоченных значений индекса.

Важной особенностью индексов является то, что вы можете использовать их для создания первичных ключей. В этом случае индексы должны быть уникальными. Это означает, что для таблицы, содержащей только одно индексное поле, уникальным должно быть значение этого поля. Для составных индексов величины в каждом из индексных полей могут иметь повторяющиеся значения. Однако индексное выражение должно быть уникальным.

Замечание

Требование уникальности индекса не является обязательным. Для ускорения поиска требуемой информации могут быть использованы индексы, не являющиеся уникальными.

Использование Visual Data Manager для создания базы данных

В Visual Basic с помощью надстройки Visual Data Manager можно создавать базы данных, создавать и модифицировать таблицы, индексы.

Для запуска Visual Data Manager используется команда Visual Data Manager меню Add-Ins (Надстройки). При ее выполнении открывается окно VisData, содержащее меню и панель инструментов.

Создание базы данных

Создание базы данных рассмотрим на примере базы данных Microsoft Access, так как это наиболее часто используемое в Visual Basic средство. Для создания базы данных в Visual Data Manager выполните следующие действия:

1. В меню File (Файл) окна VisData выберите команду New (Новый). Открывается меню, содержащее список создаваемых файлов. Выберите из него тип создаваемого файла Microsoft Access. При выборе значения Microsoft Access появляется еще одно меню следующего уровня, позволяющее выбрать версию Access. Выберите нужное значение. Открывается диалоговое окно Select Microsoft Access Database to Create (рис. 16.1).

Рис. 16.1. Диалоговое окно Select Microsoft Access Database to Create

Замечание

Visual Data Manager позволяет работать с базами данных Access, dBase, FoxPro, Paradox, с текстовыми файлами, поддерживает ODBC.

2. Используя раскрывающийся список Папка, укажите папку, в которой хотите сохранить создаваемую базу данных. В поле Имя файла введите имя базы данных и нажмите кнопку Сохранить. Открывается окно проектирования базы данных (рис. 16.2), в котором вы можете создавать новые таблицы, входящие в базу данных, а также изменять структуру и индексы существующих таблиц.

Рис. 16.2. Окно проектирования базы данных

Создание таблицы

После того как база данных создана, можно приступать к созданию таблиц, входящих в ее состав. Для создания таблицы выполните следующие действия:

1. В окне Database Window созданной базы данных щелкните правой кнопкой мыши и выберите в контекстном меню команду New Table (Новая таблица). Открывается диалоговое окно Table Structure (Структура таблицы), предназначенное для создания таблицы (рис. 16.3).

2. В поле Table Name (Имя таблицы) введите наименование создаваемой таблицы.

Рис. 16.3. Диалоговое окно Table Structure, предназначенное для создания таблицы

3. Для создания первого поля таблицы нажмите кнопку Add Field (Добавить поле). Открывается диалоговое окно Add Field, предназначенное для ввода информации, определяющей текущее поле (рис. 16.4).

Каждое поле таблицы характеризуется наименованием, типом и шириной поля. Кроме этих основных параметров каждое поле обладает дополнительными свойствами, назначающими условия ввода данных. Все эти параметры можно задать в данном диалоговом окне.

Рис. 16.4. Диалоговое окно Add Field, предназначенное для создания полей

4. В поле Name (Имя) введите наименование поля. Наименование каждого из полей таблицы, как правило, выбирается произвольно, но таким образом, чтобы отразить характер информации, которая будет храниться в данном поле.

5. Тип поля определяется типом данных, хранящихся в этом поле. Используя раскрывающийся список Type (Тип) диалогового окна Add Field, укажите тип поля.

6. С помощью полей ValidationText и ValidationRule можно задать текст сообщения, выводимого при неправильном вводе данных в это поле, и условие правильности ввода данных.

7. Используя поле DefaultValue (Значение по умолчанию), можно задать значение, вводимое в поле по умолчанию при добавлении в таблицу новой записи.

8. Завершив ввод информации, касающейся текущего поля, нажмите кнопку ОК. Созданное поле будет добавлено в таблицу, а поля диалогового окна Add Field будут подготовлены для ввода следующего поля.

9. Повторяя пункты с 4 по 8, введите все поля таблицы.

10. Завершив ввод всех полей таблицы, нажмите кнопку Close для закрытия диалогового окна Add Field.

Вы возвращаетесь в диалоговое окно Table Structure. Список Field List (Список полей) содержит поля таблицы. При выборе из этого списка наименования поля, в полях, расположенных справа от списка, отображаются параметры текущего поля, введенные в диалоговом окне Add Field.

11. Для создания индекса таблицы нажмите кнопку Add Index (Добавить индекс). Открывается диалоговое окно Add Index (рис. 16.5), содержащее в названии наименование таблицы, для которой создается индекс.

Рис. 16.5. Диалоговое окно, предназначенное для создания индекса таблицы

12. В поле Name диалогового окна введите наименование индекса.

13. Для указания полей, входящих в индекс, используется список Available Fields (Доступные поля). Дважды щелкая мышью на наименовании поля в этом списке, перенесите в поле Indexed Fields (Поля индекса) поля, образующие индекс.

Замечание

При создании индекса переносите поля в Indexed Fields в том порядке, в каком они должны входить в индекс, иначе упорядочение данных будет осуществляться иначе, чем вам бы хотелось.

14. По умолчанию поля таблицы индексируются по возрастанию значения поля, входящего в индекс. Для изменения порядка упорядочения в списке Indexed Fields поставьте знак минус (-) перед полем, для которого хотите изменить установленный по умолчанию порядок.

15. Используя флажки Primary (Первичный) и Unique (Уникальный), укажите тип создаваемого индекса.

Замечание

При установке флажка Primary создается первичный ключ, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввод пустых значений.

16. Завершив ввод индекса, нажмите кнопку ОК. Созданный индекс добавится в таблицу, а поля диалогового окна Add Index будут подготовлены для ввода следующего индекса.

17. Повторяя пункты с 12 по 16, введите все индексы таблицы.

18. Завершив формирование всех индексов таблицы, нажмите кнопку Close для закрытия диалогового окна Add Index.

Вы возвращаетесь в диалоговое окно Table Structure. Список Index List (Список индексов) содержит список созданных для таблицы индексов.

19. Таблица создана. Нажмите кнопку Build the Table (Построить таблицу).

После создания таблицы вы возвращаетесь в Visual Data Manager. В окне Database Window появляется наименование созданной таблицы (рис. 16.6).

Работа с таблицей в базе данных

После создания в базе данных таблицы ее наименование появляется в окне Database Window. При установке курсора на наименование и нажатии правой кнопки мыши появляется контекстное меню (рис. 16.6), содержащее команды, предназначенные для работы с данной таблицей.

Назначение команд для работы с таблицей описано в табл. 16.1.

Рис. 16.6. Контекстное меню таблицы

Таблица 16.1. Команды, предназначенные для работы с таблицей
Команда | Назначение
Open (Открыть) | Открывает таблицу для просмотра, редактирования и ввода новых записей
Design (Конструировать) | Открывает диалоговое окно Table Structure (Структура таблицы) для просмотра и редактирования структуры таблицы
Rename (Переименовать) | Переименовывает таблицу
Delete (Удалить) | Удаляет таблицу из базы данных
Copy Structure (Копировать структуру) | Копирует структуру таблицы

Рассмотрим перечисленные в табл. 16.1 команды более подробно.

Просмотр содержимого таблицы

Первой в контекстном меню таблицы расположена команда Open (Открыть), открывающая таблицу для просмотра, редактирования и ввода данных. При выборе этой команды открывается диалоговое окно Table, содержащее поля таблицы и кнопки (рис. 16.7). В нижней части диалогового окна расположена панель инструментов, предназначенная для перемещения по записям таблицы, а в верхней — кнопки, позволяющие добавлять в таблицу новые записи, редактировать или удалять текущую запись, осуществлять поиск в таблице нужных данных. Назначение этих кнопок описано в табл. 16.2.

Таблица 16.2. Кнопки диалогового окна Table
Кнопка | Назначение
Add (Добавить) | Добавляет в таблицу новую запись и позволяет ввести в нее данные
Edit (Редактировать) | Позволяет отредактировать текущую запись таблицы, выбранную с помощью кнопок перемещения по записям
Delete (Удалить) | Удаляет из таблицы текущую запись
Seek (Искать) | Открывает диалоговое окно Seek Parameters (Искать параметры), позволяющее задать параметры для поиска информации в таблице. Прежде чем осуществлять поиск, необходимо, используя раскрывающийся список Index, проиндек-сировать таблицу по полю, значение которого хотите найти
Filter (Фильтр) | Открывает диалоговое окно, позволяющее задать выражение для фильтра, накладываемого на таблицу
Close (Закрыть) | Закрывает диалоговое окно Table

Рис. 16.7. Просмотр содержимого таблицы

Модификация структуры таблицы

Для просмотра и модификации структуры таблицы базы данных используется команда Design (Конструировать) контекстного меню. При выборе этой команды открывается диалоговое окно Table Structure (Структура таблицы) (рис. 16.3), использовавшееся при создании таблицы.

С помощью Visual Data Manager нельзя изменять тип и размер созданных ранее полей таблицы. Вы можете их только переименовать и изменить параметры проверки достоверности вводимых данных. Помимо этого, вы можете добавить в таблицу новые поля, удалить ненужные, добавить, переименовать или удалить индексы.

Переименование таблицы

Visual Data Manager позволяет переименовать таблицу в базе данных. Для этого необходимо в окне Database Window установить курсор на наименование переименовываемой таблицы и выбрать в контекстном меню команду Rename (Переименовать). Имя таблицы помещается в редактируемое поле, в которое можно ввести новое поле или отредактировать имеющееся. После ввода нового имени нажмите клавишу <Enter>. Для отказа от переименования нажмите клавишу <Esc>.

Удаление таблицы

Для удаления таблицы из базы данных в Visual Data Manager в окне Database Window установите курсор на наименование таблицы и выберите из появившегося контекстного меню команду Delete (Удалить). Появляется запрос на подтверждение удаления таблицы. Для удаления таблицы нажмите кнопку Да, для отказа от удаления — Нет.

Копирование структуры таблицы

Visual Data Manager позволяет скопировать структуру таблицы в базе данных. Для этого необходимо в окне Database Window установить курсор на наименование таблицы и выбрать в контекстном меню команду Copy Structure (Копировать структуру). Открывается диалоговое окно Copy Structure, показанное на рис. 16.8.

Рис. 16.8. Диалоговое окно Copy Structure

Поле Tables содержит список таблиц базы данных. Выберите из этого списка наименование копируемой таблицы. В поле Target Database необходимо указать название базы данных, в которую копируется таблица. По умолчанию это поле содержит наименование текущей базы данных. Используя флажки Copy Indexes и Copy Data, можно указать, копировать ли со структурой индексы таблицы и данные, размещенные в ней. Завершив установку параметров, нажмите кнопку ОК для осуществления копирования.

Создание соединений с серверами баз данных

В Visual Basic для работы можно использовать базы данных, размещенные на сервере. Прежде чем работать с такой базой данных, необходимо создать соединение с ней. Для создания соединения выполните следующие действия:

1. Откройте окно DataEnvironment (рис. 16.9). Для этого в меню Project (Проект) выберите команду Add Data Environment (Среда окружения).

Рис. 16.9. Окно DataEnvironment

2. Для добавления нового соединения нажмите кнопку Add Connection (Добавить соединение) на панели инструментов окна DataEnvironment. В окне появится новый элемент, который по умолчанию имеет наименование Connection 1.

3. Выберите для данного элемента команду контекстного меню Properties (Свойства). Открывается диалоговое окно Свойства связи с данными, предназначенное для ввода параметров соединения с сервером.

4. На вкладке Поставщик услуг диалогового окна Свойства связи с данными (рис. 16.10) выберите из предложенного списка тип подключаемых данных.

5. Перейдите на вкладку Подключение и введите имя сервера, имя и пароль пользователя (если в этом есть необходимость), выберите из раскрывающегося списка базу данных на сервере.

6. Чтобы убедиться в правильности задания параметров соединения, нажмите кнопку Проверить подключение. Если подключение выполнено успешно, появится сообщение, что проверка подключения выполнена.

7. Завершив установку параметров, нажмите кнопку ОК для закрытия диалогового окна.

Для просмотра входящих в соединение объектов откройте окно Data View. Для этого в меню View (Вид) выберите команду Data View Window (Окно просмотра данных) или нажмите одноименную кнопку на стандартной панели инструментов Visual Basic.

Рис. 16.10. Диалоговое окно установления соединения с базой данных на сервере.

Таблицы

Вы можете открыть для просмотра любую из таблиц, находящихся в окне Data View. Для этого установите курсор на наименование просматриваемой таблицы, нажмите правую кнопку мыши и выберите из контекстного меню команду Open (Открыть). Для открытия таблицы можно также дважды щелкнуть мышью на ее наименовании.

При открытии таблицы, находящейся на SQL Server, в режиме конструктора появляется структура таблицы. Столбцы этой таблицы отображают свойства полей открытой в конструкторе таблицы. Их назначение описано в табл. 16.3. Для открытия таблицы в конструкторе установите курсор на наименование просматриваемой таблицы, нажмите правую кнопку мыши и выберите из контекстного меню команду Design (Конструктор).

Таблица 16.3. Свойства полей таблицы, находящейся в базе данных СУБД SQL Server
Свойство | Описание
Column Name | Имя поля таблицы
Datatype | Тип данных поля таблицы
Length | Максимальный размер поля
Precision | Максимальное число десятичных знаков в числовом поле
Scale | Максимальное количество десятичных знаков после разделителя
Allow Nulls | Указывает, допустимо ли для данного поля значение NULL
Default Value | Значение, вводимое в поле по умолчанию
Identity | Если в данном поле установлен флажок, то при добавлении в таблицу нового значения в поле автоматически добавляется уникальное значение
Identity Seed | Значение, присваиваемое первой записи таблицы. Если свойство не содержит никаких значений, то по умолчанию присваивается 1
Identity Increment | Шаг, с которым изменяется значение в данном поле

Схема базы данных

Visual Basic позволяет в окне Data View просматривать и модифицировать схему базы данных, размещенной на сервере.

Чтобы открыть схему базы данных, необходимо установить курсор на наименование схемы в папке Database Diagrams, нажать правую кнопку мыши и выбрать в контекстном меню команду Open (Открыть). Можно также дважды щелкнуть мышью на наименовании схемы. Открывается окно Database Diagram (Схема базы данных), содержащее таблицы, входящие в схему, и установленные между ними связи.

Замечание

Схем базы данных в окне Data View для данного соединения может быть несколько. В схеме данных таблицы объединяются в логические группы. В этом случае легче ориентироваться в структуре, чем при просмотре одной схемы данных, содержащей огромное количество таблиц.

Используя схему базы данных, можно создавать новые таблицы, изменять структуру и свойства существующих таблиц, устанавливать между таблицами связи.

Удобство работы со схемой базы данных заключается еще и в том, что осуществленные в ее структуре изменения сохраняются лишь при сохранении схемы, то есть, когда вы уверены, что все изменения выполнены верно.

Для создания новой схемы базы данных из окна Data View установите курсор на папку Database Diagrams, нажмите правую кнопку мыши и выберите из контекстного меню команду New Diagram (Новая схема). Откроется пустое окно схемы базы данных. Используя механизм перенести-и-оставить, перенесите в окно New Database Diagram (Новая схема базы данных) из окна Data View необходимые таблицы из базы данных, размещенной на сервере.

Для удобства работы вы можете перемещать таблицы на схеме, изменять масштаб отображения схемы, используя для этого команды контекстного меню.

Создание новой таблицы

Для создания новой таблицы в окне схемы базы данных выполните следующие действия:

1. Установите курсор в окно схемы данных, нажмите правую кнопку мыши и выберите в контекстном меню команду New Table (Новая таблица).

2. В открывшемся диалоговом окне Choose Name введите имя таблицы и нажмите кнопку ОК. Появляется пустая таблица со свойствами полей таблицы.

3. Введите поля таблицы и определите их свойства.

4. Определите первичный ключ таблицы. Для этого выделите поле, которое вы хотите использовать в качестве первичного ключа, и выберите в контекстном меню команду Set Primary Key.

5. После того как все поля и первичный ключ таблицы определены, выберите команду контекстного меню Column Names (Имена столбцов). Таблица примет вид, отображающий только наименования полей.

Замечание

Новые и измененные таблицы схемы базы данных помечаются звездочкой, помещаемой в заголовок таблицы.

Добавление таблицы в схему

Для добавления таблицы в схему базы данных служит диалоговое окно Data View.

Чтобы перенести таблицы в схему базы данных, в диалоговом окне Data View откройте папку Tables (Таблицы) и, используя механизм перенести-и-оставить, переместите поочередно в окно схемы требуемые таблицы. При этом сразу отображаются связи, установленные между таблицами.

Установление связей между таблицами

Для установления связей между таблицами в схеме базы данных используется механизм перенести-и-оставить:

1. Расположите связываемые таблицы в окне схемы так, чтобы они обе были видны, и вам было удобно с ними работать.

2. Установите курсор на область выделения слева от наименования поля, по которому будет осуществляться связь.

3. Нажмите и, удерживая в нажатом состоянии левую кнопку мыши, переместите появившийся под курсором значок на связываемое поле второй таблицы.

4. Открывается диалоговое окно Create Relationship, указывающее, с использованием каких полей осуществлено связывание таблиц. Если связь установлена верно, нажмите кнопку ОК.

Между связанными таблицами в схеме базы данных появляется линия. На одном ее конце изображен ключ. Это говорит о том, что данная таблица связывалась по первичному ключу. На втором конце линии также может находиться ключ, если связанные таблицы имеют отношение один-к-одному, или знак бесконечности, если таблицы имеют отношение один-ко-многим.

Удаление таблиц

Для удаления таблицы из схемы базы данных необходимо ее выделить и выбрать из контекстного меню команду Remove Table from Diagram (Удалить таблицу из схемы). При этом таблица удаляется из схемы, но не удаляется из базы данных. Если вы хотите удалить таблицу и из базы данных, то в этом случае вам необходимо воспользоваться командой Delete Table from Database (Удалить таблицу из базы данных).

Представление данных

В базах данных широко используются представления данных. Они создаются аналогично запросу и содержат выборку данных из таблиц базы данных. После создания представления данных вы можете открывать и просматривать данные из него как из обычной таблицы, использовать в формах и отчетах. Вы можете даже создавать вложенные представления данных, используя при создании нового представления созданные ранее.

Представления являются чрезвычайно удобным и полезным средством доступа к базе данных. При создании базовых таблиц главное внимание необходимо уделять нормализации данных. Поэтому просмотр и редактирование базовых таблиц может вызывать определенные трудности. Представления позволяют вам объединять данные таблиц и отображать их в более удобном виде. Вы можете выбрать только интересующие вас поля таблиц, объединить несколько полей в одно поле, вычислить итоговые значения, задать новые имена полей таблицы.

Для базы данных, размещенной на сервере, с которой установлено соединение, из программы Visual Basic можно создавать представления данных с помощью конструктора представлений. Для создания нового представления в окне Data View (Просмотр данных) установите курсор на папку Views (Представления), нажмите правую кнопку мыши и выберите из контекстного меню команду New View (Новое представление).

Открывается пустое окно конструктора представлений. Оно содержит четыре панели. На верхней панели окна размещаются таблицы или представления, являющиеся источником данных для создаваемого представления. Ниже панели таблиц располагается бланк, используемый для формирования запроса. Под бланком запроса в окне представления находится область, отображающая текст инструкции SQL. Затем располагается панель, отображающая результаты запроса.

Замечание

Отображением панелей в окне представления управляет команда Show Panes (Отображать панели) меню View (Вид), содержащая в свою очередь меню с наименованием панелей. Если панель отображается в конструкторе, то в меню рядом с ее названием стоит галочка. Чтобы удалить панель из конструктора представлений, необходимо выбрать команду с ее названием. Помимо этого, для удаления панели можно установить на нее курсор, нажать правую кнопку мыши и выбрать в контекстном меню команду Hide Pane (Скрыть панель).

Для добавления в окно конструктора таблиц или представлений, используемых при создании нового представления, необходимо в окне Data View открыть папку Tables (Таблицы) или Views (Представления), а затем, используя механизм перенести-и-оставить, переместить поочередно в конструктор требуемые таблицы. При переносе в окно конструктора таблиц сразу отображаются связи, установленные между ними.

Для выбора полей, отображаемых в представлении, необходимо установить флажки с левой стороны полей исходных таблиц. При этом выбранные поля появляются в бланке, и одновременно формируется инструкция SQL на одноименной панели.

Типы объединения таблиц в представлении

По умолчанию в окне конструктора представлений используется внутреннее объединение таблиц, при котором из обеих таблиц выбираются только те записи, у которых совпадают значения связанных полей. Можно также создавать внешние объединения, тогда из одной таблицы выбираются все записи, а из другой — только связанные.

Для выбора типа объединения таблиц необходимо установить курсор на ромб, находящийся в центре линии, обозначающей связь, нажать правую кнопку мыши и выбрать в контекстном меню одну из команд, обозначающую тип связи: Select All Rows from <имя таблицы 1> или Select All Rows from <имя таблицы 2>. Помимо этого, для установления типа связи можно воспользоваться диалоговым окном Properties, которое открывается при выборе команды Свойства контекстного меню.

В центре диалогового окна расположен раскрывающийся список, содержащий операторы сравнения, позволяющие связывать записи в таблицах. Флажки области Include rows позволяют задать тип внешнего соединения:

  • полное внешнее объединение, при котором выбираются строки из обеих таблиц;
  • левое внешнее объединение, при котором выбираются все строки из левой таблицы;
  • правое внешнее объединение, при котором выбираются все строки из правой таблицы.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 17. Управление данными.

В настоящей главе обсудим создание форм для ввода и редактирования данных с использованием компонентов ADO (ActiveX Data Object). Технология ADO является новейшим средством доступа к различным типам данных, которую рекомендуется применять при разработке приложений в Visual Basic 6.0.

ADO позволяет программе получить доступ к базе данных с помощью провайдера OLE DB, который представляет собой интерфейс, обеспечивающий доступ к различным источникам данных.

При использовании ADO нам встретятся две основные группы объектов.

  • Элементы управления данными. Элемент ADO Data control используется для непосредственного подключения к базе данных. С помощью этого объекта можно достаточно легко подключиться к базе данных любого типа.
  • Элементы объектного интерфейса. Библиотека ADO предоставляет в ваше распоряжение большой выбор объектов для работы с данными. В список входят такие объекты, как таблица, список, раскрывающийся список и т. д.

    Замечание

    Следует отметить, что управлять данными можно непосредственно с помощью программного кода или использовать обычные элементы управления Visual Basic.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Подключение компонентов ADO к проекту

Чтобы использовать компоненты ADO в проекте, необходимо подключить библиотеки, которые их содержат. Для этого вам необходимо в меню Project (Проект) выбрать команду References (Ссылки), а затем в диалоговом окне References (рис. 17.1) установить флажки рядом с наименованиями следующих библиотек:

  • Microsoft ActiveX Data Objects 2.1 Library;
  • Microsoft ActiveX Data Objects Recordset 2.1 Library.

Рис. 17.1. Диалоговое окно References

Для того чтобы использовать элементы управления, которые применяю! технологию ADO при создании и редактировании форм, необходимо эти компоненты поместить на панель инструментов. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в диалоговом окне Components установите флажки рядом с именами следующих компонентов:

  • Microsoft ADO Data Control 6.0 (OLEDB);
  • Microsoft DataGrid Control 6.0 (OLEDB);
  • Microsoft DataList Controls 6.0 (OLEDB);
  • Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB).


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления ADO Data Control

В Visual Basic появился новый объект для управления данными — ADO Data control, который имеет непосредственную связь с набором записей и позволяет пользователю перемещаться по нему в любом направлении.

Рис. 17.2. Размещение объекта ADO Data Control в форме

На рис. 17.2 показан размещенный в форме элемент управления ADO Data Control. Он состоит из пяти объектов, представленных в табл. 17.1.

Таблица 17.1. Объекты, входящие в состав элемента управления ADO Data Control
Объект | Назначение
 | Осуществляет переход на первую запись
 | Осуществляет переход на предыдущую запись
<заголовок> | Отображает заголовок элемента, определяемый свойством Caption
 | Осуществляет переход на следующую запись
 | Осуществляет переход на последнюю запись

Элемент управления ADO Data Control обладает свойствами, описанными в табл. 17.2.

Таблица 17.2. Свойства элемента управления ADO Data Control
Свойство | Описание
BOF и EOF | Свойства, которые содержат признак того, что текущая строка находится перед первой строкой или после последней строки, соответственно
CacheSize | Количество строк, выбираемых в память
CommandTimeout | Время ожидания выполнения команды, после превышения которого выдается сообщение об ошибке
CornmandType | Тип выполняемой команды
ConnectionString | Содержит информацию, необходимую для соединения с источником данных
ConnectionTimeout | Время ожидания соединения с источником данных, после превышения которого выдается сообщение об ошибке
CursorLocation | Устанавливает или возвращает местонахождение курсора
CursorType | Тип курсора, используемый в объекте Recordset
LockType | Тип блокировки
MaxRecords | Максимальное количество строк, передаваемых объекту Recordset
Mode | Устанавливает ограничения для редактирования данных
Password | Пароль, который будет использоваться при доступе к данным
Recordset | Возвращает или устанавливает ссылку на объект Recordset
RecordSource | Данное свойство содержит наименование таблицы или запроса и определяет содержимое объекта Recordset
UserName | Имя пользователя, используемое при создании объекта

Элемент управления ADO Data control характеризуется событиями, описанными в табл. 17.3.

Таблица 17.3. События элемента управления ADO Data Control
Событие | Описание
EndOfRecordset | Возникает при достижении последней записи в объекте Recordset
FetchComplete | Возникает после заполнения всех записей в объекте Recordset
FetchProgress | Возникает периодически во время заполнения записей в объекте Recordset
WillChangeField, FieldChangeComplete | Данные события возникают соответственно до и после изменения какого-либо поля или полей в объекте Recordset
WillChangeRecord, RecordChangeComplete | Данные события возникают соответственно до и после изменения какой-либо записи или записей в объекте Recordset
WillChangeRecordset, RecordsetChangeComplete | Первое событие возникает до изменения данных в объекте Recordset, а второе — после изменения данных
WillMove, MoveComplete | События возникают соответственно до и после изменения текущей позиции в объекте Recordset


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Соединение элемента с источником данных

Для соединения элемента управления ADO Data Control с источником данных используется свойство ConnectionString диалогового окна Properties (Свойства). Чтобы ввести информацию в это свойство, нажмите кнопку с тремя точками в правом столбце свойства. Откроется диалоговое окно Ргоperty Pages (рис. 17.3), в котором можно будет настроить соединение с источником данных тремя способами, используя:

  • файл Data Link;
  • источник данных ODBC;
  • строки соединения с источником данных.

Рис. 17.3. Диалоговое окно для настройки строки соединения с источником данных

Если вы хотите настроить соединение с источником данных с помощью файла Data Link, то вам необходимо выбрать опцию Use Data Link File и с помощью кнопки Browse выбрать в диалоговом окне Open нужный файл.

Для соединения с источником данных с помощью ODBC установите опцию Use ODBC Data Source Name и в раскрывающемся списке выберите требуемый источник данных ODBC. Если в списке отсутствует источник данных, который вы хотели бы использовать, то нажмите кнопку New для вызова мастера настройки нового источника данных ODBC.

Третий способ настройки соединения с источником данных подразумевает непосредственный ввод строки соединения. Для использования строки соединения с источником данных выберите опцию Use Connection String и введите вручную текст строки в расположенное под опцией поле. Для формирования строки соединения служит диалоговое окно Data Link Properties (Свойства связи с данными) (рис. 17.4), которое открывается при нажатии на кнопку Build, расположенную справа от поля ввода.

Диалоговое окно Data Link Properties содержит четыре вкладки. На вкладке Privider (Поставщик услуг) в списке OLE DB Privider(s) (Поставщики OLE DB) вам необходимо выбрать поставщика услуг данных. Для продолжения настройки нажмите кнопку Next (Далее) или выберите вкладку Connection (Подключение) (рис. 17.5), на которой вы можете настроить соединение.

Рис. 17.4. Диалоговое окно Data Link Properties

Рис. 17.5. Вкладка Connection диалогового окна Data Link Properties

Замечание

Для каждого поставщика данных параметры для настройки соединения различны. В качестве примера рассмотрим вариант для настройки соединения с базой данных SQL Server 7.0.

Как видно из рисунка, в первую очередь надо выбрать из раскрывающегося списка наименование сервера баз данных. После этого необходимо ввести информацию о пользователе, которая включает в себя псевдоним пользователя и пароль. Последним этапом настройки соединения будет выбор базы данных из раскрывающегося списка или путем ввода имени базы данных в поле ввода.

На вкладке Advanced (Дополнительно) (рис. 17.6) размещены дополнительные параметры для настройки соединения с источником данных.

В области Network settings (Параметры сети) вкладки Advanced расположены следующие раскрывающиеся списки:

Список | Описание
Impersonation level | Уровень представления, используемый сервером при исполнении роли клиентов
Protection level | Определяет уровень защиты данных при обмене между сервером и клиентом

В области Other (Другое) вкладки Advanced размещены дополнительные параметры настройки соединения. Поле ввода Connect timeout (Время ожидания соединения) устанавливает промежуток времени, через который после начала соединения попытка соединения прекращается.

С помощью списка Access permissions (Права доступа) можно установить ограничения для работы с данными.

На вкладке All (Все) (рис. 17.7) диалогового окна Data Link Properties предоставляется возможность изменять все свойства, которые допустимы для выбранного поставщика данных.

Рис. 17.6. Вкладка Advanced диалогового окна Data Link Properties

Рис. 17.7. Вкладка All диалогового окна Data Link Properties

Для изменения параметра выполните следующие действия:

1. Выберите свойство, которое необходимо изменить.

2. Нажмите кнопку Edit Value (Изменить значение), расположенную в нижней части диалогового окна.

3. В открывшемся диалоговом окне Edit Property Value (Изменение значения свойства) введите значение свойства в поле Property Value (Значение свойства).

4. После изменения значения свойства нажмите кнопку ОК. Для отмены изменений нажмите кнопку Cancel (Отмена).


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение источника записей

После того как для элемента управления ADO Data control было настроено соединение с источником данных, можно приступить к определению источника записей. Для этого в диалоговом окне Property Pages элемента управления ADO Data Control перейдите сначала на вкладку Authentication (рис. 17.8), и введите имя пользователя и пароль для активизации соединения с источником данных.

Рис. 17.8. Вкладка Authentication диалогового окна Property Pages

Затем можно непосредственно перейти к настройке источника записей, воспользовавшись вкладкой RecordSource (Источник записи) (рис. 17.9) диалогового окна Property Pages.

Параметры настройки данной вкладки описаны в табл. 17.4.

Таблица 17.4. Параметры настройки вкладки RecordSource
Объект | Описание
CommandType (Тип команды) | Раскрывающийся список предназначен для выбора типа команды, которая будет использоваться для получения источника записей
Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры) | Если в качестве источника записей выбрана таблица или хранимая процедура, то в данном раскрывающемся списке можно выбрать наименование хранимой процедуры или таблицы
Command Text (SQL) (Текст команды) | В текстовое поле вводится SQL-выражение или какая-либо другая команда, которая может возвращать источник записей

Рис. 17.9. Вкладка RecordSource для настройки источника записей


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование элемента ADO Data Control в форме

Рассмотрим использование элемента ADO Data Control в форме. Для этого выполните следующие действия:

1. Откройте новый проект.

2. Разместите в форме проекта элемент управления ADO Data control. Для этого дважды щелкните кнопку Adodc ¦Я на панели элементов управления.

3. Настройте соединение с источником данных для элемента управления ADO Data Control, как это было описано выше.

4. После настройки соединения с источником данных перейдите к настройке источника записей. Для этого вызовите диалоговое окно Property Pages для элемента ADO Data control. Перейдите на вкладку RecordSource и в раскрывающемся списке Command Type выберите значение adCmdTable. Из списка Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры) выберите таблицу Customer с информацией о клиентах.

5. После настройки элемента ADO Data Control можно приступить к размещению в форме элементов управления для отображения данных из таблицы. Для удобства рекомендуется располагать элементы таким образом, чтобы пользователю было удобно работать с формой. На рис. 17.10 показано размещение элементов для просмотра информации о покупателях.

Рис. 17.10. Форма с размещенными элементами управления для просмотра информации о покупателях

Рис. 17.11. форма для просмотра покупателей в режиме выполнения

6. Далее необходимо связать элементы отображения данных с элементом ADO Data control. Для каждого элемента управления выполните следующие действия:

  • выберите элемент, который необходимо связать с источником записей;
  • в окне Properties выбранного элемента из раскрывающегося списка свойства DataSource (Источник данных) выберите элемент ADO Data control, который был размещен на форме;
  • после того как элемент связан с источником записей, необходимо связать его с полем таблицы. Для этого используйте свойство DataField (Поле данных), из списка которого выберите требуемое поле таблицы.

7. После завершения настройки всех элементов формы, запустите проект на выполнение и просмотрите полученный результат (рис. 17.11).


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование окружения данных при создании формы

Гибким и удобным способом соединения с источником данных является использование в проекте окружения данных (Data Environment). Основное его преимущество заключается в том, что при необходимости изменения параметров соединения с базой данных вам будет достаточно изменить эти параметры в окружении данных для объекта connection, и все объекты Command, связанные с ним, будут учитывать эти изменения. Если же в каждой форме настроено отдельное соединение, то вам придется исправлять изменившиеся параметры во всех формах.

Рис. 17.12. Конструктор для редактирования окружения данных

Для создания окружения данных в проекте выполните команду Add Data Environment (Добавить окружение данных) меню Project (Проект). На экране появится конструктор для редактирования окружения данных (рис. 17.12).

Автоматически в окружении данных создается объект Connection, представляющий собой соединение с источником данных. Настройка соединения осуществляется так же, как и для элемента управления ADO Data control.

После того как соединение подготовлено, можно приступить к созданию объекта command. Данный объект можно создать двумя способами.

  • Выберите соединение и нажмите кнопку Add Command на панели инструментов окна DataEnvironment. В папке Commands появится новая команда с активным соединением, которое было выбрано.
  • Установите курсор на папку Commands, нажмите правую кнопку мыши и выберите из появившегося контекстного меню команду Add Command.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка объекта Command

Настройка параметров объекта command в общем похожа на настройку источника записей для ADO Data control. Различие состоит в том, что при настройке параметров для объектов Command предоставляется возможность определять большее количество параметров.

Для вызова диалогового окна Свойства (рис. 17.13) объекта command выполните следующие действия:

1. Выберите определяемый объект Command.

2. Нажмите правую кнопку мыши и выберите из контекстного меню команду Properties (Свойства).

Рис. 17.13. Диалоговое окно Свойства для объекта Command

В поле ввода Command Name задается наименование объекта command. Раскрывающийся список Connection позволяет указать соединение, с помощью которого объект получает доступ к источнику данных.

В области Source of Data расположен переключатель, позволяющий указать источник записей. Если выбрана опция Database Object, то в одноименном раскрывающемся списке можно выбрать один из объектов базы данных, описанных в табл. 17.5.

Таблица 17.5. Обьекты базы данных, используемые для указания источника записей
Объект базы данных | Назначение
Stored Procedure | С помощью объекта Command вызывается на выполнение хранимая процедура базы данных
Table | Данные выбираются из таблицы
View | Данные выбираются из представления, созданного в базе данных
Synonym | Источником записей объявляется синоним, являющийся объектом базы данных

После того как задан тип объекта базы данных, необходимо с помощью раскрывающегося списка Object Name (Имя объекта) выбрать имя объекта.

Иногда приходится сталкиваться с ситуациями, когда невозможно использовать ни один из выше перечисленных объектов базы данных. В таком случае в диалоговом окне предоставляется возможность для самостоятельного написания текста команды. Для этого вам необходимо в области Source of Data выбрать опцию SQL Statement и в поле редактирования SQL Statement ввести текст команды.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Parameters

Вторая вкладка диалогового окна Свойства имеет название Parameters (Параметры) (рис. 17.14) и используется для задания параметров выбранной команды.

В области Parameters вкладки расположен список всех параметров. В правой части вкладки Parameters расположена область Parameters Properties, содержащая поля для определения хранимых процедур. Назначение этих полей описано в табл. 17.6.

Таблица 17.6. Параметры хранимой процедуры
Поле ввода | Назначение
Name | Наименование параметра
Direction | Тип направления параметра: Input, Output, InpuVOutput
Data Type | Тип данных параметра
Precision | Точность, с которой задается числовой параметр
Scale | Количество знаков после запятой для числовых параметров
Size | Максимальное значение числового параметра в байтах
Required | Указывает, является ли параметр обязательным
Value | Значение параметра

Рис. 17.14. Вкладка Parameters диалогового окна Свойства


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Relation

На вкладке Relation (Связь) (рис. 17.15) предоставляется возможность для установления соединения с родительским объектом command.

Для создания соединения необходимо установить флажок Relate to a Parent Command Object (Связь с родительским объектом command), расположенный в верхней части вкладки. Раскрывающийся список Parent Command предназначен для выбора вышестоящего объекта command, с которым связывается текущий объект.

В области Relation Definition (Определение связи) расположены параметры для настройки соединения.

Для добавления нового соединения выполните следующие действия:

1. Из раскрывающегося списка Parent Fields выберите поле вышестоящего Объекта Command.

2. Из списка Child Fields/Parameters выберите поле текущего объекта command.

3. Нажмите кнопку Add. Новое соединение добавляется в список, располагающийся в нижней части вкладки.

Если вам необходимо удалить соединение, то для этого выберите соединение и нажмите кнопку Remove.

Рис. 17.15. Вкладка Relation диалогового окна Свойства


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Grouping

Вкладка Grouping (Группировка) используется для определения группировки данных.

Флажок, расположенный в верхней части вкладки, в установленном состоянии позволяет выбрать поля, по которым будет осуществляться группировка. Поле Grouping Command Name области Grouping Definition (Определение группировки) позволяет задать наименование группировки для объекта command.

В списке Fields in Command размещены все доступные для группировки поля, а в списке Fields Used for Grouping — поля, по которым будет осуществляться группировка данных. Между списками расположены кнопки, позволяющие перемещать поля из одного списка в другой.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Aggregates

Для получения итоговых значений по отдельным полям объекта command используется вкладка Aggregates.

Область Aggregates позволяет сформировать список переменных, являющихся итоговыми значениями. Под списком расположены две кнопки. Кнопка Add добавляет в список новую переменную, a Remove — удаляет выделенную в списке переменную.

В области Aggregate Settings вкладки расположены поля, предназначенные для настройки параметров переменной. В поле Name задается наименование переменной. Раскрывающийся список Function содержит список функций, используемых для вычисления следующих итоговых значений:

  • Any — значение поля;
  • Average — среднее значение поля;
  • Count — количество строк;
  • Maximum — максимальное значение поля;
  • Minimum — минимальное значение поля;
  • Standard Deviation — стандартное отклонение значения поля;
  • Sum — сумма значении поля.

Раскрывающийся список Aggregate on содержит два значения. При выборе значения Grouping значение переменной вычисляется по группе. Выбор значения Grand Total указывает на необходимость вычисления по всей выборке.

Из раскрывающегося списка Field можно выбрать поле объекта, по которому будет вычисляться итоговое значение.

После завершения настройки для сохранения всех изменений необходимо нажать кнопку Применить.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Advanced

Вкладка Advanced используется для настройки дополнительных параметров объекта command.

В области Recordset Management вкладки расположены параметры для настройки источника записей.

Раскрывающийся список Cursor Type (Тип курсора) предназначен для установки типа курсора.

Замечание

Список Cursor Type доступен только при использовании курсора, размещенного на сервере.

Для выбора способа размещения курсора (на сервере или на клиенте) используется раскрывающийся список Cursor Location (Расположение курсора).

При работе с записями существует возможность блокировки отдельных записей при редактировании. Чтобы установить тип блокировки, используется раскрывающийся список Lock Type (Тип блокировки), в котором находятся следующие варианты блокировок:

Блокировка | Описание
Read Only | Блокировка при работе записей не используется, так как записи используются только для чтения
Pessimistic | Пессимистическая блокировка записей. Блокируется редактируемая запись. Освобождение от блокировки происходит при переходе на следующую запись
Optimistic | Оптимистическая блокировка записей. Позволяет редактировать текущую запись в других сеансах работы и блокирует запись только при сохранении данных на диске
Batch optimistic | Пакетная оптимистическая блокировка записей

В поле ввода Cache Size (Размер кэша) устанавливается размер кэша для объекта Command. По умолчанию устанавливается размер в 10 записей.

Для того чтобы объект command возвращал результирующее множество, необходимо установить флажок Recordset Returning.

Для настройки конфигурации объекта command используются параметры, расположенные в области Command Configuration:

Параметр | Описание
Command Timeout | В этом поле ввода устанавливается время, через которое при неудачной попытке обращения к объекту Command выполнение прерывается
Мах Records | Содержит максимальное количество строк, которое возвращается из объекта Command при выполнении
Prepare Before Execution | Данный флажок в установленном значении позволяет подготавливать объект Command к работе при первом обращении к нему
All Records | Если установить этот флажок, то объект Command при выполнении будет возвращать все записи

Область Advanced содержит поле ввода Call Syntax, которое позволяет использовать ADO для вызова хранимых процедур. Это может служить для увеличения количества параметров или установки значений параметров.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Размещение полей объекта Command в форме

Объект command удобно использовать при создании форм, предназначенных для просмотра и редактирования данных. Для создания формы редактирования списка покупателей выполните следующие действия:

1. Создайте в окружении данных новый объект Command. Выберите активное соединение для команды.

2. Настройте объект command таким образом, чтобы он выбирал данные из отдельной таблицы. В нашем случае это будет таблица Customer (Список покупателей).

3. Откройте форму проекта, в которой будете размещать поля объекта Command.

4. Для размещения в форме полей необходимо выбрать объект Command в окружении данных (рис. 17.19), нажать левую кнопку мыши и, удерживая ее в нажатом состоянии, перенести в форму. После чего отпустить кнопку мыши.

Рис. 17.19. Подготовка к размещению полей объекта Command в форме редактирования

На рис. 17.20 показан результат расположения полей в форме. Нужно отметить, что все размещенные объекты будут автоматически связаны с объектом Command. После запуска формы на выполнение можно увидеть, что форма успешно отображает данные из таблицы базы данных (рис. 17.21).

Рис. 17.20. Поля объекта Command, размещенные в форме редактирования

Рис. 17.21. Созданная форма в режиме выполнения


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование элемента ADO Data Control для перемещения по данным

В форме, созданной с использованием объекта Command и представленной на рис. 17.21, отсутствуют объекты управления перемещением по записям таблицы. Для управления передвижением курсора по записям таблицы подходит элемент управления ADO Data Control. Для добавления этого элемента в созданную нами с помощью объекта command форму выполните следующие действия:

1. Разместите в форме элемент управления ADO Data Control.

2. Для того чтобы связать элемент ADO Data control с результирующим множеством, полученным с помощью объекта command, добавьте в код обработки события Form_Activate для формы следующую строку кода:

Set adoCustomer.Recordset = deSales.rscomCustomer

3. После этого сохраните форму и запустите ее на выполнение. Результат представлен на рис. 17.22.

Рис. 17.22. Просмотр записей с использованием объекта ADO Data Control

Замечание

В код обработки события для формы мы добавили присвоение для результирующего множества элемента ADO Data Control. В качестве результирующего множества, которое возвращает набор записей, мы взяли rscomCustomer из окружения данных deSales. Результирующее множество rscomCustomer автоматически создается при выполнении объекта Command comCustomer.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка элемента ADO Data Control для отображения номера покупателя

Для наглядности при перемещении по записям таблицы можно в заголовке элемента ADO Data control отображать номер текущей записи. Для этого вам будет достаточно выполнить следующие действия: *

1. Откройте окно редактора кода для элемента ADO Data control.

2. Выберите событие MoveCompiete и добавьте в него следующий код:

adoCustomer.Caption = Покупатель №: &

CStr(adoCustomer.Recordset.AbsolutePosit ion)

3. После этого сохраните форму и запустите ее на выполнение. Результат показан на рис. 17.23.

Рис. 17.23. Отображение номера записи в заголовке элемента ADO Data Control


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Одновременная работа с несколькими записями

Чтобы работать одновременно с несколькими записями, в Visual Basic 6 представлены следующие элементы:

Элемент | Назначение
DataGrid | Элемент управления для отображения и редактирования нескольких записей одновременно
FlexGrid | Элемент управления для просмотра нескольких записей одновременно. Он не позволяет редактировать данные
DataList | Этот элемент является списком, отображающим элементы, выбранные из источника данных


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование элемента DataGrid

Как было сказано выше, элемент DataGrid предоставляет возможность просмотра и редактирования нескольких записей из источника данных. Для создания формы, которая будет использовать элемент DataGrid, выполните следующие действия:

1. Откройте форму, с помощью которой хотите просматривать информацию из источника данных.

2. Разместите в ней элемент управления DataGrid (рис. 17.24). Для этого дважды щелкните кнопку DataGrid на панели элементов управления.

Рис. 17.24. Элемент DataGrid, размещенный в форме

3. Для свойства DataSource (Источник данных) выберите окружение данных, элемент ADO Data control или результирующее множество Recordset, объявленное в форме.

4. В том случае, если в свойстве DataSource было выбрано окружение данных, то с помощью свойства DataMember вам необходимо выбрать объект Command, который вы хотите использовать в форме.

После выполненных действий форма уже является работоспособной, т. к. при запуске формы автоматически будут созданы все необходимые столбцы для отображения данных.

Но в данном случае используются не все возможности элемента DataGrid, рассмотрим их.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление и удаление столбцов

В первую очередь необходимо добавить в элемент DataGrid необходимое количество столбов. Для добавления нового столбца выполните следующие шаги:

1. Выберите элемент DataGrid.

2. Нажмите правую кнопку мыши и выберите из контекстного меню команду Edit (Правка). Объект переходит в режим редактирования.

3. Для добавления нового столбца можно использовать команду Insert, которая добавит новый столбец перед тем столбцом, на который был установлен курсор мыши перед вызовом контекстного меню. Если вам необходимо добавить новый столбец в конец таблицы, то выполните команду Append контекстного меню.

Удаление столбца из объекта DataGrid выполняется аналогично добавлению. Сначала необходимо перевести объект в режим редактирования, затем установить курсор на удаляемый столбец и выбрать из контекстного меню команду Delete.

На рис. 17.26 показана форма с элементом управления DataGrid, в который добавлены столбцы.

Рис. 17.26. Элемент DataGrid с добавленными столбцами


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование разделов

Элемент управления DataGrid позволяет разбить таблицу, содержащую данные, на несколько разделов, настраиваемых отдельно.

Для добавления нового раздела перейдите в режим редактирования элемента DataGrid, выбрав команду Edit контекстного меню, а затем выберите из этого же меню команду Split. Если вам потребуется удалить раздел, то воспользуйтесь командой Remove.

На рис. 17.27 показана форма с элементом управления DataGrid, который разделен на два раздела.

Рис. 17.27. Элемент DataGrid, разделенный на два раздела


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка параметров элемента DataGrid с помощью диалогового окна Property Pages

Для настройки всех параметров элемента DataGrid удобнее всего использовать диалоговое окно Property Pages (рис. 17.28), которое вызывается командой Properties контекстного меню.

Вкладка General (Основные) предназначена для настройки основных свойств элемента DataGrid. Поле ввода Caption содержит заголовок элемента, который будет отображаться в его верхней части. В левой части вкладки расположена область, содержащая флажки следующего назначения:

Рис. 17.28. Диалоговое окно Property Pages для элемента DataGrid

Флажок | Описание
AllowAddNew | Позволяет при работе с элементом DataGrid добавлять новые записи
AllowDelete | Позволяет при работе с элементом DataGrid удалять новые записи
Allowllpdate | Установленный флажок позволяет редактировать записи
ColumnHeaders | При установленном флажке заголовки столбцов будут отображаться на экране. В противном случае они будут отсутствовать
Enabled | Если данный флажок не установлен, то элемент DataGrid недоступен пользователю

В правой части вкладки General диалогового окна Property Pages расположены поля и списки, которые устанавливают значения одноименных свойств элемента управления:

Поле/список | Назначение
DefColWidth | Ширина создаваемых столбцов по умолчанию
HeadLines | Количество строк, выделяемых для заголовка столбца
RowHeight | Высота строки элемента управления DataGrid
Appearance | Устанавливает внешний вид элемента и имеет следующие значения: dbgFlat — двумерное оформление элемента, dbg3D — трехмерное оформление элемента
BorderStyle | Определяет тип обрамления элемента управления: dbgNoBorder — нет обрамления, dbgFixedSingle — обрамление в виде одиночной линии
RowDividerStyle | Задает тип линий между строками с данными


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Keyboard

Вкладка Keyboard (Клавиатура) (рис. 17.29) устанавливает свойства, которые непосредственно связаны с клавишами клавиатуры.

Рис. 17.29. Вкладка Keyboard диалогового окна Property Pages элемента DataGrid

В левой части вкладки расположены флажки, которые управляют перемещением курсора. Их названия совпадают с одноименными свойствами элемента управления:

Флажок | Назначение
AllowArrows | Данный флажок в установленном состоянии позволяет использовать клавиши-стрелки для передвижения по строкам и столбцам
TabAccrossSplits | Если установить этот флажок, то при работе с элементом DataGrid перемещение между разделами будет осуществляться с помощью клавиши <ТаЬ>
WrapCellPointer | При установке этого флажка перемещение курсора с заключительного символа последнего столбца осуществляется в первый столбец следующей строки. В противном случае курсор остается в текущей строке и столбце

Раскрывающийся список TabAction определяет свойство с таким же найме нованием, которое обуславливает поведение курсора при использовании клавиши <ТаЬ>. Это свойство может принимать следующие значения:

Значение | Описание
dbgControlNavigation | При нажатии на клавишу <ТаЬ> курсор будет переходить от одного элемента к другому
dbgColumnNavigation | Если выбрать это значение, то с помощью клавиши <ТаЬ> курсор будет переходить между столбцами элемента DataGrid. При нажатии клавиши <ТаЬ> в последнем столбце курсор перейдет в следующий элемент, расположенный в форме
dbgGridNavigation | С помощью клавиши <ТаЬ> курсор будет перемещаться по столбцам, но при достижении последнего столбца курсор не покинет элемент DataGrid, а будет себя вести, как описано в свойстве WrapCellPointer


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Columns

Вкладка Columns (Столбцы) (рис. 17.30) используется для настройки следующих параметров столбцов:

  • заголовка;
  • связи с полем результирующего множества. Для настройки столбца необходимо выполнить следующие действия:

1. В раскрывающемся списке Column, содержащем перечень всех доступных столбцов элемента DataGrid, пронумерованных начиная с нуля, выбрать настраиваемый столбец.

2. В поле ввода Caption ввести заголовок столбца.

3. Теперь необходимо связать столбец с полем результирующего множества. Для этого используется раскрывающийся список DataField. В этом списке находятся все доступные для работы поля объекта corranand, который был выбран нами ранее в качестве источника данных. Выберите из этого списка поле, с которым связывается текущий столбец.

Рис. 17.30. Вкладка Columns диалогового окна Property Pages элемента DataGrid

После настройки одного столбца можно повторить все шаги для последующих столбцов. Завершив настройку всех столбцов, нажмите кнопку Применить, и все изменения будут сохранены.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Layout

Вкладка Layout (Расположение) (рис. 17.31) используется для настройки внешнего вида столбцов каждого из разделов.

Раскрывающийся список Split содержит все доступные для данного элемента DaraGrid разделы, а список Column — столбцы, входящие в текущий раздел. Для разных разделов, а также столбцов можно определить свой внешний вид с помощью флажков и полей, расположенных на вкладке.

Рис. 17.31. Вкладка Layout диалогового окна Property Pages

В левой части вкладки расположены флажки, предназначенные для установки значений одноименных свойств:

Флажок | Назначение
Locked | При установке флажка содержание столбца предназначено только для чтения информации
AllowSizing | Если установить данный флажок, то в режиме выполнения можно будет изменять размер столбца
Visible | При установленном флажке столбец будет виден на экране. В противном случае столбец виден не будет
WrapText | При установке флажка введенный в ячейку текст отображается на нескольких строках
Button | При установке флажка в правой части ячейки появляется кнопка раскрытия списка

Раскрывающийся список DividerStyle устанавливает свойство DividerStyle для отдельного столбца. Данное свойство предназначено для определения правой границы столбца.

С помощью раскрывающегося списка Alignment можно задать выравнивание информации в столбце. Список содержит следующие значения:

Значение | Описание
DbgLeft | Содержимое столбца выравнивается по левому краю
DbgRight | Содержимое столбца выравнивается по правому краю
DbgCenter | Текст, содержащийся в столбце, размещается в центре
DbgGeneral | Если столбец содержит текст, то он будет выровнен по левому краю, если число, то оно будет выровнено по правому краю

Поле ввода Width предназначено для определения ширины столбца.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Color

На вкладке Color (Цвет) (рис. 17.32) вы можете установить цвета, которые определяют внешний вид вашего элемента DataGrid.

В списке Properties находятся объекты, которые могут быть изменены. Значение BackColor определяет цвет фона для столбцов элемента DataGrid, a ForeColor — цвет текста в столбцах.

Раскрывающийся список Color Set содержит список доступных цветовых схем. Значение Standard Colors определяет стандартную цветовую схему, a Windows System Colors — цветовую схему системы Windows.

Кнопка Edit Custom Color предназначена для настройки нового цвета.

Рис. 17.32. Вкладка Color диалогового окна Property Pages


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Font

Вкладка Font (Шрифт) (рис. 17.33) используется для настройки шрифтов

элемента DataGrid.

Значение Font списка Properties устанавливает шрифт для отображения информации в столбцах, a HeadFont — шрифт для заголовков столбцов.

Раскрывающиеся списки Font и Size позволяют определить соответственно наименование шрифта и его размер. Флажки Bold, Italic, Underline и Strikeout устанавливают начертание шрифта: полужирный, курсив, подчеркнутый и зачеркнутый.

Рис. 17.33. Вкладка Font диалогового окна Property Pages

Внешний вид текста, который получается в результате всех изменении, можно просмотреть в поле ввода Sample Text.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Splits

Вкладка Splits (Разделы) (рис. 17.34) предназначена для определения свойств разделов. Для того чтобы установить свойства для раздела, выберите настраиваемый раздел в раскрывающемся списке Split.

Рис. 17.34. Вкладка Splits диалогового окна Property Pages

В левой части вкладки расположены флажки следующего назначения:

Флажок | Назначение
Locked | При установке флажка содержание столбцов, размещенных в разделе, предназначено только для чтения
AllowFocus | Разрешает установку фокуса на раздел
AllowSizing | При установке флажка размер раздела можно изменять в режиме выполнения формы
AllowRowSizing | При установке флажка можно изменять высоту строк в режиме выполнения формы
RecordSelectors | При установке флажка в разделе будет отображаться индикатор строки

Поле ввода ScrollGroup определяет синхронизацию полос прокрутки для нескольких разделов. Если во всех разделах свойство ScrollGroup имеет одинаковое значение, то вертикальная полоса прокрутки одного раздела автоматически перемещает индикатор строки во всех этих разделах. Если для разделов данное свойство будет иметь различные значения, то в разделах будут отображаться данные из разных областей базы данных.

Раскрывающийся список ScrollBars определяет способ отображения полос прокрутки:

  • dbgNone — полоса прокрутки отсутствует;
  • dbgHorizontal — только горизонтальная полоса прокрутки;
  • dbgVertical — только вертикальная полоса прокрутки;
  • dbgBoth — горизонтальная и вертикальная полосы прокрутки;
  • dbgAutomatic — полосы прокрутки появляются только при необходимости.

Раскрывающийся список MarqueeStyle позволяет задать способ выделения выбранной ячейки.

Параметры области, расположенной в нижней части вкладки, служат для определения размеров разделов. С помощью списка SizeMode задается способ установления размеров разделов, в нем содержатся следующие значения:

Значение | Описание
dbgScalable | Размеры разделов пропорциональны между собой. Пропорция задается с помощью свойства size каждого раздела
dbgExact | Для того чтобы задать размер раздела точным числом, выберите это значение списка и введите в поле Size нужный размер


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Format

Вкладка Format (Формат) (рис. 17.35) предназначена для определения формата отображения данных в столбцах. В раскрывающемся списке Format

Рис. 17.35. Вкладка Format диалогового окна Property Pages

Item выбирается настраиваемый столбец и с помощью списка Format Type устанавливается тип данных.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание компонентов ActiveX для управления данными

В начале главы мы рассмотрели создание приложений с использованием компонентов ADO (ActiveX Data Object). Однако иногда вас могут не устраивать предлагаемые стандартные средства. Это может быть в том случае, если создаваемое приложение имеет специфические особенности, а также, если вы хотите унифицировать элементы интерфейса и использовать их в нескольких формах, а может быть и в нескольких приложениях. Решением в подобной ситуации становится создание собственных ActiveX-компонентов. В данном разделе рассмотрим несколько примеров создания таких компонентов.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание компонента ownNavigator

Создадим ActiveX-компонент, который может являться источником данных для других компонентов и использоваться для перемещения по записям в базе данных и осуществления простейших операций по модификации ее содержимого. Для создания ActiveX-компонента откройте новый проект типа ActiveX Control. Он будет содержать единственный ActiveX-компонент — userControll. Присвойте проекту имя ownDataControls, а компоненту — ownNavigator.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Размещение элементов управления

ActiveX-компонент будем создавать на основе стандартных элементов управления. Добавьте в него шесть кнопок управления (рис. 17.36) и задайте для них приведенные ниже значения свойств Name и caption.

Рис. 17.36. Размещение кнопок управления

Значение свойства Name | Значение свойства Caption
cmdFirst | &Начало
cmdPrev | На&зад
cmdNext | В&перед
cmdLast | &Конец
cmdinsert | &Добавить
cmdDelete | &Удалить


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Осуществление доступа к данным

Теперь надо определить средства доступа к данным. Для этих целей будем использовать технологию ADO (ActiveX Data Objects). Чтобы получить набор строк источника данных, воспользуемся объектами Recordset и Connection.

Добавьте в исходный код модуля ownNavigator описание используемого объекта Recordset:

Dim WithEvents mrstMain As ADODB.Recordset

Добавьте также в исходный код объекта connection, используемого для соединения с сервером, следующий код:

Dim WithEvents mcnnMain As ADODB.Connection

Ключевое слово WithEvents, включенное в описание этих объектов, позволит обрабатывать связанные с ними события.

Теперь рассмотрим создание описанных объектов, осуществление соединения и выборки записей. Чтобы можно было программно управлять этим процессом на этапе дальнейшего использования компонента ownNavigator, добавим два общедоступных метода OpenRecordset и CloseRecordset:

Public Sub OpenRecordset ()

If mcnnMain Is Nothing Then

'создаем Connection

Set mcnnMain = New ADODB.Connect ion

'устанавливаем его параметры

mcnnMain.CursorLocation = adUseClient

mcnnMain.Provider = "SQLOLEDB.1"

mcnnMain.CommandTimeout = 300

'строка для соединения, имя пользователя, пароль

mcnnMain.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"

End If

If mrstMain Is Nothing Then

'создаем Recordset

Set mrstMain = New ADODB.Recordset

'открываем Recordset

mrstMain.Open "customer", mcnnMain, adOpenKeyset, adLockOptimistic, adCmdTable

If Not (mrstMain.BOF And mrstMain.EOF) Then mrstMain.MoveFirst

End If

End Sub

Public Sub CloseRecordset ()

'если Recordset открыт — закрываем

If mrstMain.State о adStateClosed Then mrstMain.Close

'уничтожаем Recordset

Set mrstMain = Nothing

'если Connection открыта — закрываем

If mcnnMain.State <> adStateClosed Then mcnnMain.Close

'уничтожаем Connection

Set mcnnMain = Nothing

End Sub

Замечание

В данном примере для простоты мы задали фиксированные параметры источника данных. Способы устранения подобных ограничений и придания гибкости ActiveX-компоненту будут рассмотрены ниже.

Объект Recordset осуществляет выборку из таблицы Customer и позволяет не только просматривать, но и редактировать записи (параметр adOpenKeyset). При открытии Recordset текущая позиция устанавливается перед первой записью. Естественно, что мы не получим при этом никаких данных. Для того чтобы выполнить перемещение на первую доступную запись, можно воспользоваться методом MoveFirst. Однако, если набор записей пуст, подобные действия приведут к ошибке. Проанализировать данную ситуацию можно с помощью свойств BOF и EOF объекта Recordset. Первое принимает значение True в том случае, если текущая позиция находится перед первой записью, второе истинно, если текущая позиция — за последней записью. Если они принимают значение True одновременно, значит Recordset не содержит ни одной записи. При закрытии источника данных осуществляется проверка, открыты ли они на данный момент, что позволяет гарантировать отсутствие ошибочной ситуации повторного закрытия.

Теперь рассмотрим действия, необходимые для перемещения по записям результирующего множества. Для этого напишем коды обработки событий при нажатии на соответствующие кнопки. По существу, каждая из кнопок будет просто вызывать соответствующие методы объекта Recordset.

Private Sub cmdFirst_Click()

mrstMain.MoveFirst

End Sub

Private Sub cmdPrev_Click()

mrstMain.MovePrevious

If mrstMain.BOF Then

inrstMain.MoveFirst

End If

End Sub

Private Sub cmdNext_Click()

mrstMain.MoveNext

If mrstMain.EOF Then

mrstMain.MoveLast

End If

End Sub

Private Sub cmdLast_Click()

mrstMain.MoveLast

End Sub

Заметим, что после перемещения на новую запись с помощью методов MovePrevious или MoveNext текущая позиция может оказаться за пределами выбранных записей. Для предотвращения этой ситуации осуществляется проверка с помощью свойств BOF и EOF.

Итак, создан ActiveX-компонент, который позволяет перемещаться по записям в таблице базы данных. Однако он не способен отображать их на экране. Для отображения данных в Visual Basic существует множество готовых элементов управления, например, TextBox. Для связывания элемента управления с результирующим множеством будем использовать стандартный механизма Data Binding, то есть для объекта TextBox зададим свойства DataSourse, DataMember И DataField. Чтобы создаваемый нами компонент мог выступать в роли объекта-источника, установим свойство DataSourceBehavior нашего объекта ownNavigator равным vbDataSource (рис. 17.37).

Рис. 17.37. Определение свойства DataSourceBehavior

Теперь необходимо определить действия, выполняемые при инициализации объекта и при его уничтожении:

Private Sub OserControl Initialize()

OpenRecordset

DataMembers.Add "Main"

End Sub

Private Sub UserControl_Terminate()

DataMembers.Clear

CloseRecordset

End Sub

В данном примере мы осуществляем доступ к одному объекту Recordset. Если их несколько в одном объекте-источнике, осуществлять выбор нужного позволит деление на несколько разделов DataMember. Для успешной работы этого механизма следует описать обработку события Get DataMember объекта userControl, которое происходит при попытке внешних объектов запросить содержимое раздела. Это событие передает параметр DataMember, где в виде строки задан требуемый раздел DataMember. Следует возвратить внешним объектам ссылку на соответствующий объект Recordset (или другой подобный источник) путем присвоения значения параметру Data данного события. В нашем случае это выглядит следующим образом:

Private Sub UserControl GetDataMember(DataMember As String, Data As Object)

If DataMember = "Main" Then

Set Data = mrstMain Else

MsgBox "DataMember " & DataMember & " не найден"

End If

End Sub


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Тестирование ActiveX-компонента

До сих пор мы разрабатывали новый ActiveX-компонент, но не могли видеть результатов его работы. Перейдем теперь к его тестированию.

Создадим с помощью команды Add Project (Добавить проект) меню File (Файл) тестовый проект типа Standard EXE. Теперь он будет находиться в одной проектной группе с нашим проектом ownDatacontrois. Присвойте ему имя Testproject, а всей группе — TestGroup. Мы будем использовать их для отладки создаваемых нами компонентов ActiveX.

Чтобы новый элемент управления стал доступен в проекте Testproject, необходимо закрыть окно View Object, отображающее содержимое объекта ownNavigator. На панели инструментов появляется новый значок Я. Так обозначается созданный нами компонент. Добавьте компонент в форму проекта Testproject, увеличьте его размер, чтобы он был виден целиком.

Далее добавьте стандартные элементы управления Label и TextBox, как показано на рис. 17.38.

Рис. 17.38. Форма для тестирования компонента ownNavigator

В окне Properties элементов управления типа TextBox выберите свойство DataSource и раскройте список доступных объектов-источников. В нем появился добавленный в форму объект ownNavigatorl — экземпляр созданного нами элемента управления. Выберите его. Затем установите для свойства DataMember значение Main. На следующем шаге выберите для каждого элемента управления типа TextBox поле результирующей выборки.

Предупреждение

Если вы не позаботитесь о том, чтобы Recordset открывался сразу при инициализации объекта на этапе проектирования, то не будете иметь возможности выбирать поля среди доступных в Recordset.

Настройте соответствующим образом свойства caption объектов типа Label.

Назначьте проект Testproject основным проектом группы. Для этого выберите его в окне Project Group, нажмите правую кнопку мыши'и выберите из контекстного меню команду Set as Start Up (рис. 17.39) Имя проекта при этом выделится жирным шрифтом.

Теперь запустите созданный проект на выполнение. Для этого выполните команду Start меню Run или нажмите клавишу <F5>. Созданная нами форма просмотра данных из таблицы Customer приведена на рис. 17.40.

Рис. 17.39. Выбор основного проекта группы проектов

Рис. 17.40. форма просмотра списка покупателей

Замечание

Для создания формы просмотра покупателей мы не написали ни строчки кода. Это одно из преимуществ использования ActiveX-компонентов: вы можете выделять общие для создаваемого приложения программные решения и добавлять их в свои собственные компоненты. Такой подход поможет придать вашим приложениям схожий внешний вид, упростит отладку и последующее их сопровождение. При обнаружении ошибок или изменениях в интерфейсе потребуется скорректировать только созданные вами компоненты и выпустить их новую версию. При этом даже не возникнет необходимости в повторной компиляции готовых приложений.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление и вставка записей

Вернемся к нашему проекту. Вы можете не только просматривать, но и изменять данные. Например, введите в поле Организация текст ОАО Теремок и переместитесь на другую запись. При этом произведенные вами изменения будут внесены в базу данных. Чтобы это проверить, вернитесь на предыдущую запись и убедитесь, что наименование организации изменено. Мы можем редактировать данные, однако нельзя добавить новую запись или удалить существующую. Исправим это. Мы уже предусмотрели в нашем элементе управления соответствующие кнопки Добавить и Удалить, теперь осталось описать те действия, которые будут выполняться при их нажатии.

Остановите работу приложения. Откройте окно редактора кода для компонента ownNavigator и добавьте следующие строки:

Private Sub cmdinsert Click()

mrstMain.AddNew

End Sub

Private Sub cmdDelete_Click ()

mrstMain.Delete

End Sub

По сути дела мы просто перекладываем свою работу на объект Recordset, вызывая его стандартные методы AddNew и Delete.

Запустите приложение и нажмите кнопку Добавить. Содержимое всех полей очистится, и в них можно ввести новые значения. Не забывайте о том, что некоторые поля в нашей таблице не допускают ввода пустых значений. Если этого не учитывать, то при добавлении новой строки может возникнуть ошибка. Итак, вы ввели все необходимые данные, теперь переместитесь на предыдущую запись так же, как это было в случае редактирования данных, описанном выше. В этом момент произойдет вставка новой строки. Вы можете найти новую строку, переместившись на последнюю запись с помощью кнопки Конец.

Для удаления записи нажмите кнопку Удалить. Запись будет удалена из таблицы, но не с экрана. Однако если вы покинете эту запись, то не сможете вернуться на нее вновь, поскольку ее уже не существует.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Совершенствование созданного компонента

Несмотря на то, что созданный компонент потенциально может осуществлять доступ и управлять отображением любой таблицы из базы данных, он имеет ограничения в применении, поскольку имя обрабатываемой таблицы, имя сервера, имя базы данных, имя пользователя и его пароль зафиксированы внутри его кода. Чтобы снять эти ограничения, добавим нашему компоненту ownNavigator пять свойств: Server, Database, User, Password, Table.

Public Property Let Server(ByVal newServer As String)

mstrServer = newServer

PropertyChanged "Server"

End Property

Public Property Get Server () As String

Server = mstrServer

End Property

Public Property Let Database(ByVal newDatabase As String)

mstrDatabase = newDatabase

PropertyChanged "Database"

End Property

Public Property Get Database () As String

Database = mstrDatabase

End Property

Public Property Let User(ByVal newUser As String)

mstrUser = newUser

PropertyChanged "User"

End Property

Public Property Get User() As String

User = mstrUser

End Property

Public Property Let Password(ByVal newPassword As String)

mstrPassword = newPassword

PropertyChanged "Password"

End Property

Public Property Get Password() As String

Password = mstrPassword

End Property

Public Property Let Table(ByVal newTable As String)

mstrTable = newTable

PropertyChanged "Table"

End Property

Public Property Get Table() As String

Table = mstrTable

End Property

Для хранения значений этих свойств объявим пять строковых переменных.

Dim rostrServer As String

Dim mstrDatabase As String

Dim mstrUser As String

Dim mstrPassword As String

Dim mstrTable As String

Чтобы значения этих свойств можно бьыо настраивать в интегрированной среде разработки Visual Basic, необходимо также описать события Readproperties и Writeproperties. Для первичной инициализации значений этих свойств воспользуемся событием initproperties.

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Server = PropBag.ReadProperty("Server", "")

Database = PropBag.ReadProperty("Database", "")

User = PropBag.ReadProperty("User", "")

Password = PropBag.ReadProperty("Password", "")

Table = PropBag.ReadProperty("Table", "")

End Sub

Private Sub UserControl Writeproperties(PropBag As PropertyBag)

PropBag.WriteProperty "Server", Server, ""

PropBag.WriteProperty "Database", Database, ""

PropBag.WriteProperty "User", User, ""

PropBag.WriteProperty "Password", Password, ""

PropBag.WriteProperty "Table", Table, ""

End Sub

Private Sub UserControl Initproperties ()

Server = ""

Database = ""

User = ""

Password = ""

Table = ""

End Sub

Теперь надо изменить метод openRecordset следующим образом:

Public Sub OpenRecordset()

On Error.Goto err_occur

If mcnnMain Is Nothing Then

'создаем Connection

Set mcnnMain = New ADODB.Connection

'устанавливаем его параметры

mcnnMain.CursorLocation = adUseClient

mcnnMain.Provider = "SQLOLEDB.1"

mcnnMain.CommandTimeout = 300

'строка для соединения, имя пользователя, пароль

mcnnNain.Open "Data Source= " & Server & "; Initial Catalogs" & Database, User, Password

End If

If mrstMain Is Nothing Then

'создаем Recordset

Set mrstMain = New ADODB.Recordset

'открываем Recordset

mrstMain.Open Table, mcnnMain, adOpenKeyset, adLockOptimistic, adCmdTable

If Not (mrstMain.BOF And mrstMain.EOF) Then mrstMain.MoveFirst

End If

Exit Sub

err_occur:

MsgBox "Ошибка при открытии базы данных."

End Sub

Здесь вместо фиксированных значений параметров открытия используются значения соответствующих свойств. Помимо этого добавлена обработка ошибок, которые могут возникать при открытии с неверными параметрами.

Теперь вы можете использовать компонент ownNavigator для доступа к любым таблицам выбранной вами базы данных.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Компонент ownSlider

До сих пор для отображения данных мы пользовались стандартными объектами типа TextBox. Создадим свой собственный компонент ownslider, который бы смог соединяться с объектом-источником (например, с созданным нами ownNavugator) и отображать данные, получаемые от него. При создании нового компонента не будем использовать стандартные компоненты типа command, TextBox или любых других. Все операции по отображению данных на экране возьмем на себя.

Созданный нами компонент будет отображать числовые значения в виде синей полоски, размер которой пропорционален значению value, получаемому из базы данных. Полоса будет занимать всю ширину объекта, когда value достигнет значения Limit. Кроме того, при установке фокуса на объекте ограничивающая его черная рамочка будет прорисовываться жирной линией, а при потере фокуса вновь становиться тонкой. Когда фокус находится на нашем компоненте ownsiider, мы сможем менять значение value с помощью клавиш-стрелок <<--> и <-->> на клавиатуре. При этом оно будет увеличиваться или уменьшаться на заданную величину Step.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление компонента к проекту

Для добавления компонента к проекту в окне Project Group установите указатель на проекте ownControls и щелкните правой кнопкой мыши, затем выберите команду Add (Добавить) и затем значение UserControl. К нашему проекту будет добавлен еще один компонент. Назовите его ownslider. Откройте окно редактора кода и введите там следующий текст, описывающий необходимые свойства и переменные:

Dim rnlngValue As Long

Dim rnlngLimit As Long

Dim rnlngStep As Long

Public Property Get Value() As Long

Value = rnlngValue

End Property

Public Property Let Value(ByVal NewValue As Long)

If NewValue >= 0 Then rnlngValue == NewValue Else rnlngValue = 0

PaintView

PropertyChanged "Value"

End Property

Public Property Get Limit() As Long

Limit = rnlngLimit

End Property

Public Property Let Limit(ByVal NewLimit As Long)

If NewLimit > 0 Then rnlngLimit = NewLimit Else rnlngLimit = 1

PaintView

PropertyChanged "Limit"

End Property

Public Property Get Step() As Long

Step = rnlngStep End Property

Public Property Let Step(ByVal NewStep As Long)

If NewStep > 0 Then rnlngStep = NewStep Else rnlngStep = 1

PaintView

PropertyChanged "Step"

End Property

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Limit = PropBag.ReadProperty("Limit", 1000000)

Value = PropBag.ReadProperty("Value", 500000)

Step = PropBag.ReadProperty("Step", 1000)

End Sub

Private Sub UserControl WriteProperties(PropBag As PropertyBag)

PropBag.WriteProperty "Limit", Limit, 1000000

PropBag.WriteProperty "Value", Limit, 500000

PropBag.WriteProperty "Step", Step, 1000

End Sub

Private Sub UserControl_InitProperties ()

Limit = 1000000

Value = 500000

Step = 1000

End Sub

При изменении значения каждого из этих свойств запускается процедура перерисовки объекта:

Private Sub PaintView()

'установить позицию карандаша в верхний левый угол

CurrentX = 0

CurrentY = 0

'установить ширину линии в зависимости от признака фокуса

If HaveFocus Then DrawWidth = ScaleHeight / 50

Else DrawWidth = ScaleHeight / 500

'прорисовать белый прямоугольник по всей площади компонента

Line (0, 0)-(Width - 10, Height - 10), &H80000005, BF

'нарисовать синюю полоску в зависимости от значения Value

Line (0, 0)-((Value / Limit) * Width - 10, Height - 10), &H8000000D, BF

'отобразить значение Value в текстовой форме поверх изображения желтым цветом с контрастной черной тенью

ForeColor = &HO&

CurrentX = 10

CurrentY = Height /2-90

Print Value

ForeColor = &HFFFF&

CurrentX = 0

CurrentY = Height / 2 - 100

Print Value

'нарисовать ограничивающую рамку

Line (0, 0)-(Width - 10, Height - 10), &НО, В

End Sub

При возникновении события paint также следует вызывать перерисовку, так как это событие происходит всякий раз, когда системе требуется отобразить объект:

Private Sub UserControl_Paint()

PaintView

End Sub

Для контроля за фокусом предусмотрим переменную HaveFocus, значение которой будет устанавливаться при возникновении событий GotFocus и LostFocus. Таким образом, когда наш объект имеет фокус, значение переменной HaveFocus равно True, в противном случае HaveFocus имеет значение False.

Dim HaveFocus As Boolean

Private Sub UserControl_GotFocus()

HaveFocus = True

PaintView

End Sub

Private Sub UserControl_LostFocus()

HaveFocus = False

PaintView

End Sub

Чтобы обрабатывать нажатие клавиш <<--> и <-->>, установим в окне Properties для свойства Keypreview компонента значение True и опишем реакцию на событие KeyDown:

Private Sub UserControl KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyLeft

Value = Value - Step

Case vbKeyRight

Value = Value + Step

End Select

End Sub

Как вы видите, нет необходимости заниматься перерисовкой, поскольку она автоматически происходит при присвоении нового значения свойству value.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Связывание с объектом-источником

Наш компонент уже почти готов. Осталось добавить для него возможность связываться с объектом-источником. Для этого необходимо создать свойство компонента ownSlider, которое будет определять параметры связи с базой данных. Для этого в меню Tools (Сервис) выберите команду Procedure Attributes (Атрибуты процедуры). Откроется диалоговое окно Procedure Attributes (рис. 17.41).

Из списка Name выберите свойство value, так как именно его мы собираемся связать с объектом-источником. Нажмите кнопку Advanced, чтобы получить возможность производить дополнительные настройки. Установите флажки Property is data bound, This property binds to DataField и Update immediate.

В поле Desctiption введите описание свойства. Оно будет появляться в нижней части окна Properties.

Рис. 17.41. Диалоговое окно Procedure Attributes

Теперь удалите из формы тестового проекта компонент Text 11 и добавьте вместо него новый компонент ownsiiderl. Вы увидите, что у нашего компонента тоже появились свойства DataSourse, DataMember И DataField.

Для свойства DataSource выберите значение ownNavigatorl, для свойства DataMember — значение Main, а для DataField — Creuitlimit.

Запустите приложение. Теперь вы можете видеть созданный компонент в действии (рис. 17.43).

Однако, если вы попробуете изменить значение компонента с помощью клавиш-стрелок, вас ждет разочарование. Значения будут меняться, но не будут заноситься в базу данных. Чтобы проверить это, перейдите к следующей строке и вернитесь назад. Все дело в том, что мы не сообщили объекту-источнику, что значение, хранимое нашим объектом ownsiider, было изменено пользователем и отличается от того значения, что получено из базы данных, а следовательно, имеется необходимость в корректировке записи. Чтобы устранить этот недостаток, измените код события KeyDown так, как показано ниже:

Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyLeft

Value = Value — Step

Extender.DataChanged = True

Case vbKeyRight

Value = Value + Step

Extender.DataChanged = True

End Select

End Sub

Здесь мы в объекте Extender, относящемся к ownslider, устанавливаем признак того, что данные были изменены. Объект-источник опрашивает Extender и получает необходимую информацию. Теперь, если вы запустите приложение, то убедитесь, что все в полном порядке.

Рис. 17.43. Форма в режиме выполнения


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 17. Управление данными.

В настоящей главе обсудим создание форм для ввода и редактирования данных с использованием компонентов ADO (ActiveX Data Object). Технология ADO является новейшим средством доступа к различным типам данных, которую рекомендуется применять при разработке приложений в Visual Basic 6.0.

ADO позволяет программе получить доступ к базе данных с помощью провайдера OLE DB, который представляет собой интерфейс, обеспечивающий доступ к различным источникам данных.

При использовании ADO нам встретятся две основные группы объектов.

  • Элементы управления данными. Элемент ADO Data control используется для непосредственного подключения к базе данных. С помощью этого объекта можно достаточно легко подключиться к базе данных любого типа.
  • Элементы объектного интерфейса. Библиотека ADO предоставляет в ваше распоряжение большой выбор объектов для работы с данными. В список входят такие объекты, как таблица, список, раскрывающийся список и т. д.

    Замечание

    Следует отметить, что управлять данными можно непосредственно с помощью программного кода или использовать обычные элементы управления Visual Basic.

Подключение компонентов ADO к проекту

Чтобы использовать компоненты ADO в проекте, необходимо подключить библиотеки, которые их содержат. Для этого вам необходимо в меню Project (Проект) выбрать команду References (Ссылки), а затем в диалоговом окне References (рис. 17.1) установить флажки рядом с наименованиями следующих библиотек:

  • Microsoft ActiveX Data Objects 2.1 Library;
  • Microsoft ActiveX Data Objects Recordset 2.1 Library.

Рис. 17.1. Диалоговое окно References

Для того чтобы использовать элементы управления, которые применяю! технологию ADO при создании и редактировании форм, необходимо эти компоненты поместить на панель инструментов. Для этого в меню Project (Проект) выберите команду Components (Компоненты) и в диалоговом окне Components установите флажки рядом с именами следующих компонентов:

  • Microsoft ADO Data Control 6.0 (OLEDB);
  • Microsoft DataGrid Control 6.0 (OLEDB);
  • Microsoft DataList Controls 6.0 (OLEDB);
  • Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB).

Элемент управления ADO Data Control

В Visual Basic появился новый объект для управления данными — ADO Data control, который имеет непосредственную связь с набором записей и позволяет пользователю перемещаться по нему в любом направлении.

Рис. 17.2. Размещение объекта ADO Data Control в форме

На рис. 17.2 показан размещенный в форме элемент управления ADO Data Control. Он состоит из пяти объектов, представленных в табл. 17.1.

Таблица 17.1. Объекты, входящие в состав элемента управления ADO Data Control
Объект | Назначение
 | Осуществляет переход на первую запись
 | Осуществляет переход на предыдущую запись
<заголовок> | Отображает заголовок элемента, определяемый свойством Caption
 | Осуществляет переход на следующую запись
 | Осуществляет переход на последнюю запись

Элемент управления ADO Data Control обладает свойствами, описанными в табл. 17.2.

Таблица 17.2. Свойства элемента управления ADO Data Control
Свойство | Описание
BOF и EOF | Свойства, которые содержат признак того, что текущая строка находится перед первой строкой или после последней строки, соответственно
CacheSize | Количество строк, выбираемых в память
CommandTimeout | Время ожидания выполнения команды, после превышения которого выдается сообщение об ошибке
CornmandType | Тип выполняемой команды
ConnectionString | Содержит информацию, необходимую для соединения с источником данных
ConnectionTimeout | Время ожидания соединения с источником данных, после превышения которого выдается сообщение об ошибке
CursorLocation | Устанавливает или возвращает местонахождение курсора
CursorType | Тип курсора, используемый в объекте Recordset
LockType | Тип блокировки
MaxRecords | Максимальное количество строк, передаваемых объекту Recordset
Mode | Устанавливает ограничения для редактирования данных
Password | Пароль, который будет использоваться при доступе к данным
Recordset | Возвращает или устанавливает ссылку на объект Recordset
RecordSource | Данное свойство содержит наименование таблицы или запроса и определяет содержимое объекта Recordset
UserName | Имя пользователя, используемое при создании объекта

Элемент управления ADO Data control характеризуется событиями, описанными в табл. 17.3.

Таблица 17.3. События элемента управления ADO Data Control
Событие | Описание
EndOfRecordset | Возникает при достижении последней записи в объекте Recordset
FetchComplete | Возникает после заполнения всех записей в объекте Recordset
FetchProgress | Возникает периодически во время заполнения записей в объекте Recordset
WillChangeField, FieldChangeComplete | Данные события возникают соответственно до и после изменения какого-либо поля или полей в объекте Recordset
WillChangeRecord, RecordChangeComplete | Данные события возникают соответственно до и после изменения какой-либо записи или записей в объекте Recordset
WillChangeRecordset, RecordsetChangeComplete | Первое событие возникает до изменения данных в объекте Recordset, а второе — после изменения данных
WillMove, MoveComplete | События возникают соответственно до и после изменения текущей позиции в объекте Recordset

Соединение элемента с источником данных

Для соединения элемента управления ADO Data Control с источником данных используется свойство ConnectionString диалогового окна Properties (Свойства). Чтобы ввести информацию в это свойство, нажмите кнопку с тремя точками в правом столбце свойства. Откроется диалоговое окно Ргоperty Pages (рис. 17.3), в котором можно будет настроить соединение с источником данных тремя способами, используя:

  • файл Data Link;
  • источник данных ODBC;
  • строки соединения с источником данных.

Рис. 17.3. Диалоговое окно для настройки строки соединения с источником данных

Если вы хотите настроить соединение с источником данных с помощью файла Data Link, то вам необходимо выбрать опцию Use Data Link File и с помощью кнопки Browse выбрать в диалоговом окне Open нужный файл.

Для соединения с источником данных с помощью ODBC установите опцию Use ODBC Data Source Name и в раскрывающемся списке выберите требуемый источник данных ODBC. Если в списке отсутствует источник данных, который вы хотели бы использовать, то нажмите кнопку New для вызова мастера настройки нового источника данных ODBC.

Третий способ настройки соединения с источником данных подразумевает непосредственный ввод строки соединения. Для использования строки соединения с источником данных выберите опцию Use Connection String и введите вручную текст строки в расположенное под опцией поле. Для формирования строки соединения служит диалоговое окно Data Link Properties (Свойства связи с данными) (рис. 17.4), которое открывается при нажатии на кнопку Build, расположенную справа от поля ввода.

Диалоговое окно Data Link Properties содержит четыре вкладки. На вкладке Privider (Поставщик услуг) в списке OLE DB Privider(s) (Поставщики OLE DB) вам необходимо выбрать поставщика услуг данных. Для продолжения настройки нажмите кнопку Next (Далее) или выберите вкладку Connection (Подключение) (рис. 17.5), на которой вы можете настроить соединение.

Рис. 17.4. Диалоговое окно Data Link Properties

Рис. 17.5. Вкладка Connection диалогового окна Data Link Properties

Замечание

Для каждого поставщика данных параметры для настройки соединения различны. В качестве примера рассмотрим вариант для настройки соединения с базой данных SQL Server 7.0.

Как видно из рисунка, в первую очередь надо выбрать из раскрывающегося списка наименование сервера баз данных. После этого необходимо ввести информацию о пользователе, которая включает в себя псевдоним пользователя и пароль. Последним этапом настройки соединения будет выбор базы данных из раскрывающегося списка или путем ввода имени базы данных в поле ввода.

На вкладке Advanced (Дополнительно) (рис. 17.6) размещены дополнительные параметры для настройки соединения с источником данных.

В области Network settings (Параметры сети) вкладки Advanced расположены следующие раскрывающиеся списки:

Список | Описание
Impersonation level | Уровень представления, используемый сервером при исполнении роли клиентов
Protection level | Определяет уровень защиты данных при обмене между сервером и клиентом

В области Other (Другое) вкладки Advanced размещены дополнительные параметры настройки соединения. Поле ввода Connect timeout (Время ожидания соединения) устанавливает промежуток времени, через который после начала соединения попытка соединения прекращается.

С помощью списка Access permissions (Права доступа) можно установить ограничения для работы с данными.

На вкладке All (Все) (рис. 17.7) диалогового окна Data Link Properties предоставляется возможность изменять все свойства, которые допустимы для выбранного поставщика данных.

Рис. 17.6. Вкладка Advanced диалогового окна Data Link Properties

Рис. 17.7. Вкладка All диалогового окна Data Link Properties

Для изменения параметра выполните следующие действия:

1. Выберите свойство, которое необходимо изменить.

2. Нажмите кнопку Edit Value (Изменить значение), расположенную в нижней части диалогового окна.

3. В открывшемся диалоговом окне Edit Property Value (Изменение значения свойства) введите значение свойства в поле Property Value (Значение свойства).

4. После изменения значения свойства нажмите кнопку ОК. Для отмены изменений нажмите кнопку Cancel (Отмена).

Определение источника записей

После того как для элемента управления ADO Data control было настроено соединение с источником данных, можно приступить к определению источника записей. Для этого в диалоговом окне Property Pages элемента управления ADO Data Control перейдите сначала на вкладку Authentication (рис. 17.8), и введите имя пользователя и пароль для активизации соединения с источником данных.

Рис. 17.8. Вкладка Authentication диалогового окна Property Pages

Затем можно непосредственно перейти к настройке источника записей, воспользовавшись вкладкой RecordSource (Источник записи) (рис. 17.9) диалогового окна Property Pages.

Параметры настройки данной вкладки описаны в табл. 17.4.

Таблица 17.4. Параметры настройки вкладки RecordSource
Объект | Описание
CommandType (Тип команды) | Раскрывающийся список предназначен для выбора типа команды, которая будет использоваться для получения источника записей
Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры) | Если в качестве источника записей выбрана таблица или хранимая процедура, то в данном раскрывающемся списке можно выбрать наименование хранимой процедуры или таблицы
Command Text (SQL) (Текст команды) | В текстовое поле вводится SQL-выражение или какая-либо другая команда, которая может возвращать источник записей

Рис. 17.9. Вкладка RecordSource для настройки источника записей

Использование элемента ADO Data Control в форме

Рассмотрим использование элемента ADO Data Control в форме. Для этого выполните следующие действия:

1. Откройте новый проект.

2. Разместите в форме проекта элемент управления ADO Data control. Для этого дважды щелкните кнопку Adodc ¦Я на панели элементов управления.

3. Настройте соединение с источником данных для элемента управления ADO Data Control, как это было описано выше.

4. После настройки соединения с источником данных перейдите к настройке источника записей. Для этого вызовите диалоговое окно Property Pages для элемента ADO Data control. Перейдите на вкладку RecordSource и в раскрывающемся списке Command Type выберите значение adCmdTable. Из списка Table or Stored Procedure Name (Наименование таблицы или хранимой процедуры) выберите таблицу Customer с информацией о клиентах.

5. После настройки элемента ADO Data Control можно приступить к размещению в форме элементов управления для отображения данных из таблицы. Для удобства рекомендуется располагать элементы таким образом, чтобы пользователю было удобно работать с формой. На рис. 17.10 показано размещение элементов для просмотра информации о покупателях.

Рис. 17.10. Форма с размещенными элементами управления для просмотра информации о покупателях

Рис. 17.11. форма для просмотра покупателей в режиме выполнения

6. Далее необходимо связать элементы отображения данных с элементом ADO Data control. Для каждого элемента управления выполните следующие действия:

  • выберите элемент, который необходимо связать с источником записей;
  • в окне Properties выбранного элемента из раскрывающегося списка свойства DataSource (Источник данных) выберите элемент ADO Data control, который был размещен на форме;
  • после того как элемент связан с источником записей, необходимо связать его с полем таблицы. Для этого используйте свойство DataField (Поле данных), из списка которого выберите требуемое поле таблицы.

7. После завершения настройки всех элементов формы, запустите проект на выполнение и просмотрите полученный результат (рис. 17.11).

Использование окружения данных при создании формы

Гибким и удобным способом соединения с источником данных является использование в проекте окружения данных (Data Environment). Основное его преимущество заключается в том, что при необходимости изменения параметров соединения с базой данных вам будет достаточно изменить эти параметры в окружении данных для объекта connection, и все объекты Command, связанные с ним, будут учитывать эти изменения. Если же в каждой форме настроено отдельное соединение, то вам придется исправлять изменившиеся параметры во всех формах.

Рис. 17.12. Конструктор для редактирования окружения данных

Для создания окружения данных в проекте выполните команду Add Data Environment (Добавить окружение данных) меню Project (Проект). На экране появится конструктор для редактирования окружения данных (рис. 17.12).

Автоматически в окружении данных создается объект Connection, представляющий собой соединение с источником данных. Настройка соединения осуществляется так же, как и для элемента управления ADO Data control.

После того как соединение подготовлено, можно приступить к созданию объекта command. Данный объект можно создать двумя способами.

  • Выберите соединение и нажмите кнопку Add Command на панели инструментов окна DataEnvironment. В папке Commands появится новая команда с активным соединением, которое было выбрано.
  • Установите курсор на папку Commands, нажмите правую кнопку мыши и выберите из появившегося контекстного меню команду Add Command.

Настройка объекта Command

Настройка параметров объекта command в общем похожа на настройку источника записей для ADO Data control. Различие состоит в том, что при настройке параметров для объектов Command предоставляется возможность определять большее количество параметров.

Для вызова диалогового окна Свойства (рис. 17.13) объекта command выполните следующие действия:

1. Выберите определяемый объект Command.

2. Нажмите правую кнопку мыши и выберите из контекстного меню команду Properties (Свойства).

Рис. 17.13. Диалоговое окно Свойства для объекта Command

В поле ввода Command Name задается наименование объекта command. Раскрывающийся список Connection позволяет указать соединение, с помощью которого объект получает доступ к источнику данных.

В области Source of Data расположен переключатель, позволяющий указать источник записей. Если выбрана опция Database Object, то в одноименном раскрывающемся списке можно выбрать один из объектов базы данных, описанных в табл. 17.5.

Таблица 17.5. Обьекты базы данных, используемые для указания источника записей
Объект базы данных | Назначение
Stored Procedure | С помощью объекта Command вызывается на выполнение хранимая процедура базы данных
Table | Данные выбираются из таблицы
View | Данные выбираются из представления, созданного в базе данных
Synonym | Источником записей объявляется синоним, являющийся объектом базы данных

После того как задан тип объекта базы данных, необходимо с помощью раскрывающегося списка Object Name (Имя объекта) выбрать имя объекта.

Иногда приходится сталкиваться с ситуациями, когда невозможно использовать ни один из выше перечисленных объектов базы данных. В таком случае в диалоговом окне предоставляется возможность для самостоятельного написания текста команды. Для этого вам необходимо в области Source of Data выбрать опцию SQL Statement и в поле редактирования SQL Statement ввести текст команды.

Вкладка Parameters

Вторая вкладка диалогового окна Свойства имеет название Parameters (Параметры) (рис. 17.14) и используется для задания параметров выбранной команды.

В области Parameters вкладки расположен список всех параметров. В правой части вкладки Parameters расположена область Parameters Properties, содержащая поля для определения хранимых процедур. Назначение этих полей описано в табл. 17.6.

Таблица 17.6. Параметры хранимой процедуры
Поле ввода | Назначение
Name | Наименование параметра
Direction | Тип направления параметра: Input, Output, InpuVOutput
Data Type | Тип данных параметра
Precision | Точность, с которой задается числовой параметр
Scale | Количество знаков после запятой для числовых параметров
Size | Максимальное значение числового параметра в байтах
Required | Указывает, является ли параметр обязательным
Value | Значение параметра

Рис. 17.14. Вкладка Parameters диалогового окна Свойства

Вкладка Relation

На вкладке Relation (Связь) (рис. 17.15) предоставляется возможность для установления соединения с родительским объектом command.

Для создания соединения необходимо установить флажок Relate to a Parent Command Object (Связь с родительским объектом command), расположенный в верхней части вкладки. Раскрывающийся список Parent Command предназначен для выбора вышестоящего объекта command, с которым связывается текущий объект.

В области Relation Definition (Определение связи) расположены параметры для настройки соединения.

Для добавления нового соединения выполните следующие действия:

1. Из раскрывающегося списка Parent Fields выберите поле вышестоящего Объекта Command.

2. Из списка Child Fields/Parameters выберите поле текущего объекта command.

3. Нажмите кнопку Add. Новое соединение добавляется в список, располагающийся в нижней части вкладки.

Если вам необходимо удалить соединение, то для этого выберите соединение и нажмите кнопку Remove.

Рис. 17.15. Вкладка Relation диалогового окна Свойства

Вкладка Grouping

Вкладка Grouping (Группировка) используется для определения группировки данных.

Флажок, расположенный в верхней части вкладки, в установленном состоянии позволяет выбрать поля, по которым будет осуществляться группировка. Поле Grouping Command Name области Grouping Definition (Определение группировки) позволяет задать наименование группировки для объекта command.

В списке Fields in Command размещены все доступные для группировки поля, а в списке Fields Used for Grouping — поля, по которым будет осуществляться группировка данных. Между списками расположены кнопки, позволяющие перемещать поля из одного списка в другой.

Вкладка Aggregates

Для получения итоговых значений по отдельным полям объекта command используется вкладка Aggregates.

Область Aggregates позволяет сформировать список переменных, являющихся итоговыми значениями. Под списком расположены две кнопки. Кнопка Add добавляет в список новую переменную, a Remove — удаляет выделенную в списке переменную.

В области Aggregate Settings вкладки расположены поля, предназначенные для настройки параметров переменной. В поле Name задается наименование переменной. Раскрывающийся список Function содержит список функций, используемых для вычисления следующих итоговых значений:

  • Any — значение поля;
  • Average — среднее значение поля;
  • Count — количество строк;
  • Maximum — максимальное значение поля;
  • Minimum — минимальное значение поля;
  • Standard Deviation — стандартное отклонение значения поля;
  • Sum — сумма значении поля.

Раскрывающийся список Aggregate on содержит два значения. При выборе значения Grouping значение переменной вычисляется по группе. Выбор значения Grand Total указывает на необходимость вычисления по всей выборке.

Из раскрывающегося списка Field можно выбрать поле объекта, по которому будет вычисляться итоговое значение.

После завершения настройки для сохранения всех изменений необходимо нажать кнопку Применить.

Вкладка Advanced

Вкладка Advanced используется для настройки дополнительных параметров объекта command.

В области Recordset Management вкладки расположены параметры для настройки источника записей.

Раскрывающийся список Cursor Type (Тип курсора) предназначен для установки типа курсора.

Замечание

Список Cursor Type доступен только при использовании курсора, размещенного на сервере.

Для выбора способа размещения курсора (на сервере или на клиенте) используется раскрывающийся список Cursor Location (Расположение курсора).

При работе с записями существует возможность блокировки отдельных записей при редактировании. Чтобы установить тип блокировки, используется раскрывающийся список Lock Type (Тип блокировки), в котором находятся следующие варианты блокировок:

Блокировка | Описание
Read Only | Блокировка при работе записей не используется, так как записи используются только для чтения
Pessimistic | Пессимистическая блокировка записей. Блокируется редактируемая запись. Освобождение от блокировки происходит при переходе на следующую запись
Optimistic | Оптимистическая блокировка записей. Позволяет редактировать текущую запись в других сеансах работы и блокирует запись только при сохранении данных на диске
Batch optimistic | Пакетная оптимистическая блокировка записей

В поле ввода Cache Size (Размер кэша) устанавливается размер кэша для объекта Command. По умолчанию устанавливается размер в 10 записей.

Для того чтобы объект command возвращал результирующее множество, необходимо установить флажок Recordset Returning.

Для настройки конфигурации объекта command используются параметры, расположенные в области Command Configuration:

Параметр | Описание
Command Timeout | В этом поле ввода устанавливается время, через которое при неудачной попытке обращения к объекту Command выполнение прерывается
Мах Records | Содержит максимальное количество строк, которое возвращается из объекта Command при выполнении
Prepare Before Execution | Данный флажок в установленном значении позволяет подготавливать объект Command к работе при первом обращении к нему
All Records | Если установить этот флажок, то объект Command при выполнении будет возвращать все записи

Область Advanced содержит поле ввода Call Syntax, которое позволяет использовать ADO для вызова хранимых процедур. Это может служить для увеличения количества параметров или установки значений параметров.

Размещение полей объекта Command в форме

Объект command удобно использовать при создании форм, предназначенных для просмотра и редактирования данных. Для создания формы редактирования списка покупателей выполните следующие действия:

1. Создайте в окружении данных новый объект Command. Выберите активное соединение для команды.

2. Настройте объект command таким образом, чтобы он выбирал данные из отдельной таблицы. В нашем случае это будет таблица Customer (Список покупателей).

3. Откройте форму проекта, в которой будете размещать поля объекта Command.

4. Для размещения в форме полей необходимо выбрать объект Command в окружении данных (рис. 17.19), нажать левую кнопку мыши и, удерживая ее в нажатом состоянии, перенести в форму. После чего отпустить кнопку мыши.

Рис. 17.19. Подготовка к размещению полей объекта Command в форме редактирования

На рис. 17.20 показан результат расположения полей в форме. Нужно отметить, что все размещенные объекты будут автоматически связаны с объектом Command. После запуска формы на выполнение можно увидеть, что форма успешно отображает данные из таблицы базы данных (рис. 17.21).

Рис. 17.20. Поля объекта Command, размещенные в форме редактирования

Рис. 17.21. Созданная форма в режиме выполнения

Использование элемента ADO Data Control для перемещения по данным

В форме, созданной с использованием объекта Command и представленной на рис. 17.21, отсутствуют объекты управления перемещением по записям таблицы. Для управления передвижением курсора по записям таблицы подходит элемент управления ADO Data Control. Для добавления этого элемента в созданную нами с помощью объекта command форму выполните следующие действия:

1. Разместите в форме элемент управления ADO Data Control.

2. Для того чтобы связать элемент ADO Data control с результирующим множеством, полученным с помощью объекта command, добавьте в код обработки события Form_Activate для формы следующую строку кода:

Set adoCustomer.Recordset = deSales.rscomCustomer

3. После этого сохраните форму и запустите ее на выполнение. Результат представлен на рис. 17.22.

Рис. 17.22. Просмотр записей с использованием объекта ADO Data Control

Замечание

В код обработки события для формы мы добавили присвоение для результирующего множества элемента ADO Data Control. В качестве результирующего множества, которое возвращает набор записей, мы взяли rscomCustomer из окружения данных deSales. Результирующее множество rscomCustomer автоматически создается при выполнении объекта Command comCustomer.

Настройка элемента ADO Data Control для отображения номера покупателя

Для наглядности при перемещении по записям таблицы можно в заголовке элемента ADO Data control отображать номер текущей записи. Для этого вам будет достаточно выполнить следующие действия: *

1. Откройте окно редактора кода для элемента ADO Data control.

2. Выберите событие MoveCompiete и добавьте в него следующий код:

adoCustomer.Caption = Покупатель №: &

CStr(adoCustomer.Recordset.AbsolutePosit ion)

3. После этого сохраните форму и запустите ее на выполнение. Результат показан на рис. 17.23.

Рис. 17.23. Отображение номера записи в заголовке элемента ADO Data Control

Одновременная работа с несколькими записями

Чтобы работать одновременно с несколькими записями, в Visual Basic 6 представлены следующие элементы:

Элемент | Назначение
DataGrid | Элемент управления для отображения и редактирования нескольких записей одновременно
FlexGrid | Элемент управления для просмотра нескольких записей одновременно. Он не позволяет редактировать данные
DataList | Этот элемент является списком, отображающим элементы, выбранные из источника данных

Использование элемента DataGrid

Как было сказано выше, элемент DataGrid предоставляет возможность просмотра и редактирования нескольких записей из источника данных. Для создания формы, которая будет использовать элемент DataGrid, выполните следующие действия:

1. Откройте форму, с помощью которой хотите просматривать информацию из источника данных.

2. Разместите в ней элемент управления DataGrid (рис. 17.24). Для этого дважды щелкните кнопку DataGrid на панели элементов управления.

Рис. 17.24. Элемент DataGrid, размещенный в форме

3. Для свойства DataSource (Источник данных) выберите окружение данных, элемент ADO Data control или результирующее множество Recordset, объявленное в форме.

4. В том случае, если в свойстве DataSource было выбрано окружение данных, то с помощью свойства DataMember вам необходимо выбрать объект Command, который вы хотите использовать в форме.

После выполненных действий форма уже является работоспособной, т. к. при запуске формы автоматически будут созданы все необходимые столбцы для отображения данных.

Но в данном случае используются не все возможности элемента DataGrid, рассмотрим их.


Ch 17.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление и удаление столбцов

В первую очередь необходимо добавить в элемент DataGrid необходимое количество столбов. Для добавления нового столбца выполните следующие шаги:

1. Выберите элемент DataGrid.

2. Нажмите правую кнопку мыши и выберите из контекстного меню команду Edit (Правка). Объект переходит в режим редактирования.

3. Для добавления нового столбца можно использовать команду Insert, которая добавит новый столбец перед тем столбцом, на который был установлен курсор мыши перед вызовом контекстного меню. Если вам необходимо добавить новый столбец в конец таблицы, то выполните команду Append контекстного меню.

Удаление столбца из объекта DataGrid выполняется аналогично добавлению. Сначала необходимо перевести объект в режим редактирования, затем установить курсор на удаляемый столбец и выбрать из контекстного меню команду Delete.

На рис. 17.26 показана форма с элементом управления DataGrid, в который добавлены столбцы.

Рис. 17.26. Элемент DataGrid с добавленными столбцами

Использование разделов

Элемент управления DataGrid позволяет разбить таблицу, содержащую данные, на несколько разделов, настраиваемых отдельно.

Для добавления нового раздела перейдите в режим редактирования элемента DataGrid, выбрав команду Edit контекстного меню, а затем выберите из этого же меню команду Split. Если вам потребуется удалить раздел, то воспользуйтесь командой Remove.

На рис. 17.27 показана форма с элементом управления DataGrid, который разделен на два раздела.

Рис. 17.27. Элемент DataGrid, разделенный на два раздела

Настройка параметров элемента DataGrid с помощью диалогового окна Property Pages

Для настройки всех параметров элемента DataGrid удобнее всего использовать диалоговое окно Property Pages (рис. 17.28), которое вызывается командой Properties контекстного меню.

Вкладка General (Основные) предназначена для настройки основных свойств элемента DataGrid. Поле ввода Caption содержит заголовок элемента, который будет отображаться в его верхней части. В левой части вкладки расположена область, содержащая флажки следующего назначения:

Рис. 17.28. Диалоговое окно Property Pages для элемента DataGrid

Флажок | Описание
AllowAddNew | Позволяет при работе с элементом DataGrid добавлять новые записи
AllowDelete | Позволяет при работе с элементом DataGrid удалять новые записи
Allowllpdate | Установленный флажок позволяет редактировать записи
ColumnHeaders | При установленном флажке заголовки столбцов будут отображаться на экране. В противном случае они будут отсутствовать
Enabled | Если данный флажок не установлен, то элемент DataGrid недоступен пользователю

В правой части вкладки General диалогового окна Property Pages расположены поля и списки, которые устанавливают значения одноименных свойств элемента управления:

Поле/список | Назначение
DefColWidth | Ширина создаваемых столбцов по умолчанию
HeadLines | Количество строк, выделяемых для заголовка столбца
RowHeight | Высота строки элемента управления DataGrid
Appearance | Устанавливает внешний вид элемента и имеет следующие значения: dbgFlat — двумерное оформление элемента, dbg3D — трехмерное оформление элемента
BorderStyle | Определяет тип обрамления элемента управления: dbgNoBorder — нет обрамления, dbgFixedSingle — обрамление в виде одиночной линии
RowDividerStyle | Задает тип линий между строками с данными

Вкладка Keyboard

Вкладка Keyboard (Клавиатура) (рис. 17.29) устанавливает свойства, которые непосредственно связаны с клавишами клавиатуры.

Рис. 17.29. Вкладка Keyboard диалогового окна Property Pages элемента DataGrid

В левой части вкладки расположены флажки, которые управляют перемещением курсора. Их названия совпадают с одноименными свойствами элемента управления:

Флажок | Назначение
AllowArrows | Данный флажок в установленном состоянии позволяет использовать клавиши-стрелки для передвижения по строкам и столбцам
TabAccrossSplits | Если установить этот флажок, то при работе с элементом DataGrid перемещение между разделами будет осуществляться с помощью клавиши <ТаЬ>
WrapCellPointer | При установке этого флажка перемещение курсора с заключительного символа последнего столбца осуществляется в первый столбец следующей строки. В противном случае курсор остается в текущей строке и столбце

Раскрывающийся список TabAction определяет свойство с таким же найме нованием, которое обуславливает поведение курсора при использовании клавиши <ТаЬ>. Это свойство может принимать следующие значения:

Значение | Описание
dbgControlNavigation | При нажатии на клавишу <ТаЬ> курсор будет переходить от одного элемента к другому
dbgColumnNavigation | Если выбрать это значение, то с помощью клавиши <ТаЬ> курсор будет переходить между столбцами элемента DataGrid. При нажатии клавиши <ТаЬ> в последнем столбце курсор перейдет в следующий элемент, расположенный в форме
dbgGridNavigation | С помощью клавиши <ТаЬ> курсор будет перемещаться по столбцам, но при достижении последнего столбца курсор не покинет элемент DataGrid, а будет себя вести, как описано в свойстве WrapCellPointer

Вкладка Columns

Вкладка Columns (Столбцы) (рис. 17.30) используется для настройки следующих параметров столбцов:

  • заголовка;
  • связи с полем результирующего множества. Для настройки столбца необходимо выполнить следующие действия:

1. В раскрывающемся списке Column, содержащем перечень всех доступных столбцов элемента DataGrid, пронумерованных начиная с нуля, выбрать настраиваемый столбец.

2. В поле ввода Caption ввести заголовок столбца.

3. Теперь необходимо связать столбец с полем результирующего множества. Для этого используется раскрывающийся список DataField. В этом списке находятся все доступные для работы поля объекта corranand, который был выбран нами ранее в качестве источника данных. Выберите из этого списка поле, с которым связывается текущий столбец.

Рис. 17.30. Вкладка Columns диалогового окна Property Pages элемента DataGrid

После настройки одного столбца можно повторить все шаги для последующих столбцов. Завершив настройку всех столбцов, нажмите кнопку Применить, и все изменения будут сохранены.

Вкладка Layout

Вкладка Layout (Расположение) (рис. 17.31) используется для настройки внешнего вида столбцов каждого из разделов.

Раскрывающийся список Split содержит все доступные для данного элемента DaraGrid разделы, а список Column — столбцы, входящие в текущий раздел. Для разных разделов, а также столбцов можно определить свой внешний вид с помощью флажков и полей, расположенных на вкладке.

Рис. 17.31. Вкладка Layout диалогового окна Property Pages

В левой части вкладки расположены флажки, предназначенные для установки значений одноименных свойств:

Флажок | Назначение
Locked | При установке флажка содержание столбца предназначено только для чтения информации
AllowSizing | Если установить данный флажок, то в режиме выполнения можно будет изменять размер столбца
Visible | При установленном флажке столбец будет виден на экране. В противном случае столбец виден не будет
WrapText | При установке флажка введенный в ячейку текст отображается на нескольких строках
Button | При установке флажка в правой части ячейки появляется кнопка раскрытия списка

Раскрывающийся список DividerStyle устанавливает свойство DividerStyle для отдельного столбца. Данное свойство предназначено для определения правой границы столбца.

С помощью раскрывающегося списка Alignment можно задать выравнивание информации в столбце. Список содержит следующие значения:

Значение | Описание
DbgLeft | Содержимое столбца выравнивается по левому краю
DbgRight | Содержимое столбца выравнивается по правому краю
DbgCenter | Текст, содержащийся в столбце, размещается в центре
DbgGeneral | Если столбец содержит текст, то он будет выровнен по левому краю, если число, то оно будет выровнено по правому краю

Поле ввода Width предназначено для определения ширины столбца.

Вкладка Color

На вкладке Color (Цвет) (рис. 17.32) вы можете установить цвета, которые определяют внешний вид вашего элемента DataGrid.

В списке Properties находятся объекты, которые могут быть изменены. Значение BackColor определяет цвет фона для столбцов элемента DataGrid, a ForeColor — цвет текста в столбцах.

Раскрывающийся список Color Set содержит список доступных цветовых схем. Значение Standard Colors определяет стандартную цветовую схему, a Windows System Colors — цветовую схему системы Windows.

Кнопка Edit Custom Color предназначена для настройки нового цвета.

Рис. 17.32. Вкладка Color диалогового окна Property Pages

Вкладка Font

Вкладка Font (Шрифт) (рис. 17.33) используется для настройки шрифтов

элемента DataGrid.

Значение Font списка Properties устанавливает шрифт для отображения информации в столбцах, a HeadFont — шрифт для заголовков столбцов.

Раскрывающиеся списки Font и Size позволяют определить соответственно наименование шрифта и его размер. Флажки Bold, Italic, Underline и Strikeout устанавливают начертание шрифта: полужирный, курсив, подчеркнутый и зачеркнутый.

Рис. 17.33. Вкладка Font диалогового окна Property Pages

Внешний вид текста, который получается в результате всех изменении, можно просмотреть в поле ввода Sample Text.

Вкладка Splits

Вкладка Splits (Разделы) (рис. 17.34) предназначена для определения свойств разделов. Для того чтобы установить свойства для раздела, выберите настраиваемый раздел в раскрывающемся списке Split.

Рис. 17.34. Вкладка Splits диалогового окна Property Pages

В левой части вкладки расположены флажки следующего назначения:

Флажок | Назначение
Locked | При установке флажка содержание столбцов, размещенных в разделе, предназначено только для чтения
AllowFocus | Разрешает установку фокуса на раздел
AllowSizing | При установке флажка размер раздела можно изменять в режиме выполнения формы
AllowRowSizing | При установке флажка можно изменять высоту строк в режиме выполнения формы
RecordSelectors | При установке флажка в разделе будет отображаться индикатор строки

Поле ввода ScrollGroup определяет синхронизацию полос прокрутки для нескольких разделов. Если во всех разделах свойство ScrollGroup имеет одинаковое значение, то вертикальная полоса прокрутки одного раздела автоматически перемещает индикатор строки во всех этих разделах. Если для разделов данное свойство будет иметь различные значения, то в разделах будут отображаться данные из разных областей базы данных.

Раскрывающийся список ScrollBars определяет способ отображения полос прокрутки:

  • dbgNone — полоса прокрутки отсутствует;
  • dbgHorizontal — только горизонтальная полоса прокрутки;
  • dbgVertical — только вертикальная полоса прокрутки;
  • dbgBoth — горизонтальная и вертикальная полосы прокрутки;
  • dbgAutomatic — полосы прокрутки появляются только при необходимости.

Раскрывающийся список MarqueeStyle позволяет задать способ выделения выбранной ячейки.

Параметры области, расположенной в нижней части вкладки, служат для определения размеров разделов. С помощью списка SizeMode задается способ установления размеров разделов, в нем содержатся следующие значения:

Значение | Описание
dbgScalable | Размеры разделов пропорциональны между собой. Пропорция задается с помощью свойства size каждого раздела
dbgExact | Для того чтобы задать размер раздела точным числом, выберите это значение списка и введите в поле Size нужный размер

Вкладка Format

Вкладка Format (Формат) (рис. 17.35) предназначена для определения формата отображения данных в столбцах. В раскрывающемся списке Format

Рис. 17.35. Вкладка Format диалогового окна Property Pages

Item выбирается настраиваемый столбец и с помощью списка Format Type устанавливается тип данных.

Создание компонентов ActiveX для управления данными

В начале главы мы рассмотрели создание приложений с использованием компонентов ADO (ActiveX Data Object). Однако иногда вас могут не устраивать предлагаемые стандартные средства. Это может быть в том случае, если создаваемое приложение имеет специфические особенности, а также, если вы хотите унифицировать элементы интерфейса и использовать их в нескольких формах, а может быть и в нескольких приложениях. Решением в подобной ситуации становится создание собственных ActiveX-компонентов. В данном разделе рассмотрим несколько примеров создания таких компонентов.

Создание компонента ownNavigator

Создадим ActiveX-компонент, который может являться источником данных для других компонентов и использоваться для перемещения по записям в базе данных и осуществления простейших операций по модификации ее содержимого. Для создания ActiveX-компонента откройте новый проект типа ActiveX Control. Он будет содержать единственный ActiveX-компонент — userControll. Присвойте проекту имя ownDataControls, а компоненту — ownNavigator.

Размещение элементов управления

ActiveX-компонент будем создавать на основе стандартных элементов управления. Добавьте в него шесть кнопок управления (рис. 17.36) и задайте для них приведенные ниже значения свойств Name и caption.

Рис. 17.36. Размещение кнопок управления

Значение свойства Name | Значение свойства Caption
cmdFirst | &Начало
cmdPrev | На&зад
cmdNext | В&перед
cmdLast | &Конец
cmdinsert | &Добавить
cmdDelete | &Удалить

Осуществление доступа к данным

Теперь надо определить средства доступа к данным. Для этих целей будем использовать технологию ADO (ActiveX Data Objects). Чтобы получить набор строк источника данных, воспользуемся объектами Recordset и Connection.

Добавьте в исходный код модуля ownNavigator описание используемого объекта Recordset:

Dim WithEvents mrstMain As ADODB.Recordset

Добавьте также в исходный код объекта connection, используемого для соединения с сервером, следующий код:

Dim WithEvents mcnnMain As ADODB.Connection

Ключевое слово WithEvents, включенное в описание этих объектов, позволит обрабатывать связанные с ними события.

Теперь рассмотрим создание описанных объектов, осуществление соединения и выборки записей. Чтобы можно было программно управлять этим процессом на этапе дальнейшего использования компонента ownNavigator, добавим два общедоступных метода OpenRecordset и CloseRecordset:

Public Sub OpenRecordset ()

If mcnnMain Is Nothing Then

'создаем Connection

Set mcnnMain = New ADODB.Connect ion

'устанавливаем его параметры

mcnnMain.CursorLocation = adUseClient

mcnnMain.Provider = "SQLOLEDB.1"

mcnnMain.CommandTimeout = 300

'строка для соединения, имя пользователя, пароль

mcnnMain.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"

End If

If mrstMain Is Nothing Then

'создаем Recordset

Set mrstMain = New ADODB.Recordset

'открываем Recordset

mrstMain.Open "customer", mcnnMain, adOpenKeyset, adLockOptimistic, adCmdTable

If Not (mrstMain.BOF And mrstMain.EOF) Then mrstMain.MoveFirst

End If

End Sub

Public Sub CloseRecordset ()

'если Recordset открыт — закрываем

If mrstMain.State о adStateClosed Then mrstMain.Close

'уничтожаем Recordset

Set mrstMain = Nothing

'если Connection открыта — закрываем

If mcnnMain.State <> adStateClosed Then mcnnMain.Close

'уничтожаем Connection

Set mcnnMain = Nothing

End Sub

Замечание

В данном примере для простоты мы задали фиксированные параметры источника данных. Способы устранения подобных ограничений и придания гибкости ActiveX-компоненту будут рассмотрены ниже.

Объект Recordset осуществляет выборку из таблицы Customer и позволяет не только просматривать, но и редактировать записи (параметр adOpenKeyset). При открытии Recordset текущая позиция устанавливается перед первой записью. Естественно, что мы не получим при этом никаких данных. Для того чтобы выполнить перемещение на первую доступную запись, можно воспользоваться методом MoveFirst. Однако, если набор записей пуст, подобные действия приведут к ошибке. Проанализировать данную ситуацию можно с помощью свойств BOF и EOF объекта Recordset. Первое принимает значение True в том случае, если текущая позиция находится перед первой записью, второе истинно, если текущая позиция — за последней записью. Если они принимают значение True одновременно, значит Recordset не содержит ни одной записи. При закрытии источника данных осуществляется проверка, открыты ли они на данный момент, что позволяет гарантировать отсутствие ошибочной ситуации повторного закрытия.

Теперь рассмотрим действия, необходимые для перемещения по записям результирующего множества. Для этого напишем коды обработки событий при нажатии на соответствующие кнопки. По существу, каждая из кнопок будет просто вызывать соответствующие методы объекта Recordset.

Private Sub cmdFirst_Click()

mrstMain.MoveFirst

End Sub

Private Sub cmdPrev_Click()

mrstMain.MovePrevious

If mrstMain.BOF Then

inrstMain.MoveFirst

End If

End Sub

Private Sub cmdNext_Click()

mrstMain.MoveNext

If mrstMain.EOF Then

mrstMain.MoveLast

End If

End Sub

Private Sub cmdLast_Click()

mrstMain.MoveLast

End Sub

Заметим, что после перемещения на новую запись с помощью методов MovePrevious или MoveNext текущая позиция может оказаться за пределами выбранных записей. Для предотвращения этой ситуации осуществляется проверка с помощью свойств BOF и EOF.

Итак, создан ActiveX-компонент, который позволяет перемещаться по записям в таблице базы данных. Однако он не способен отображать их на экране. Для отображения данных в Visual Basic существует множество готовых элементов управления, например, TextBox. Для связывания элемента управления с результирующим множеством будем использовать стандартный механизма Data Binding, то есть для объекта TextBox зададим свойства DataSourse, DataMember И DataField. Чтобы создаваемый нами компонент мог выступать в роли объекта-источника, установим свойство DataSourceBehavior нашего объекта ownNavigator равным vbDataSource (рис. 17.37).

Рис. 17.37. Определение свойства DataSourceBehavior

Теперь необходимо определить действия, выполняемые при инициализации объекта и при его уничтожении:

Private Sub OserControl Initialize()

OpenRecordset

DataMembers.Add "Main"

End Sub

Private Sub UserControl_Terminate()

DataMembers.Clear

CloseRecordset

End Sub

В данном примере мы осуществляем доступ к одному объекту Recordset. Если их несколько в одном объекте-источнике, осуществлять выбор нужного позволит деление на несколько разделов DataMember. Для успешной работы этого механизма следует описать обработку события Get DataMember объекта userControl, которое происходит при попытке внешних объектов запросить содержимое раздела. Это событие передает параметр DataMember, где в виде строки задан требуемый раздел DataMember. Следует возвратить внешним объектам ссылку на соответствующий объект Recordset (или другой подобный источник) путем присвоения значения параметру Data данного события. В нашем случае это выглядит следующим образом:

Private Sub UserControl GetDataMember(DataMember As String, Data As Object)

If DataMember = "Main" Then

Set Data = mrstMain Else

MsgBox "DataMember " & DataMember & " не найден"

End If

End Sub

Тестирование ActiveX-компонента

До сих пор мы разрабатывали новый ActiveX-компонент, но не могли видеть результатов его работы. Перейдем теперь к его тестированию.

Создадим с помощью команды Add Project (Добавить проект) меню File (Файл) тестовый проект типа Standard EXE. Теперь он будет находиться в одной проектной группе с нашим проектом ownDatacontrois. Присвойте ему имя Testproject, а всей группе — TestGroup. Мы будем использовать их для отладки создаваемых нами компонентов ActiveX.

Чтобы новый элемент управления стал доступен в проекте Testproject, необходимо закрыть окно View Object, отображающее содержимое объекта ownNavigator. На панели инструментов появляется новый значок Я. Так обозначается созданный нами компонент. Добавьте компонент в форму проекта Testproject, увеличьте его размер, чтобы он был виден целиком.

Далее добавьте стандартные элементы управления Label и TextBox, как показано на рис. 17.38.

Рис. 17.38. Форма для тестирования компонента ownNavigator

В окне Properties элементов управления типа TextBox выберите свойство DataSource и раскройте список доступных объектов-источников. В нем появился добавленный в форму объект ownNavigatorl — экземпляр созданного нами элемента управления. Выберите его. Затем установите для свойства DataMember значение Main. На следующем шаге выберите для каждого элемента управления типа TextBox поле результирующей выборки.

Предупреждение

Если вы не позаботитесь о том, чтобы Recordset открывался сразу при инициализации объекта на этапе проектирования, то не будете иметь возможности выбирать поля среди доступных в Recordset.

Настройте соответствующим образом свойства caption объектов типа Label.

Назначьте проект Testproject основным проектом группы. Для этого выберите его в окне Project Group, нажмите правую кнопку мыши'и выберите из контекстного меню команду Set as Start Up (рис. 17.39) Имя проекта при этом выделится жирным шрифтом.

Теперь запустите созданный проект на выполнение. Для этого выполните команду Start меню Run или нажмите клавишу <F5>. Созданная нами форма просмотра данных из таблицы Customer приведена на рис. 17.40.

Рис. 17.39. Выбор основного проекта группы проектов

Рис. 17.40. форма просмотра списка покупателей

Замечание

Для создания формы просмотра покупателей мы не написали ни строчки кода. Это одно из преимуществ использования ActiveX-компонентов: вы можете выделять общие для создаваемого приложения программные решения и добавлять их в свои собственные компоненты. Такой подход поможет придать вашим приложениям схожий внешний вид, упростит отладку и последующее их сопровождение. При обнаружении ошибок или изменениях в интерфейсе потребуется скорректировать только созданные вами компоненты и выпустить их новую версию. При этом даже не возникнет необходимости в повторной компиляции готовых приложений.

Добавление и вставка записей

Вернемся к нашему проекту. Вы можете не только просматривать, но и изменять данные. Например, введите в поле Организация текст ОАО Теремок и переместитесь на другую запись. При этом произведенные вами изменения будут внесены в базу данных. Чтобы это проверить, вернитесь на предыдущую запись и убедитесь, что наименование организации изменено. Мы можем редактировать данные, однако нельзя добавить новую запись или удалить существующую. Исправим это. Мы уже предусмотрели в нашем элементе управления соответствующие кнопки Добавить и Удалить, теперь осталось описать те действия, которые будут выполняться при их нажатии.

Остановите работу приложения. Откройте окно редактора кода для компонента ownNavigator и добавьте следующие строки:

Private Sub cmdinsert Click()

mrstMain.AddNew

End Sub

Private Sub cmdDelete_Click ()

mrstMain.Delete

End Sub

По сути дела мы просто перекладываем свою работу на объект Recordset, вызывая его стандартные методы AddNew и Delete.

Запустите приложение и нажмите кнопку Добавить. Содержимое всех полей очистится, и в них можно ввести новые значения. Не забывайте о том, что некоторые поля в нашей таблице не допускают ввода пустых значений. Если этого не учитывать, то при добавлении новой строки может возникнуть ошибка. Итак, вы ввели все необходимые данные, теперь переместитесь на предыдущую запись так же, как это было в случае редактирования данных, описанном выше. В этом момент произойдет вставка новой строки. Вы можете найти новую строку, переместившись на последнюю запись с помощью кнопки Конец.

Для удаления записи нажмите кнопку Удалить. Запись будет удалена из таблицы, но не с экрана. Однако если вы покинете эту запись, то не сможете вернуться на нее вновь, поскольку ее уже не существует.

Совершенствование созданного компонента

Несмотря на то, что созданный компонент потенциально может осуществлять доступ и управлять отображением любой таблицы из базы данных, он имеет ограничения в применении, поскольку имя обрабатываемой таблицы, имя сервера, имя базы данных, имя пользователя и его пароль зафиксированы внутри его кода. Чтобы снять эти ограничения, добавим нашему компоненту ownNavigator пять свойств: Server, Database, User, Password, Table.

Public Property Let Server(ByVal newServer As String)

mstrServer = newServer

PropertyChanged "Server"

End Property

Public Property Get Server () As String

Server = mstrServer

End Property

Public Property Let Database(ByVal newDatabase As String)

mstrDatabase = newDatabase

PropertyChanged "Database"

End Property

Public Property Get Database () As String

Database = mstrDatabase

End Property

Public Property Let User(ByVal newUser As String)

mstrUser = newUser

PropertyChanged "User"

End Property

Public Property Get User() As String

User = mstrUser

End Property

Public Property Let Password(ByVal newPassword As String)

mstrPassword = newPassword

PropertyChanged "Password"

End Property

Public Property Get Password() As String

Password = mstrPassword

End Property

Public Property Let Table(ByVal newTable As String)

mstrTable = newTable

PropertyChanged "Table"

End Property

Public Property Get Table() As String

Table = mstrTable

End Property

Для хранения значений этих свойств объявим пять строковых переменных.

Dim rostrServer As String

Dim mstrDatabase As String

Dim mstrUser As String

Dim mstrPassword As String

Dim mstrTable As String

Чтобы значения этих свойств можно бьыо настраивать в интегрированной среде разработки Visual Basic, необходимо также описать события Readproperties и Writeproperties. Для первичной инициализации значений этих свойств воспользуемся событием initproperties.

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Server = PropBag.ReadProperty("Server", "")

Database = PropBag.ReadProperty("Database", "")

User = PropBag.ReadProperty("User", "")

Password = PropBag.ReadProperty("Password", "")

Table = PropBag.ReadProperty("Table", "")

End Sub

Private Sub UserControl Writeproperties(PropBag As PropertyBag)

PropBag.WriteProperty "Server", Server, ""

PropBag.WriteProperty "Database", Database, ""

PropBag.WriteProperty "User", User, ""

PropBag.WriteProperty "Password", Password, ""

PropBag.WriteProperty "Table", Table, ""

End Sub

Private Sub UserControl Initproperties ()

Server = ""

Database = ""

User = ""

Password = ""

Table = ""

End Sub

Теперь надо изменить метод openRecordset следующим образом:

Public Sub OpenRecordset()

On Error.Goto err_occur

If mcnnMain Is Nothing Then

'создаем Connection

Set mcnnMain = New ADODB.Connection

'устанавливаем его параметры

mcnnMain.CursorLocation = adUseClient

mcnnMain.Provider = "SQLOLEDB.1"

mcnnMain.CommandTimeout = 300

'строка для соединения, имя пользователя, пароль

mcnnNain.Open "Data Source= " & Server & "; Initial Catalogs" & Database, User, Password

End If

If mrstMain Is Nothing Then

'создаем Recordset

Set mrstMain = New ADODB.Recordset

'открываем Recordset

mrstMain.Open Table, mcnnMain, adOpenKeyset, adLockOptimistic, adCmdTable

If Not (mrstMain.BOF And mrstMain.EOF) Then mrstMain.MoveFirst

End If

Exit Sub

err_occur:

MsgBox "Ошибка при открытии базы данных."

End Sub

Здесь вместо фиксированных значений параметров открытия используются значения соответствующих свойств. Помимо этого добавлена обработка ошибок, которые могут возникать при открытии с неверными параметрами.

Теперь вы можете использовать компонент ownNavigator для доступа к любым таблицам выбранной вами базы данных.

Компонент ownSlider

До сих пор для отображения данных мы пользовались стандартными объектами типа TextBox. Создадим свой собственный компонент ownslider, который бы смог соединяться с объектом-источником (например, с созданным нами ownNavugator) и отображать данные, получаемые от него. При создании нового компонента не будем использовать стандартные компоненты типа command, TextBox или любых других. Все операции по отображению данных на экране возьмем на себя.

Созданный нами компонент будет отображать числовые значения в виде синей полоски, размер которой пропорционален значению value, получаемому из базы данных. Полоса будет занимать всю ширину объекта, когда value достигнет значения Limit. Кроме того, при установке фокуса на объекте ограничивающая его черная рамочка будет прорисовываться жирной линией, а при потере фокуса вновь становиться тонкой. Когда фокус находится на нашем компоненте ownsiider, мы сможем менять значение value с помощью клавиш-стрелок <<--> и <-->> на клавиатуре. При этом оно будет увеличиваться или уменьшаться на заданную величину Step.

Добавление компонента к проекту

Для добавления компонента к проекту в окне Project Group установите указатель на проекте ownControls и щелкните правой кнопкой мыши, затем выберите команду Add (Добавить) и затем значение UserControl. К нашему проекту будет добавлен еще один компонент. Назовите его ownslider. Откройте окно редактора кода и введите там следующий текст, описывающий необходимые свойства и переменные:

Dim rnlngValue As Long

Dim rnlngLimit As Long

Dim rnlngStep As Long

Public Property Get Value() As Long

Value = rnlngValue

End Property

Public Property Let Value(ByVal NewValue As Long)

If NewValue >= 0 Then rnlngValue == NewValue Else rnlngValue = 0

PaintView

PropertyChanged "Value"

End Property

Public Property Get Limit() As Long

Limit = rnlngLimit

End Property

Public Property Let Limit(ByVal NewLimit As Long)

If NewLimit > 0 Then rnlngLimit = NewLimit Else rnlngLimit = 1

PaintView

PropertyChanged "Limit"

End Property

Public Property Get Step() As Long

Step = rnlngStep End Property

Public Property Let Step(ByVal NewStep As Long)

If NewStep > 0 Then rnlngStep = NewStep Else rnlngStep = 1

PaintView

PropertyChanged "Step"

End Property

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

Limit = PropBag.ReadProperty("Limit", 1000000)

Value = PropBag.ReadProperty("Value", 500000)

Step = PropBag.ReadProperty("Step", 1000)

End Sub

Private Sub UserControl WriteProperties(PropBag As PropertyBag)

PropBag.WriteProperty "Limit", Limit, 1000000

PropBag.WriteProperty "Value", Limit, 500000

PropBag.WriteProperty "Step", Step, 1000

End Sub

Private Sub UserControl_InitProperties ()

Limit = 1000000

Value = 500000

Step = 1000

End Sub

При изменении значения каждого из этих свойств запускается процедура перерисовки объекта:

Private Sub PaintView()

'установить позицию карандаша в верхний левый угол

CurrentX = 0

CurrentY = 0

'установить ширину линии в зависимости от признака фокуса

If HaveFocus Then DrawWidth = ScaleHeight / 50

Else DrawWidth = ScaleHeight / 500

'прорисовать белый прямоугольник по всей площади компонента

Line (0, 0)-(Width - 10, Height - 10), &H80000005, BF

'нарисовать синюю полоску в зависимости от значения Value

Line (0, 0)-((Value / Limit) * Width - 10, Height - 10), &H8000000D, BF

'отобразить значение Value в текстовой форме поверх изображения желтым цветом с контрастной черной тенью

ForeColor = &HO&

CurrentX = 10

CurrentY = Height /2-90

Print Value

ForeColor = &HFFFF&

CurrentX = 0

CurrentY = Height / 2 - 100

Print Value

'нарисовать ограничивающую рамку

Line (0, 0)-(Width - 10, Height - 10), &НО, В

End Sub

При возникновении события paint также следует вызывать перерисовку, так как это событие происходит всякий раз, когда системе требуется отобразить объект:

Private Sub UserControl_Paint()

PaintView

End Sub

Для контроля за фокусом предусмотрим переменную HaveFocus, значение которой будет устанавливаться при возникновении событий GotFocus и LostFocus. Таким образом, когда наш объект имеет фокус, значение переменной HaveFocus равно True, в противном случае HaveFocus имеет значение False.

Dim HaveFocus As Boolean

Private Sub UserControl_GotFocus()

HaveFocus = True

PaintView

End Sub

Private Sub UserControl_LostFocus()

HaveFocus = False

PaintView

End Sub

Чтобы обрабатывать нажатие клавиш <<--> и <-->>, установим в окне Properties для свойства Keypreview компонента значение True и опишем реакцию на событие KeyDown:

Private Sub UserControl KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyLeft

Value = Value - Step

Case vbKeyRight

Value = Value + Step

End Select

End Sub

Как вы видите, нет необходимости заниматься перерисовкой, поскольку она автоматически происходит при присвоении нового значения свойству value.

Связывание с объектом-источником

Наш компонент уже почти готов. Осталось добавить для него возможность связываться с объектом-источником. Для этого необходимо создать свойство компонента ownSlider, которое будет определять параметры связи с базой данных. Для этого в меню Tools (Сервис) выберите команду Procedure Attributes (Атрибуты процедуры). Откроется диалоговое окно Procedure Attributes (рис. 17.41).

Из списка Name выберите свойство value, так как именно его мы собираемся связать с объектом-источником. Нажмите кнопку Advanced, чтобы получить возможность производить дополнительные настройки. Установите флажки Property is data bound, This property binds to DataField и Update immediate.

В поле Desctiption введите описание свойства. Оно будет появляться в нижней части окна Properties.

Рис. 17.41. Диалоговое окно Procedure Attributes

Теперь удалите из формы тестового проекта компонент Text 11 и добавьте вместо него новый компонент ownsiiderl. Вы увидите, что у нашего компонента тоже появились свойства DataSourse, DataMember И DataField.

Для свойства DataSource выберите значение ownNavigatorl, для свойства DataMember — значение Main, а для DataField — Creuitlimit.

Запустите приложение. Теперь вы можете видеть созданный компонент в действии (рис. 17.43).

Однако, если вы попробуете изменить значение компонента с помощью клавиш-стрелок, вас ждет разочарование. Значения будут меняться, но не будут заноситься в базу данных. Чтобы проверить это, перейдите к следующей строке и вернитесь назад. Все дело в том, что мы не сообщили объекту-источнику, что значение, хранимое нашим объектом ownsiider, было изменено пользователем и отличается от того значения, что получено из базы данных, а следовательно, имеется необходимость в корректировке записи. Чтобы устранить этот недостаток, измените код события KeyDown так, как показано ниже:

Private Sub UserControl_KeyDown(KeyCode As Integer, Shift As Integer)

Select Case KeyCode

Case vbKeyLeft

Value = Value — Step

Extender.DataChanged = True

Case vbKeyRight

Value = Value + Step

Extender.DataChanged = True

End Select

End Sub

Здесь мы в объекте Extender, относящемся к ownslider, устанавливаем признак того, что данные были изменены. Объект-источник опрашивает Extender и получает необходимую информацию. Теперь, если вы запустите приложение, то убедитесь, что все в полном порядке.

Рис. 17.43. Форма в режиме выполнения


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 18. Отчеты.

Для проектирования и управления отчетами в Visual Basic 6 используется объектно-ориентированный подход: в распоряжении пользователя имеются специальный объект DataReport и инструментальное средство Data Report Designer (Конструктор отчетов).

Прежде чем приступить к созданию отчета, следует проверить подключение к проекту приложения конструкторов Data Environment (Окружение данных) и Data Report (Отчет данных). Для этого выберите команду Components (Компоненты) меню Project (Проект), в открывшемся диалоговом окне Components перейдите на вкладку Designers (Конструкторы) и проверьте, установлены ли флажки Data Environment и Data Report. Обычно они установлены по умолчанию.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Конструктор отчетов DataReport

Для проектирования отчетов в Visual Basic 6 предназначен объект DataReport, показанный на рис. 18.1. Этот объект добавляется к проекту с помощью команды Add Data Report (Добавить отчет) меню Project (Проект).

С точки зрения визуального проектирования объект DataReport состоит из нескольких разделов, отображающих функциональные части отчета. Их назначение описано в табл. 18.1.

Таблица 18.1. Разделы отчета
Раздел | Назначение
Report Header (Заголовок отчета) | Отображает заголовок отчета, который выводится однократно перед отчетом
Page Header (Заголовок страницы) | Отображает заголовок страницы, который выводится каждый раз на новой странице отчета
Detail (Детали) | Отображает содержание отчета, каждая строка которого соответствует одной записи в базе данных
Page Footer (Нижний колонтитул страницы) | Отображает текст, выводимый в нижнем колонтитуле страницы каждый раз для новой страницы
Report Footer (Нижний колонтитул отчета) | Отображает текст нижнего колонтитула отчета, выводимый один раз в конце отчета

Перечисленные в таблице разделы показаны на рис. 18.1. Кроме того, если в отчете осуществляется группировка данных, в него можно добавить еще два раздела:

  • Group Header (Заголовок группы) — отображает заголовок группы раздела Detail;
  • Group Footer (Нижний колонтитул группы) — отображает нижний колонтитул группы раздела Detail.

Рис. 18.1. Объект DataReport для конструирования отчета


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элементы управления объекта DataReport

В состав объекта DataReport входит набор элементов управления, которые можно использовать при проектировании отчета.

При добавлении объекта к проекту приложения эти элементы управления становятся доступными на панели инструментов (рис. 18.2), когда объект DataReport находится в фокусе.

Рис. 18.2. Панель инструментов для объекта DataReport

Назначение элементов управления объекта DataReport приведено в табл. 18.2.

Таблица 18.2. Элементы управления объекта DataReport
Кнопка | Название | Описание
 | RptLabel | Текстовая строка. Аналог элемента управления Label для форм
 | RptTextBox | Текстовое поле. Отображает поле базы данных
 | RptImage | Поле графического изображения
 | RptLine | Линия. Предоставляет возможность рисовать линии в отчете
 | RptShape | Фигура. Позволяет рисовать рамки, круги и другие геометрические фигуры в отчете
 | RptFunction | Дает возможность выполнять вычисления над столбцами отчета. Возможные функции этого элемента управления перечислены в табл. 18.3

Таблица 18.3. Функции элемента управления RptFunction
Функция | Описание
Sum | Сумма. Выполняет суммирование столбца для всех строк
Min | Минимум. Находит минимальное значение столбца
Мах | Максимум. Находит максимальное значение столбца
Average | Среднее. Вычисляет среднее арифметическое для столбца среди всех строк
Standard Deviation | Стандартное отклонение. Находит стандартное отклонение для столбца среди всех строк
Standard Error | Стандартная ошибка
Value Count | Счетчик значений (количество строк, в которых содержится значение). Подсчитывает количество строк, содержащих значение
Row Count | Счетчик строк. Подсчитывает количество строк


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства объекта DataReport

Как и всякий объект в Visual Basic 6, объект DataReport характеризуется свойствами, основные из которых приведены в табл. 18.4.

Таблица 18.4. Свойства объекта DataReport
Свойство | Назначение
BottomMargin и TopMargin | Размер верхнего и нижнего полей отчета
DataMember | Задает объект Command, используемый для доступа к данным
DataSource | Источник данных
ExportFormats | Набор форматов для экспорта содержимого отчета в файл (табл. 18.5)
Font | Шрифт печати отчета
GridX И GridY | Размер сетки по горизонтали и вертикали
LeftMargin и RightMargin | Размер левого и правого полей отчета
ReportWidth | Ширина отчета
Sections | Раздел отчета
Title | Текст заголовка отчета

Для записи данных в файл необходимо с помощью свойства ExportFormats указать один из четырех форматов экспорта, перечисленных в табл. 18.5.

Таблица 18.5. Форматы экспорта данных отчета
Член коллекции | Расширение файла | Описание
ExportFormats (1) | htm, html | Формат HTML
ExportFormats (2) | htm, html | Формат HTML в универсальной кодировке
ExportFormats (3) | txt | Текстовый формат
ExportFormats (4) | txt | Текстовый формат в универсальной кодировке


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Методы объекта DataReport

Для управления объектом DataReport используются методы, представленные в табл. 18.6.

Таблица 18.6. Методы объекта DataReport
Метод | Описание
ExportReport | Обеспечивает вывод данных отчета в файл
PrintReport | Выводит данные отчета на печать
Refresh | Обновляет данные отчета
Show | Выводит данные отчета в окно предварительного просмотра перед печатью или сохранением в файле


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод ExportReport

Метод ExportReport имеет следующий синтаксис:

DataReport.ExportReport ExpFormat, FileName, Owerwrite, ShowDialog, Range, PageFrom, PageTo

где:

  • ExpFormat — формат экспорта (табл. 18.5);
  • FileName — имя файла, в котором сохраняется отчет;
  • Owerwrite — задает признак перезаписи файла, принимает значение True (Истина) или False (Ложь);
  • ShowDialog — задает признак вызова диалогового окна Export (Экспорт) для выбора файла;
  • Range — задает признак экспорта части отчета, принимает значение True (Истина) или False (Ложь);
  • PageFrom — задает начальную страницу при экспорте части отчета;
  • PаgеTо — задает последнюю страницу при экспорте части отчета.

Формат для вывода файла выбирается из коллекции ExportFormats, значения которой указаны в табл. 18.5. Для назначения формата можно использовать служебные константы и ключи (табл. 18.7).

Таблица 18.7. Константы и ключи для форматов экспорта данных отчета
Член коллекции | Ключ | Константа
ExportFormats (1) | keydefHTML | rptKeyHTML
ExportFormats (2) | keydefUnicodeHTMLUTF8 | rptKeyUnicodeHTMLUTF8
ExportFormats (3) | keydefText | rptKeyText
ExportFormats (4) | keydefUnicodeText | rptKeyUnicodeText

Замечание

Все параметры метода ExportReport являются необязательными. При использовании этого метода необходимо помнить, что он не поддерживает экспорт изображений и графических элементов отчета.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метод PrintReport

Метод PrintReport имеет следующий синтаксис:

DataReport.PrintReport ShowDialog, Range, PageFrom, PageTo

где:

  • ShowDialog — задает признак вызова диалогового окна Print (Печать) для настройки параметров печати;
  • Range — задает признак экспорта части отчета, принимает значение True (Истина) или False (Ложь);
  • PageFrom — задает начальную страницу при экспорте части отчета;
  • PageTo — задает последнюю страницу при экспорте части отчета.

    Замечание

    Параметры метода PrintReport являются необязательными.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Методы Showw Refresh

Метод show имеет синтаксис, представленный ниже:

DataReport.Show

При просмотре отчета его можно пролистать и, при необходимости, распечатать из окна просмотра.

Синтаксис метода Refresh тоже очень прост:

DataReport.Refresh


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

События объекта DataReport

Объект DataReport взаимодействует с другими объектами с помощью следующих событии, перечисленных в табл. 18.8.

Таблица 18.8. События объекта DataReport отчета
Событие | Описание
Error | Возникает при ошибках вывода данных отчета
ProcessingTimeout | Предоставляет пользователю возможность приостановки асинхронных операций (просмотр, печать, вывод в файл) отчета
QueryClose | Возникает перед закрытием отчета. Предшествует событию Terminate
Activate | Возникает при появлении отчета в активном окне просмотра отчета
Deactivate | Возникает, когда отчет перестает находиться в активном окне
Resize | Возникает, когда окно отчета изменяет размеры
Initialize | Возникает при создании объекта
Terminate | Возникает при уничтожении объекта и удалении его из памяти


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание отчетов

Теперь, после рассмотрения основных характеристик объекта DataReport, перейдем к практическому проектированию отчетов. Сначала создадим приложение для работы с отчетами:

1. Откройте новый проект типа Standard EXE.

2. В меню Project (Проект) выберите команду Projecti Properties (Свойства проекта) и в поле Project Name (Наименование проекта) открывшегося диалогового окна введите наименование MyReport.

3. Форме присвойте имя frmMyReportForm и, используя свойство caption, задайте заголовок формы Управление отчетами.

4. Для проверки работы отчета разместите в форме кнопку управления типа CommandButton и назовите ее cbStartReport. Полученное приложение показано на рис. 18.3.

5. Сохраните проект и форму.

Рис. 18.3. Приложение для проверки работы отчетов


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окружение данных отчета

Любой отчет создается для вывода конкретной информации. При проектировании отчета необходимо создать и сохранить окружение данных. Для этого выполните следующие действия:

1. В меню Project (Проект) выберите команду More ActiveX Designers (Другие конструкторы ActiveX), а затем значение Data Environment (Окружение данных). Открывается окно DataEnvironmentI, содержащее соединение Connectioni.

2. С помощью команды Properties Window (Окно свойств) меню View (Вид) откройте окно свойств и измените DataEnvironmentI на DataEnvironmentMyReport, а также наименование соединения на ConnectionMyReport (рис. 18.4).

Рис. 18.4. Окно создания окружения данных

3. Установите курсор на соединение ConnectionMyReport, нажмите правую кнопку мыши и выберите команду Properties (Свойства) контекстного меню. Открывается диалоговое окно Data Link Properties (Свойства связи сданными) (рис. 18.5).

4. На вкладке Provider (Поставщик услуг) выберите поставщика услуг.

Рис. 18.5. Окно Data Link Properties для выбора поставщика услуг

Рис. 18.6. Вкладка Connection

5. Перейдите на вкладку Connection (Подключение) и укажите имя базы данных, для которой будет создаваться отчет (рис. 18.6).

6. Чтобы проверить правильность соединения, нажмите кнопку Test Connection (Проверить подключение). Диалоговое окно с сообщением о проверке соединения показано на рис. 18.7.

Рис. 18.7. Диалоговое окно с сообщением о проверке соединения

7. Для подтверждения выполненных действий закройте окно Data Link Properties, нажав кнопку ОК.

8. Выполнив все действия по созданию среды окружения данных, необходимо проверить наличие таблиц и данных в выбранной для проектирования отчета базе данных. Для этого откройте окно Data View (Просмотр данных) доступа к базе данных (рис. 18.8), выбрав команду Data View Window (Окно просмотра данных) меню View (Вид) или нажав кнопку Data View Window на панели инструментов.

Рис. 18.8. Окно доступа к базе данных


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование простого отчета

Создадим отчет Список клиентов, используя данные из таблицы customer (Клиенты) базы данных sales.

Для создания отчета необходимо добавить в проект приложения объект DataReport. Выполните это следующим образом:

1. В меню Project (Проект) выберите команду Add Data Report (Добавить отчет). После выполнения этой команды появляется окно объекта DataReport. При помощи окна свойств назовите этот объект SaleReport и, используя свойство caption, присвойте ему заголовок Отчет.

2. После того как объект DataReport добавлен, назначьте для этого отчета источник данных. Для этого в окне DataEnvironmemtMyReport выберите соединение ConnectionMyReport и нажмите кнопку Add Command (Добавить команду) на панели инструментов окна или нажмите правую кнопку мыши и выберите команду Add Command контекстного меню.

3. После того как источник данных. (объект coirmiandl) появился в окне окружения, откройте окно свойств данного объекта, выбрав команду Properties (Свойства) контекстного меню.

4. Присвойте источнику данных имя MyReportCommand.

5. Установите значения полей этого окна как на рис. 18.9, то есть укажите имя таблицы, для которой создается отчет.

Рис. 18.9. Окно настройки источника данных отчета

6. После создания источника можно установить связь отчета с источником данных С ПОМОЩЬЮ СВОЙСТВ отчета DataSource И DataMember. В свойстве DataSource выберите значение DataEnvironmentMy Report, в свойстве DataMember — значение MyReportCommand.

Теперь можно приступить к проектированию формы отчета. Начнем с заголовка отчета, то есть будем работать с разделом Report Header. В отчет будут выведены следующие поля таблицы Customer: код клиента, предприятие, фамилия представителя клиента, страна, город. В заголовке отчета необходимо расположить заголовок самого отчета и заголовки столбцов отчета.

7. Чтобы создать заголовок отчета, выполните следующие действия:

  • щелкните мышью кнопку RptLabel на панели элементов управления, установите курсор в первую строку раздела Report Header и нарисуй те рамку большого размера;
  • при помощи окна свойств установите имя объекта rptRepTitle;
  • в свойство caption введите текст заголовка Список клиентов;,
  • для свойства Alignment установите значение 2-rptJustifyCenter;
  • с помощью свойства Font установите начертание шрифта Полужир ный и размер 12.

8. Добавьте в следующую строку этого раздела еще пять объектов RptLabel для заголовков столбцов отчета. Назовите их в соответствии с полями таблицы, добавляя префикс rpt и окончание Header: rpticdcustomerHeader, rptCcompanyHeader, rptClastnameHeader, rptCcountryHeader, rptCcityHeader.

В свойство Caption введите соответствующие тексты заголовков: Код клиента. Предприятие, Представитель, Страна, Город. Шрифт установите полужирный, размера 10. Заголовок отчета готов.

9. Вставьте в первую строку раздела Detail объект RptTextBox. В поле установлено значение Unbound, означающее, что объект пока не связан с источником данных. Это будет поле для вывода кода клиента. Назовите этот объект rpticdcustomer. В свойстве DataMember выберите источник данных MyReportCommand, затем в свойстве DataField выберите поле icdcustomer базы данных, соответствующее этому полю отчета. Аналогично добавьте текстовые поля для остальных полей базы данных.

10. Откройте форму приложения и в свойство caption кнопки введите текст Список клиентов.

11. Добавьте в событие click кнопки cbStartReport код, указанный ниже:

Private Sub cbStartReport_Click()

SaleReport.Show

End Sub

12. Запустите приложение на выполнение и нажмите кнопку Список клиентов. Отчет будет выведен в окно просмотра (рис. 18.10).

В окне просмотра отчета можно выполнить следующие действия:

  • вывести отчет на печать с помощью кнопки Print (Печать);
  • экспортировать отчет в файл кнопкой Export (Экспорт);
  • задать масштаб просмотра отчета с помощью списка Zoom (Масштабирование);
  • перелистать страницы отчета, используя элемент управления выбора страниц Pages (Страницы), расположенного в нижней части окна просмотра.

Рис. 18.10. Окно просмотра отчета


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Изображения в отчете

Для размещения изображении в отчете используется объект Rptimage (см. табл. 18.2). Добавьте в созданный вами отчет saieReport приложения MyReport изображение с помощью следующих действий:

1. Сместите заголовок отчета Список клиентов вправо для того, чтобы освободить место для изображения.

Рис. 18.11. Отчет с изображением в режиме проектирования

1. Разместите в левом верхнем углу отчета объект Rptimage и назовите его rptImageMyFirm.

2. В свойство picture этого объекта загрузите изображение, воспользовавшись кнопкой с тремя точками. Показанное на рис. 18.11 изображение земного шара (файл с именем Earth) можно найти в папке \Common\Graphics \Icons\Elements. Полученный отчет в режиме проектирования показан на рис. 18.12.

3. Запустите приложение на выполнение. Нажав кнопку Список клиентов, получите отчет, показанный на рис. 18.12.

Рис. 18.12. Окно просмотра отчета с графическим изображением

С помощью объекта DataReport можно создавать достаточно сложные отчеты с использованием большого числа связанных таблиц. Рассмотрим, как это делается.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Группировка данных в отчете

При проектировании сложного отчета употребляется группировка данных. Понятие группировки данных обычно возникает при создании отчетов с применением связанных таблиц. Данные в отчете, использующем группировку, выводятся группами, для которых можно задать заголовок, а в нижней части разместить итоговую информацию по группе.

Для создания групп в отчете служит команда Insert Group Header/Footer (Вставить заголовок/нижний колонтитул группы), которая появляется в контекстном меню при установке курсора на серую полосу, содержащую заголовок раздела отчета. Удаляются группы командой контекстного меню Delete Group Header/Footer (Удалить заголовок/нижний колонтитул группы).

Замечание

При удалении группы удаляются все размещенные в ней объекты.

Другой способ построения группы заключается в автоматическом создании групп отчета в соответствии с иерархией источника данных. Для этого служит команда Retrieve Structure (Извлечь структуру) контекстного меню, при этом создаются сразу все группы в соответствии с иерархией, заданной в источнике данных. Обратная операция — удаление всех групп — выполняется командой Clear Structure (Очистить структуру) контекстного меню, при этом из отчета удаляются все объекты.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование отчета с группировкой данных

Создадим более сложный отчет с использованием источника данных со связанными таблицами. Это будет отчет Список заказов, данные для которого находятся в таблицах Customer (Клиенты), OrdSalem (Заказы), OrdSaled (Содержимое заказов) и Goods (Товары) базы данных sales.

Добавьте новый отчет в приложение MyReport командой Add Data Report (Добавить отчет) меню Project (Проект) и назовите его customerOrderReport.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание источника данных отчета

Перед проектированием отчета необходимо создать источник данных следующим образом:

1. Добавьте в окно проектирования окружения данных отчета новый источник данных. Для этого установите курсор на объект connectionMyReport и выберите команду Add Command контекстного меню. Переименуйте новый объект в CustomerCommand с помощью команды Rename (Переименовать) контекстного меню.

2. Создайте дочерний объект для customerconimand, выбрав команду Add Child Command контекстного меню.

3. Откройте окно свойств созданного объекта (рис. 18.13).

4. На вкладке General (Основные) этого окна в поле Command Name (Наименование) введите имя объекта OrderCommand, установите опцию Database Object (Объект базы данных), выберите из расположенного рядом списка тип объекта Table (Таблица), после чего из списка Object Name (Наименование объекта) выберите таблицу базы данных OrdSalem.

5. Для настройки связи этой таблицы с родительской перейдите на вкладку Relation (Связь) (рис. 18.14). Информация во всех полях задана по умолчанию. Нажмите кнопку Add (Добавить) для создания связи между родительской и дочерней таблицами, которая появится в списке связей группы Relation Definition (Описание связи).

Рис. 18.13. Окно настройки дочерней таблицы источника данных

Рис. 18.14. Окно настройки связи между родительской и дочерней таблицами

6. Закройте диалоговое окно Свойства, нажав кнопку ОК.

7. Создайте подчиненный объект для OrderCommand, выбрав из контекстного меню команду Add Child Command. Назовите его OrderDetailconmand. В диалоговом окне Свойства настройте параметры подчиненного объекта аналогично настройке для таблицы ordsalem, только выберите в качестве исходной таблицу OrdSaled.

8. Создайте подчиненный объект для orderDetailcommand, выбрав из контекстного меню команду Add Child Command. Назовите его orderGoodsCommand. В диалоговом окне Свойства настройте параметры подчиненного объекта, выбрав в качестве исходной таблицу Goods.

Источник данных настроен и готов для создания отчета и выборки данных в него.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование отчета

Теперь, после создания источников данных, можно приступать к проектированию отчета CustomerOrderReport:

1. Уменьшите размер сетки области проектирования отчета с помощью свойств Gridx и GridY, установив в них значение 2.

2. Для подключения источника данных в свойстве DataSource выберите значение DataEnvironmentMyReport, в свойстве DataMember — значение CustomerCommand.

3. Для запуска отчета на выполнение добавьте в форму frmMyReportForm еще одну кнопку типа CommandButton и назовите ее cbStartOrderReport. В свойство caption кнопки введите текст Заказы. Вид приложения показан на рис. 18.15.

Рис.18.15. Приложение для проверки работы отчетов

4. В событие click созданной кнопки введите код, с помощью которого отчет CustomerOrderReport будет запускаться для просмотра данных:

Private Sub cb3tartOrderReport_Click()

CustomerOrderReport.Show

End Sub

Продолжим проектирование отчета.

5. Выберите объект CustomerOrderReport.

6. Установите курсор на любую из полос, разделяющих разделы, нажмите правую кнопку мыши и выберите команду Retrieve Structure (Извлечь структуру) контекстного меню. В отчете появятся группы в соответствии с иерархией его источника данных.

7. Начнем проектирование с заголовка отчета (раздел Report Header). Разместите в заголовке объект RptLabel. Откройте окно Properties и в свойстве Name задайте наименование rptHeader. В свойство caption введите текст Список заказов, в свойстве Alignment задайте значение 2-rptJustifyCenter. Установите для этого объекта полужирный шрифт размером 12.

8. Перейдите к первому заголовку группы с наименованием Group Header (CustomerCommand_Header). Разместите в этой группе объект RptTextBox и присвойте ему наименование rptccompany. Для свойства DataMember установите значение источника данных CustomerCommand, из списка свойства DataField выберите поле таблицы cCompany. Установите для объекта шрифт и размер.

9. Перейдите к следующему заголовку группы — Group Header (OrderCommand_Header). Этот заголовок состоит из трех строк. В первой строке разместите два объекта типа RptLabel и назовите их rptCndocHeader И rptDdocHeader. В свойство Caption первого введите № заказа, в это же свойство второго — Дата заказа. Свойство Alignment этих объектов установите в значение 2-rptJustifyCenter.

10. Во вторую строку заголовка Group Header введите два объекта типа RptTextBox и назовите их rptCndoc и rptDdoc. Для первого объекта в свойстве DataMember выберите значение OrderCommand, а в свойстве DataField — поле cnDoc. Для объекта rptDdoc В свойстве DataMember выберите значение OrderCommand, в свойстве DataField — поле таблицы dDoc. Свойство Alignment этих объектов установите в значение 2-rptJustifyCenter.

11. В третьей строке заголовка расположите три объекта типа RptLabel и введите для них в свойство caption значения Товар, Количество, Цена.

Замечание

Периодически в процессе создания отчета вы можете запускать приложение на выполнение и, нажимая кнопку Заказы, проверять реальный вид отчета на любой стадии проектирования. Попробуйте сделать это сейчас.

12. Перейдите к проектированию раздела отчета Detail (OrderGoodsCommand_ Detail). Добавьте в этот раздел три объекта типа RptTextBox и назовите ИХ rptCnmgoods, rptNquant И rptNunitprice. Для объекта rptCnmgoods установите свойство DataMember в значение OrderGoodsCommand, а в свойстве DataField выберите поле таблицы cnmGoods. Для объекта rptNquant установите свойство DataMember в значение OrderDetailCommand, выберите в свойстве DataField поле nQuant. Для объекта rptNunitprice уста-новите свойство DataMember в значение OrderDetailCommand, в свойстве DataField выберите поле nUnitprice, а для свойства DataFormat установи-те значение Currency.

13. Запустите приложение на выполнение и нажатием кнопки Заказы вызовите окно просмотра отчета.

В отчете не хватает, по крайней мере, двух очевидных полей: суммы за товар и итоговой информации по заказу. Однако этих полей нет и в базе данных — их необходимо вычислить. Рассмотрим, как это делается.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вычисляемые поля в отчете

К сожалению, невозможно добавить вычисляемые поля в отчет простым составлением выражении из имеющихся полей. Об их создании необходимо позаботиться еще на стадии построения окружения данных отчета и иметь хотя бы общее представление о выражениях языка SQL для выборки данных из таблиц базы данных.

Чтобы работать с вычисляемыми полями, необходимо создать их в окружении данных отчета. Покажем это на конкретном примере. Добавим в созданный нами отчет CustomerOrderReport поле, вычисляющее стоимость заказа по следующей формуле: Сумма = количвство*Цена.

1. Откройте окно проектирования окружения данных отчета.

2. Установите курсор на источник данных OrderDetailcommand, нажмите правую кнопку мыши и выберите команду Properties (Свойства) контекстного меню. Откроется окно настройки источника данных.

3. Поскольку в таблице OrdSaled отсутствует необходимое нам вычисляемое поле, его нужно создать с помощью выборки данных из этой таблицы. В окне настройки источника данных установите опцию SQL Statement (Выражение SQL) и введите в поле текста выражение для выборки полей таблицы OrdSaled и вычисляемого поля:

Select icdorder, icdgoods, nquant, nunitprice, (nquant * nunitprice) As RowSummary from OrdSaled

4. Нажмите кнопку Применить. Если этого не выполнить, то не удастся восстановить связи с родительской и дочерней таблицами, разрушенные при переходе в режим выборки.

5. Перейдите на вкладку Relation (Связь) и кнопкой Add (Добавить) восстановите связь с родительским объектом.

6. Выйдите из окна настройки, нажав кнопку ОК.

7. Для восстановления связи с дочерним объектом выберите объект orderGoods Command и откройте окно Properties для настройки. На вкладке Relation восстановите связь и нажмите кнопку ОК.

Созданное таким образом вычисляемое поле RowSummary может участвовать в отчете так же, как и все остальные поля. Доработайте проектируемый отчет CustomerOrderReport.

  • Добавьте в раздел заголовка второй группы Group Header (OrderConimand_Header) объект RptLabel и введите в свойство caption этого объекта Сумма.
  • В раздел Detail добавьте объект RptTextBox и назовите его rptRowSummary. Установите для свойства DataMember значение OrderDetailCommand и в свойстве DataFieid выберите поле Rowsunimary. Для свойства DataFormat установите значение Currency.

Запустите приложение и выведите отчет в окно просмотра, нажав кнопку Заказы.

Осталось добавить в отчет итоговую сумму по заказу. Это можно сделать с помощью функционального поля отчета.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функциональные поля в отчете

Функциональные поля в отчете — это поля, в которых вычисляются некоторые функции (см. табл. 18.3) над полями базы данных. Для добавления таких полей в отчет используется специальный объект — RptFunction.

Нам необходимо добавить в отчет итоговую сумму по вычисляемому полю отчета Сумма. Рассмотрим, как это сделать.

1. Добавьте в раздел Group Footer (OrderCommand_Footer) объект RptLabel и введите в свойство Caption текст Итого по заказу.

2. Добавьте в эту секцию объект RptFunction и назовите его rptRowSummary. Значение 0-rptFuncSum свойства FunctionType оставьте без изменений. Установите для свойства DataMember значение OrderDetailCommand и в свойстве DataField выберите поле RowSummary. Для свойства DataFormat установите значение Currency.

3. Запустите приложение на выполнение и просмотрите отчет.


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 18. Отчеты.

Для проектирования и управления отчетами в Visual Basic 6 используется объектно-ориентированный подход: в распоряжении пользователя имеются специальный объект DataReport и инструментальное средство Data Report Designer (Конструктор отчетов).

Прежде чем приступить к созданию отчета, следует проверить подключение к проекту приложения конструкторов Data Environment (Окружение данных) и Data Report (Отчет данных). Для этого выберите команду Components (Компоненты) меню Project (Проект), в открывшемся диалоговом окне Components перейдите на вкладку Designers (Конструкторы) и проверьте, установлены ли флажки Data Environment и Data Report. Обычно они установлены по умолчанию.

Конструктор отчетов DataReport

Для проектирования отчетов в Visual Basic 6 предназначен объект DataReport, показанный на рис. 18.1. Этот объект добавляется к проекту с помощью команды Add Data Report (Добавить отчет) меню Project (Проект).

С точки зрения визуального проектирования объект DataReport состоит из нескольких разделов, отображающих функциональные части отчета. Их назначение описано в табл. 18.1.

Таблица 18.1. Разделы отчета
Раздел | Назначение
Report Header (Заголовок отчета) | Отображает заголовок отчета, который выводится однократно перед отчетом
Page Header (Заголовок страницы) | Отображает заголовок страницы, который выводится каждый раз на новой странице отчета
Detail (Детали) | Отображает содержание отчета, каждая строка которого соответствует одной записи в базе данных
Page Footer (Нижний колонтитул страницы) | Отображает текст, выводимый в нижнем колонтитуле страницы каждый раз для новой страницы
Report Footer (Нижний колонтитул отчета) | Отображает текст нижнего колонтитула отчета, выводимый один раз в конце отчета

Перечисленные в таблице разделы показаны на рис. 18.1. Кроме того, если в отчете осуществляется группировка данных, в него можно добавить еще два раздела:

  • Group Header (Заголовок группы) — отображает заголовок группы раздела Detail;
  • Group Footer (Нижний колонтитул группы) — отображает нижний колонтитул группы раздела Detail.

Рис. 18.1. Объект DataReport для конструирования отчета

Элементы управления объекта DataReport

В состав объекта DataReport входит набор элементов управления, которые можно использовать при проектировании отчета.

При добавлении объекта к проекту приложения эти элементы управления становятся доступными на панели инструментов (рис. 18.2), когда объект DataReport находится в фокусе.

Рис. 18.2. Панель инструментов для объекта DataReport

Назначение элементов управления объекта DataReport приведено в табл. 18.2.

Таблица 18.2. Элементы управления объекта DataReport
Кнопка | Название | Описание
 | RptLabel | Текстовая строка. Аналог элемента управления Label для форм
 | RptTextBox | Текстовое поле. Отображает поле базы данных
 | RptImage | Поле графического изображения
 | RptLine | Линия. Предоставляет возможность рисовать линии в отчете
 | RptShape | Фигура. Позволяет рисовать рамки, круги и другие геометрические фигуры в отчете
 | RptFunction | Дает возможность выполнять вычисления над столбцами отчета. Возможные функции этого элемента управления перечислены в табл. 18.3

Таблица 18.3. Функции элемента управления RptFunction
Функция | Описание
Sum | Сумма. Выполняет суммирование столбца для всех строк
Min | Минимум. Находит минимальное значение столбца
Мах | Максимум. Находит максимальное значение столбца
Average | Среднее. Вычисляет среднее арифметическое для столбца среди всех строк
Standard Deviation | Стандартное отклонение. Находит стандартное отклонение для столбца среди всех строк
Standard Error | Стандартная ошибка
Value Count | Счетчик значений (количество строк, в которых содержится значение). Подсчитывает количество строк, содержащих значение
Row Count | Счетчик строк. Подсчитывает количество строк

Свойства объекта DataReport

Как и всякий объект в Visual Basic 6, объект DataReport характеризуется свойствами, основные из которых приведены в табл. 18.4.

Таблица 18.4. Свойства объекта DataReport
Свойство | Назначение
BottomMargin и TopMargin | Размер верхнего и нижнего полей отчета
DataMember | Задает объект Command, используемый для доступа к данным
DataSource | Источник данных
ExportFormats | Набор форматов для экспорта содержимого отчета в файл (табл. 18.5)
Font | Шрифт печати отчета
GridX И GridY | Размер сетки по горизонтали и вертикали
LeftMargin и RightMargin | Размер левого и правого полей отчета
ReportWidth | Ширина отчета
Sections | Раздел отчета
Title | Текст заголовка отчета

Для записи данных в файл необходимо с помощью свойства ExportFormats указать один из четырех форматов экспорта, перечисленных в табл. 18.5.

Таблица 18.5. Форматы экспорта данных отчета
Член коллекции | Расширение файла | Описание
ExportFormats (1) | htm, html | Формат HTML
ExportFormats (2) | htm, html | Формат HTML в универсальной кодировке
ExportFormats (3) | txt | Текстовый формат
ExportFormats (4) | txt | Текстовый формат в универсальной кодировке

Методы объекта DataReport

Для управления объектом DataReport используются методы, представленные в табл. 18.6.

Таблица 18.6. Методы объекта DataReport
Метод | Описание
ExportReport | Обеспечивает вывод данных отчета в файл
PrintReport | Выводит данные отчета на печать
Refresh | Обновляет данные отчета
Show | Выводит данные отчета в окно предварительного просмотра перед печатью или сохранением в файле

Метод ExportReport

Метод ExportReport имеет следующий синтаксис:

DataReport.ExportReport ExpFormat, FileName, Owerwrite, ShowDialog, Range, PageFrom, PageTo

где:

  • ExpFormat — формат экспорта (табл. 18.5);
  • FileName — имя файла, в котором сохраняется отчет;
  • Owerwrite — задает признак перезаписи файла, принимает значение True (Истина) или False (Ложь);
  • ShowDialog — задает признак вызова диалогового окна Export (Экспорт) для выбора файла;
  • Range — задает признак экспорта части отчета, принимает значение True (Истина) или False (Ложь);
  • PageFrom — задает начальную страницу при экспорте части отчета;
  • PаgеTо — задает последнюю страницу при экспорте части отчета.

Формат для вывода файла выбирается из коллекции ExportFormats, значения которой указаны в табл. 18.5. Для назначения формата можно использовать служебные константы и ключи (табл. 18.7).

Таблица 18.7. Константы и ключи для форматов экспорта данных отчета
Член коллекции | Ключ | Константа
ExportFormats (1) | keydefHTML | rptKeyHTML
ExportFormats (2) | keydefUnicodeHTMLUTF8 | rptKeyUnicodeHTMLUTF8
ExportFormats (3) | keydefText | rptKeyText
ExportFormats (4) | keydefUnicodeText | rptKeyUnicodeText

Замечание

Все параметры метода ExportReport являются необязательными. При использовании этого метода необходимо помнить, что он не поддерживает экспорт изображений и графических элементов отчета.

Метод PrintReport

Метод PrintReport имеет следующий синтаксис:

DataReport.PrintReport ShowDialog, Range, PageFrom, PageTo

где:

  • ShowDialog — задает признак вызова диалогового окна Print (Печать) для настройки параметров печати;
  • Range — задает признак экспорта части отчета, принимает значение True (Истина) или False (Ложь);
  • PageFrom — задает начальную страницу при экспорте части отчета;
  • PageTo — задает последнюю страницу при экспорте части отчета.

    Замечание

    Параметры метода PrintReport являются необязательными.

Методы Showw Refresh

Метод show имеет синтаксис, представленный ниже:

DataReport.Show

При просмотре отчета его можно пролистать и, при необходимости, распечатать из окна просмотра.

Синтаксис метода Refresh тоже очень прост:

DataReport.Refresh

События объекта DataReport

Объект DataReport взаимодействует с другими объектами с помощью следующих событии, перечисленных в табл. 18.8.

Таблица 18.8. События объекта DataReport отчета
Событие | Описание
Error | Возникает при ошибках вывода данных отчета
ProcessingTimeout | Предоставляет пользователю возможность приостановки асинхронных операций (просмотр, печать, вывод в файл) отчета
QueryClose | Возникает перед закрытием отчета. Предшествует событию Terminate
Activate | Возникает при появлении отчета в активном окне просмотра отчета
Deactivate | Возникает, когда отчет перестает находиться в активном окне
Resize | Возникает, когда окно отчета изменяет размеры
Initialize | Возникает при создании объекта
Terminate | Возникает при уничтожении объекта и удалении его из памяти

Создание отчетов

Теперь, после рассмотрения основных характеристик объекта DataReport, перейдем к практическому проектированию отчетов. Сначала создадим приложение для работы с отчетами:

1. Откройте новый проект типа Standard EXE.

2. В меню Project (Проект) выберите команду Projecti Properties (Свойства проекта) и в поле Project Name (Наименование проекта) открывшегося диалогового окна введите наименование MyReport.

3. Форме присвойте имя frmMyReportForm и, используя свойство caption, задайте заголовок формы Управление отчетами.

4. Для проверки работы отчета разместите в форме кнопку управления типа CommandButton и назовите ее cbStartReport. Полученное приложение показано на рис. 18.3.

5. Сохраните проект и форму.

Рис. 18.3. Приложение для проверки работы отчетов

Окружение данных отчета

Любой отчет создается для вывода конкретной информации. При проектировании отчета необходимо создать и сохранить окружение данных. Для этого выполните следующие действия:

1. В меню Project (Проект) выберите команду More ActiveX Designers (Другие конструкторы ActiveX), а затем значение Data Environment (Окружение данных). Открывается окно DataEnvironmentI, содержащее соединение Connectioni.

2. С помощью команды Properties Window (Окно свойств) меню View (Вид) откройте окно свойств и измените DataEnvironmentI на DataEnvironmentMyReport, а также наименование соединения на ConnectionMyReport (рис. 18.4).

Рис. 18.4. Окно создания окружения данных

3. Установите курсор на соединение ConnectionMyReport, нажмите правую кнопку мыши и выберите команду Properties (Свойства) контекстного меню. Открывается диалоговое окно Data Link Properties (Свойства связи сданными) (рис. 18.5).

4. На вкладке Provider (Поставщик услуг) выберите поставщика услуг.

Рис. 18.5. Окно Data Link Properties для выбора поставщика услуг

Рис. 18.6. Вкладка Connection

5. Перейдите на вкладку Connection (Подключение) и укажите имя базы данных, для которой будет создаваться отчет (рис. 18.6).

6. Чтобы проверить правильность соединения, нажмите кнопку Test Connection (Проверить подключение). Диалоговое окно с сообщением о проверке соединения показано на рис. 18.7.

Рис. 18.7. Диалоговое окно с сообщением о проверке соединения

7. Для подтверждения выполненных действий закройте окно Data Link Properties, нажав кнопку ОК.

8. Выполнив все действия по созданию среды окружения данных, необходимо проверить наличие таблиц и данных в выбранной для проектирования отчета базе данных. Для этого откройте окно Data View (Просмотр данных) доступа к базе данных (рис. 18.8), выбрав команду Data View Window (Окно просмотра данных) меню View (Вид) или нажав кнопку Data View Window на панели инструментов.

Рис. 18.8. Окно доступа к базе данных


Ch 18.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проектирование простого отчета

Создадим отчет Список клиентов, используя данные из таблицы customer (Клиенты) базы данных sales.

Для создания отчета необходимо добавить в проект приложения объект DataReport. Выполните это следующим образом:

1. В меню Project (Проект) выберите команду Add Data Report (Добавить отчет). После выполнения этой команды появляется окно объекта DataReport. При помощи окна свойств назовите этот объект SaleReport и, используя свойство caption, присвойте ему заголовок Отчет.

2. После того как объект DataReport добавлен, назначьте для этого отчета источник данных. Для этого в окне DataEnvironmemtMyReport выберите соединение ConnectionMyReport и нажмите кнопку Add Command (Добавить команду) на панели инструментов окна или нажмите правую кнопку мыши и выберите команду Add Command контекстного меню.

3. После того как источник данных. (объект coirmiandl) появился в окне окружения, откройте окно свойств данного объекта, выбрав команду Properties (Свойства) контекстного меню.

4. Присвойте источнику данных имя MyReportCommand.

5. Установите значения полей этого окна как на рис. 18.9, то есть укажите имя таблицы, для которой создается отчет.

Рис. 18.9. Окно настройки источника данных отчета

6. После создания источника можно установить связь отчета с источником данных С ПОМОЩЬЮ СВОЙСТВ отчета DataSource И DataMember. В свойстве DataSource выберите значение DataEnvironmentMy Report, в свойстве DataMember — значение MyReportCommand.

Теперь можно приступить к проектированию формы отчета. Начнем с заголовка отчета, то есть будем работать с разделом Report Header. В отчет будут выведены следующие поля таблицы Customer: код клиента, предприятие, фамилия представителя клиента, страна, город. В заголовке отчета необходимо расположить заголовок самого отчета и заголовки столбцов отчета.

7. Чтобы создать заголовок отчета, выполните следующие действия:

  • щелкните мышью кнопку RptLabel на панели элементов управления, установите курсор в первую строку раздела Report Header и нарисуй те рамку большого размера;
  • при помощи окна свойств установите имя объекта rptRepTitle;
  • в свойство caption введите текст заголовка Список клиентов;,
  • для свойства Alignment установите значение 2-rptJustifyCenter;
  • с помощью свойства Font установите начертание шрифта Полужир ный и размер 12.

8. Добавьте в следующую строку этого раздела еще пять объектов RptLabel для заголовков столбцов отчета. Назовите их в соответствии с полями таблицы, добавляя префикс rpt и окончание Header: rpticdcustomerHeader, rptCcompanyHeader, rptClastnameHeader, rptCcountryHeader, rptCcityHeader.

В свойство Caption введите соответствующие тексты заголовков: Код клиента. Предприятие, Представитель, Страна, Город. Шрифт установите полужирный, размера 10. Заголовок отчета готов.

9. Вставьте в первую строку раздела Detail объект RptTextBox. В поле установлено значение Unbound, означающее, что объект пока не связан с источником данных. Это будет поле для вывода кода клиента. Назовите этот объект rpticdcustomer. В свойстве DataMember выберите источник данных MyReportCommand, затем в свойстве DataField выберите поле icdcustomer базы данных, соответствующее этому полю отчета. Аналогично добавьте текстовые поля для остальных полей базы данных.

10. Откройте форму приложения и в свойство caption кнопки введите текст Список клиентов.

11. Добавьте в событие click кнопки cbStartReport код, указанный ниже:

Private Sub cbStartReport_Click()

SaleReport.Show

End Sub

12. Запустите приложение на выполнение и нажмите кнопку Список клиентов. Отчет будет выведен в окно просмотра (рис. 18.10).

В окне просмотра отчета можно выполнить следующие действия:

  • вывести отчет на печать с помощью кнопки Print (Печать);
  • экспортировать отчет в файл кнопкой Export (Экспорт);
  • задать масштаб просмотра отчета с помощью списка Zoom (Масштабирование);
  • перелистать страницы отчета, используя элемент управления выбора страниц Pages (Страницы), расположенного в нижней части окна просмотра.

Рис. 18.10. Окно просмотра отчета

Изображения в отчете

Для размещения изображении в отчете используется объект Rptimage (см. табл. 18.2). Добавьте в созданный вами отчет saieReport приложения MyReport изображение с помощью следующих действий:

1. Сместите заголовок отчета Список клиентов вправо для того, чтобы освободить место для изображения.

Рис. 18.11. Отчет с изображением в режиме проектирования

1. Разместите в левом верхнем углу отчета объект Rptimage и назовите его rptImageMyFirm.

2. В свойство picture этого объекта загрузите изображение, воспользовавшись кнопкой с тремя точками. Показанное на рис. 18.11 изображение земного шара (файл с именем Earth) можно найти в папке \Common\Graphics \Icons\Elements. Полученный отчет в режиме проектирования показан на рис. 18.12.

3. Запустите приложение на выполнение. Нажав кнопку Список клиентов, получите отчет, показанный на рис. 18.12.

Рис. 18.12. Окно просмотра отчета с графическим изображением

С помощью объекта DataReport можно создавать достаточно сложные отчеты с использованием большого числа связанных таблиц. Рассмотрим, как это делается.

Группировка данных в отчете

При проектировании сложного отчета употребляется группировка данных. Понятие группировки данных обычно возникает при создании отчетов с применением связанных таблиц. Данные в отчете, использующем группировку, выводятся группами, для которых можно задать заголовок, а в нижней части разместить итоговую информацию по группе.

Для создания групп в отчете служит команда Insert Group Header/Footer (Вставить заголовок/нижний колонтитул группы), которая появляется в контекстном меню при установке курсора на серую полосу, содержащую заголовок раздела отчета. Удаляются группы командой контекстного меню Delete Group Header/Footer (Удалить заголовок/нижний колонтитул группы).

Замечание

При удалении группы удаляются все размещенные в ней объекты.

Другой способ построения группы заключается в автоматическом создании групп отчета в соответствии с иерархией источника данных. Для этого служит команда Retrieve Structure (Извлечь структуру) контекстного меню, при этом создаются сразу все группы в соответствии с иерархией, заданной в источнике данных. Обратная операция — удаление всех групп — выполняется командой Clear Structure (Очистить структуру) контекстного меню, при этом из отчета удаляются все объекты.

Проектирование отчета с группировкой данных

Создадим более сложный отчет с использованием источника данных со связанными таблицами. Это будет отчет Список заказов, данные для которого находятся в таблицах Customer (Клиенты), OrdSalem (Заказы), OrdSaled (Содержимое заказов) и Goods (Товары) базы данных sales.

Добавьте новый отчет в приложение MyReport командой Add Data Report (Добавить отчет) меню Project (Проект) и назовите его customerOrderReport.

Создание источника данных отчета

Перед проектированием отчета необходимо создать источник данных следующим образом:

1. Добавьте в окно проектирования окружения данных отчета новый источник данных. Для этого установите курсор на объект connectionMyReport и выберите команду Add Command контекстного меню. Переименуйте новый объект в CustomerCommand с помощью команды Rename (Переименовать) контекстного меню.

2. Создайте дочерний объект для customerconimand, выбрав команду Add Child Command контекстного меню.

3. Откройте окно свойств созданного объекта (рис. 18.13).

4. На вкладке General (Основные) этого окна в поле Command Name (Наименование) введите имя объекта OrderCommand, установите опцию Database Object (Объект базы данных), выберите из расположенного рядом списка тип объекта Table (Таблица), после чего из списка Object Name (Наименование объекта) выберите таблицу базы данных OrdSalem.

5. Для настройки связи этой таблицы с родительской перейдите на вкладку Relation (Связь) (рис. 18.14). Информация во всех полях задана по умолчанию. Нажмите кнопку Add (Добавить) для создания связи между родительской и дочерней таблицами, которая появится в списке связей группы Relation Definition (Описание связи).

Рис. 18.13. Окно настройки дочерней таблицы источника данных

Рис. 18.14. Окно настройки связи между родительской и дочерней таблицами

6. Закройте диалоговое окно Свойства, нажав кнопку ОК.

7. Создайте подчиненный объект для OrderCommand, выбрав из контекстного меню команду Add Child Command. Назовите его OrderDetailconmand. В диалоговом окне Свойства настройте параметры подчиненного объекта аналогично настройке для таблицы ordsalem, только выберите в качестве исходной таблицу OrdSaled.

8. Создайте подчиненный объект для orderDetailcommand, выбрав из контекстного меню команду Add Child Command. Назовите его orderGoodsCommand. В диалоговом окне Свойства настройте параметры подчиненного объекта, выбрав в качестве исходной таблицу Goods.

Источник данных настроен и готов для создания отчета и выборки данных в него.

Проектирование отчета

Теперь, после создания источников данных, можно приступать к проектированию отчета CustomerOrderReport:

1. Уменьшите размер сетки области проектирования отчета с помощью свойств Gridx и GridY, установив в них значение 2.

2. Для подключения источника данных в свойстве DataSource выберите значение DataEnvironmentMyReport, в свойстве DataMember — значение CustomerCommand.

3. Для запуска отчета на выполнение добавьте в форму frmMyReportForm еще одну кнопку типа CommandButton и назовите ее cbStartOrderReport. В свойство caption кнопки введите текст Заказы. Вид приложения показан на рис. 18.15.

Рис.18.15. Приложение для проверки работы отчетов

4. В событие click созданной кнопки введите код, с помощью которого отчет CustomerOrderReport будет запускаться для просмотра данных:

Private Sub cb3tartOrderReport_Click()

CustomerOrderReport.Show

End Sub

Продолжим проектирование отчета.

5. Выберите объект CustomerOrderReport.

6. Установите курсор на любую из полос, разделяющих разделы, нажмите правую кнопку мыши и выберите команду Retrieve Structure (Извлечь структуру) контекстного меню. В отчете появятся группы в соответствии с иерархией его источника данных.

7. Начнем проектирование с заголовка отчета (раздел Report Header). Разместите в заголовке объект RptLabel. Откройте окно Properties и в свойстве Name задайте наименование rptHeader. В свойство caption введите текст Список заказов, в свойстве Alignment задайте значение 2-rptJustifyCenter. Установите для этого объекта полужирный шрифт размером 12.

8. Перейдите к первому заголовку группы с наименованием Group Header (CustomerCommand_Header). Разместите в этой группе объект RptTextBox и присвойте ему наименование rptccompany. Для свойства DataMember установите значение источника данных CustomerCommand, из списка свойства DataField выберите поле таблицы cCompany. Установите для объекта шрифт и размер.

9. Перейдите к следующему заголовку группы — Group Header (OrderCommand_Header). Этот заголовок состоит из трех строк. В первой строке разместите два объекта типа RptLabel и назовите их rptCndocHeader И rptDdocHeader. В свойство Caption первого введите № заказа, в это же свойство второго — Дата заказа. Свойство Alignment этих объектов установите в значение 2-rptJustifyCenter.

10. Во вторую строку заголовка Group Header введите два объекта типа RptTextBox и назовите их rptCndoc и rptDdoc. Для первого объекта в свойстве DataMember выберите значение OrderCommand, а в свойстве DataField — поле cnDoc. Для объекта rptDdoc В свойстве DataMember выберите значение OrderCommand, в свойстве DataField — поле таблицы dDoc. Свойство Alignment этих объектов установите в значение 2-rptJustifyCenter.

11. В третьей строке заголовка расположите три объекта типа RptLabel и введите для них в свойство caption значения Товар, Количество, Цена.

Замечание

Периодически в процессе создания отчета вы можете запускать приложение на выполнение и, нажимая кнопку Заказы, проверять реальный вид отчета на любой стадии проектирования. Попробуйте сделать это сейчас.

12. Перейдите к проектированию раздела отчета Detail (OrderGoodsCommand_ Detail). Добавьте в этот раздел три объекта типа RptTextBox и назовите ИХ rptCnmgoods, rptNquant И rptNunitprice. Для объекта rptCnmgoods установите свойство DataMember в значение OrderGoodsCommand, а в свойстве DataField выберите поле таблицы cnmGoods. Для объекта rptNquant установите свойство DataMember в значение OrderDetailCommand, выберите в свойстве DataField поле nQuant. Для объекта rptNunitprice уста-новите свойство DataMember в значение OrderDetailCommand, в свойстве DataField выберите поле nUnitprice, а для свойства DataFormat установи-те значение Currency.

13. Запустите приложение на выполнение и нажатием кнопки Заказы вызовите окно просмотра отчета.

В отчете не хватает, по крайней мере, двух очевидных полей: суммы за товар и итоговой информации по заказу. Однако этих полей нет и в базе данных — их необходимо вычислить. Рассмотрим, как это делается.

Вычисляемые поля в отчете

К сожалению, невозможно добавить вычисляемые поля в отчет простым составлением выражении из имеющихся полей. Об их создании необходимо позаботиться еще на стадии построения окружения данных отчета и иметь хотя бы общее представление о выражениях языка SQL для выборки данных из таблиц базы данных.

Чтобы работать с вычисляемыми полями, необходимо создать их в окружении данных отчета. Покажем это на конкретном примере. Добавим в созданный нами отчет CustomerOrderReport поле, вычисляющее стоимость заказа по следующей формуле: Сумма = количвство*Цена.

1. Откройте окно проектирования окружения данных отчета.

2. Установите курсор на источник данных OrderDetailcommand, нажмите правую кнопку мыши и выберите команду Properties (Свойства) контекстного меню. Откроется окно настройки источника данных.

3. Поскольку в таблице OrdSaled отсутствует необходимое нам вычисляемое поле, его нужно создать с помощью выборки данных из этой таблицы. В окне настройки источника данных установите опцию SQL Statement (Выражение SQL) и введите в поле текста выражение для выборки полей таблицы OrdSaled и вычисляемого поля:

Select icdorder, icdgoods, nquant, nunitprice, (nquant * nunitprice) As RowSummary from OrdSaled

4. Нажмите кнопку Применить. Если этого не выполнить, то не удастся восстановить связи с родительской и дочерней таблицами, разрушенные при переходе в режим выборки.

5. Перейдите на вкладку Relation (Связь) и кнопкой Add (Добавить) восстановите связь с родительским объектом.

6. Выйдите из окна настройки, нажав кнопку ОК.

7. Для восстановления связи с дочерним объектом выберите объект orderGoods Command и откройте окно Properties для настройки. На вкладке Relation восстановите связь и нажмите кнопку ОК.

Созданное таким образом вычисляемое поле RowSummary может участвовать в отчете так же, как и все остальные поля. Доработайте проектируемый отчет CustomerOrderReport.

  • Добавьте в раздел заголовка второй группы Group Header (OrderConimand_Header) объект RptLabel и введите в свойство caption этого объекта Сумма.
  • В раздел Detail добавьте объект RptTextBox и назовите его rptRowSummary. Установите для свойства DataMember значение OrderDetailCommand и в свойстве DataFieid выберите поле Rowsunimary. Для свойства DataFormat установите значение Currency.

Запустите приложение и выведите отчет в окно просмотра, нажав кнопку Заказы.

Осталось добавить в отчет итоговую сумму по заказу. Это можно сделать с помощью функционального поля отчета.

Функциональные поля в отчете

Функциональные поля в отчете — это поля, в которых вычисляются некоторые функции (см. табл. 18.3) над полями базы данных. Для добавления таких полей в отчет используется специальный объект — RptFunction.

Нам необходимо добавить в отчет итоговую сумму по вычисляемому полю отчета Сумма. Рассмотрим, как это сделать.

1. Добавьте в раздел Group Footer (OrderCommand_Footer) объект RptLabel и введите в свойство Caption текст Итого по заказу.

2. Добавьте в эту секцию объект RptFunction и назовите его rptRowSummary. Значение 0-rptFuncSum свойства FunctionType оставьте без изменений. Установите для свойства DataMember значение OrderDetailCommand и в свойстве DataField выберите поле RowSummary. Для свойства DataFormat установите значение Currency.

3. Запустите приложение на выполнение и просмотрите отчет.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 19. Создание простых Internet-приложений.

В этой главе рассмотрим создание простых приложений, работающих в сети Internet (Интернет) или intranet (интранет).

Прежде чем рассматривать вопросы, связанные с программированием, важно уяснить основные принципы функционирования Internet. Итак, прежде всего Internet — это компьютерная сеть, которая предоставляет огромному числу пользователей всей планеты единое информационное пространство. Intranet — сеть, работающая по тем же принципам, что и Internet, но функционирующая отдельно (обычно сети intranet используются предприятиями для собственных целей).

Когда мы говорим об Internet, нас, прежде всего, интересует не техническая реализация связи между теми или иными компонентами сети, а те возможности, которые могут стать доступными при подключении к ней. Их также принято называть службами Internet.

  • E-mail. Служит для отправки электронных документов конкретным абонентам. Посылаемые сообщения могут состоять как из текста, так и включать звуки, графику и прочие ресурсы.
  • Newsgroups. Группы новостей, которые организованы по принципу доски объявлений. Поступающая от пользователей информация группируется по различным темам.
  • Chat. Данная служба предоставляет возможность пользователям, подключенных к Internet, общаться в реальном времени посредством сообщений, набираемых на клавиатуре.
  • FTP. Обеспечивает доступ к удаленному компьютеру. Использует протокол FTP (File Transfer Protocol), который дает возможность пользователю немедленно передать файл через Internet из одного места в другое.
  • WWW (World Wide Web). Механизм в Internet, который применяет гипертекстовые связи для соединения страниц и ресурсов и позволяет осуществлять переадресацию при просмотре документов.

Наиболее интересной на сегодняшний день является служба WWW. С помощью нее создано единое гипертекстовое пространство или всемирная информационная сеть, представляющая собой набор интерактивных документов. Это означает, что можно переходить от одного документа к другому, используя ссылки в тексте (гипертекстовые связи). При этом не важно, где располагаются эти документы — вы можете обращаться к серверам в различных частях света, даже не подозревая об этом. Таким образом "сплетается паутина", опутывающая весь мир, отсюда и происходит название World Wide Web.

Для работы WWW используется протокол HTTP (HyperText Transfer Protocol), который обеспечивает обмен гипертекстовой информацией между Web-сервером и Web-браузером. Web-сервер — элемент WWW, который выдает информацию (в виде гипертекста) для пользователя. Можно рассматривать Web-сервер как некую программу, работающую на удаленном компьютере и предоставляющую в ответ на запросы пользователей ту или иную информацию. Программа, с помощью которой пользователь запрашивает информацию у Web-сервера и просматривает ее, называется Web-браузером (рис. 19.1). Microsoft Internet Explorer — пример такого рода программ.

Гипертекстовая информация, посылаемая пользователю и просматриваемая посредством Web-браузера, описывается с помощью специального языка HTML (HyperText Markup Language), который помимо текста допускает использование специальных описателей или тэгов для разметки страницы, управления шрифтом, цветом и вставки в текст различных объектов (графики, звука и т. п.).

Рис. 19.1. Взаимодействие между Web-сервером и Web-браузером

Чтобы идентифицировать полный путь к документу, графическому или другому файлу, в Internet используется URL (Uniform Resource Locator) — унифицированный адрес ресурса. URL может уточнять протокол, с помощью которого осуществляется доступ к файлу (такому как FTP или HTTP). URL также может специфицировать адрес электронной почты. Uniform Resource Locator имеет следующий формат:

protocol://server/path

Список форматов URL приведен в табл. 19.1.

Таблица 19.1. Формат URL
Раздел | Назначение
protocol | Имя операции, которая будет выполняться при интерпретации данного URL. Наиболее часто используемые методы: file (чтение файла с диска), http (доступ к Web-странице в сети с использованием HTTP-протокола), ftp (запрос файла с анонимного ftp-сервера), mailto (активизирует почтовую сессию с указанным пользователем и хостом), telnet (обращение к службе telnet), news (вызов службы новостей)
server | Имя сервера (необязательно). Если имя сервера не указано, то ссылка считается локальной, и полный путь, указанный далее в URL, вычисляется на той машине, с которой взят HTML-документ, содержащий данную ссылку
path | Частичный или полный путь к документу, который должен вызваться в результате интерпретации URL. Различные Web-сервера сконфигурированы по-разному для интерпретации пути доступа к документу

Примеры использования URL:

http://www.someones.homepage/default.html

ftp://ftp.server.somewhere/ftp.file

file://Server/Share/File.doc

Пользователь может задать URL, при этом Web-браузер отправит запрос соответствующему Web-серверу. В ответ на запрос Web-сервер отправляет текст указанного документа, а Web-браузер отображает его. При переходе по гиперссылке от одного документа к другому реализуется такой же механизм.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Общие сведения о HTML

В этом разделе мы расскажем о создании HTML-документов.

Что такое HTML?

HTML (HyperText Markup Language) — это стандартный язык, предназначенный для создания гипертекстовых документов в среде Web. HTML-документы могут просматриваться различными типами Web-браузеров. Если документ создан с использованием HTML, Web-браузер интерпретирует HTML для выделения различных элементов документа и их первичной обработки. Применение HTML позволяет форматировать документы, используя шрифты, линии и другие графические элементы в любой доступной для их просмотра системе.

Многие документы имеют стандартные элементы, такие как заголовок, параграфы или списки. Используя тэги HTML, вы можете обозначать их, обеспечивая Web-браузеры необходимой информацией для отображения данных элементов, сохраняя общую структуру и информационную полноту документов. Web-браузер — единственное, что требуется для прочтения HTML-документа. Он интерпретирует тэги HTML и воспроизводит на экране документ, не изменяя его первоначального вида.

В большинстве случаев автор документа строго определяет внешний вид своего документа. Читатель, используя возможности своего Web-браузера, может в определенной степени изменять внешний вид документа, но не его содержимое. HTML позволяет отметить при помощи тэга HTML, где в документе должен быть заголовок или абзац, а затем предоставляет Web-браузеру интерпретировать эти тэги.

Основное преимущество HTML заключается в том, что ваш документ может быть просмотрен на Web-браузерах различных типов.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Как создаются HTML-документы?

HTML-документы могут быть созданы с помощью любого текстового редактора или специализированных HTML-редакторов и конвертеров. Выбор редактора для создания HTML-документов зависит исключительно от ваших личных пристрастий. Вы можете использовать специализированные редакторы HTML, например, Frontpage. Однако большинство традиционных средств для создания документов, например Microsoft Word, имеют конвертеры, позволяющие преобразовывать документы в формат HTML.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Тэги в HTML

Все тэги HTML начинаются с "<" и заканчиваются символом ">". Зачастую они используются в паре: стартовый тэг и завершающий тэг. Приведем пример использования тэгов заголовка, определяющих текст, находящийся внутри стартового и завершающего тэга как заголовок документа:

<TITLE> Заголовок документа </TITLE>

Завершающий тэг записывается так же, как стартовый, и отличается от него символом "/" перед текстом внутри угловых скобок. В нашем примере тэг <TITLE> сообщает Web-браузеру о начале текста заголовка, а тэг </TITLE> — о его завершении.

Некоторые тэги, например <р>, не требуют завершающего тэга, но его использование придает исходному тексту документа удобочитаемость.

HTML не различает регистр символов, которыми записан тэг, поэтому приведенный ранее пример может выглядеть следующим образом:

<title> Заголовок документа </title>

Замечание

Дополнительные пробелы, символы табуляции и перевода строки, включенные в исходный текст HTML-документа для его лучшей читаемости, игнорируются Web-браузером при отображении документа. HTML-документ может включать эти элементы, только если они помещены внутрь тэгов <PRE> и </PRE>. Подробнее о тэге <PRE> описано ниже.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Основные тэги в HTML

Самый первый тэг, который встречается в документе, должен быть тэгом <HTML>. Данный тэг сообщает Web-браузеру, что документ написан с использованием языка HTML. Самый простой HTML-документ будет выглядеть так:

<HTML> ...некоторый текст... </HTML>

Тэг заголовочной части документа должен быть использован сразу после тэга <HTML> и нигде более в теле документа. Этот тэг обрамляет общее описание документа. Не размещайте какой-либо текст внутри тэга <HEAD>. Стартовый тэг <HEAD> помещается непосредственно перед тэгом <TITLE> и другими тэгами, описывающими документ, а завершающий тэг </HEAD> размещается сразу после окончания описания документа. Например:

<HTML>

<HEAD>

<TITLE> Простой пример </TITLE>

</HEAD>

Совет

Формально, стартовые и завершающие тэги типа <HTML>, <HEAD> и <BODY> необязательны. Но мы настоятельно рекомендуем вам использовать их, поскольку они позволяют Web-браузеру уверенно отделить заголовочную часть документа от смысловой части.

Большинство Web-браузеров отображают содержимое тэга <TITLE> в заголовке окна, содержащего документ, и в файле закладок, если он поддерживается Web-браузером. Заголовок, ограниченный тэгами <TITLE> и </TITLE>, размещается внутри <НЕАD>-ТЭГОВ, как показано выше на примере. Заголовок документа не появляется при отображении самого документа в окне.

Как и любой язык, HTML позволяет вставлять в тело документа комментарии, которые сохраняются при передаче документа по сети, но не отображаются браузером. Синтаксис комментария:

<!-- Комментарий -->

Тэги тела документа обрамляют отображаемую часть HTML-документа. Тело документа может содержать ссылки на другие документы, текст, таблицы, графику и т. д. Тело документа должно находиться между тэгами <BODY> и </BODY>. Это та часть документа, которая отображается как текстовая и графическая информация.

Структурно текст HTML-документа делится на собственно текст, заголовки фрагментов текста, заголовки более высокого уровня и т. д. Первый уровень заголовка обозначается цифрой 1, следующий— 2, и т.д. Большинство браузеров поддерживает интерпретацию шести уровней заголовков, определяя для каждого из них свой собственный стиль и размер. Заголовки глубже шестого уровня не входят в стандарт HTML и могут не обеспечиваться брау-зером. Синтаксис заголовка уровня 1 следующий:

<Н1> Заголовок первого уровня </Н1>

Заголовки могут быть представлены в общем случае так:

<Нх> Заголовок х-го уровня </Нх>

где х — цифра от 1 до 6, определяющая уровень заголовка.

В отличие от многих текстовых редакторов, в HTML-документе игнорируются символы перевода строки. Фактический разрыв строки может находиться в любом месте исходного текста документа (исходя из его текущего размещения и физических размеров окна браузера). Web-браузер осуществляет перевод строки и разделяет абзацы только при наличии тэга <р>. Если вы не будете использовать тэг <р>, то ваш документ будет выглядеть как один сплошной абзац.

Дополнительные параметры тэга <р>:

<Р ALIGN=left|center|right>

позволяют выравнивать абзац соответственно по левому краю, центру и правому краю.

Вы можете центрировать все элементы документа в окне браузера. Для этого можно использовать тэг <CENTER>. Тэг предварительного форматирования <PRE> позволяет отображать текст с обязательным форматированием на экране. Область предварительно отформатированного текста заканчивается завершающим тэгом </PRE>. Внутри тэгов <PRE> ... </PRE> разрешается использовать:

  • перевод строки;
  • символы табуляции (сдвиг на 8 пробелов вправо);
  • непропорциональный шрифт, устанавливаемый браузером.

Если поместить тэги, определяющие формат абзаца, например, <нх> между тэгами <PRE> и </PRE>, то они будут игнорироваться браузером.

Тэг <BR> извещает браузер о разрыве строки (не путать с тэгом разрыва абзаца <р>). Удобно использовать этот тэг в тех местах, где браузер должен отображать строки одну под другой. Дополнительный параметр позволяет расширить возможности тэга <BR>.

<BR CLEAR=left|right|all>

Данный параметр позволяет выполнить не просто перевод строки, а разместить следующую строку с чистой левой (left) или правой (right) границы или с обеих (all) границ окна браузера. Если вы не хотите, чтобы браузер автоматически переносил строку, то можете обозначить ее тэгами <NOBR> и </NOBR>. В этом случае Web-браузер не будет переносить строку, даже если она выходит за границы экрана. Вместо этого появится горизонтальная полоса прокрутки окна браузера. Если вы .все же хотите разбить данную строку на две, но в строго определенном месте, вставьте тэг <WBR>.

В табл. 19.2 приведены основные тэги HTML.

Таблица 19.2. Список базовых гэгов HTML
Стартовый | Завершающий | Описание
<HTML> | </HTML> | Обозначение HTML-документа
<HEAD> | </HEAD> | Заголовочная часть документа
<TITLE> | </TITLE> | Заголовок документа
<BODY> | </BODY> | Тело документа
<H1> - <Нб> | </H1> - </H6> | Заголовок абзаца с первого по шестой уровень
<Р> | </P> | Абзац
<PRE> | </PRE> | Форматированный текст
<BR> |  | Перевод строки без конца абзаца
<FONT SIZE = n> | </FONT> | Управление размером шрифта символов
<B> | </B> | Жирный текст
<I> | </I> | Наклонный текст
<TT> | </TT> | Непропорциональный текст
<HR> |  | Горизонтальная линия
<TABLE> | </TABLE> | Таблица
<TR> | </TR> | Строка таблицы
<TD> | </TD> | Ячейка таблицы
<A HREF="URL"> | </A> | Гиперссылка

Описанные выше тэги — это все, что необходимо вам для того, чтобы начать работать с HTML. Используя данные тэги, вы можете создать простой HTML-документ. Однако, прочитав следующие разделы, вы сможете существенно улучшить внешний вид ваших документов и узнать о других возможностях HTML.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Введение в VBScript

Хотя язык Hypertext Markup Language (HTML) обладает огромными возможностями для управления документом, ему далеко до алгоритмических языков программирования в полном смысле этого слова. Для расширения возможностей HTML разработаны специальные языки сценариев, один из которых — VBScript.

VBScript является подмножеством языка Visual Basic. Он лишен того разнообразия возможностей, которое присуще Visual Basic, однако его преимущество заключается в широте применения. В первую очередь VBScript предназначен для использования в Web-страницах, однако с развитием технологий область его применения существенно расширилась. Теперь он используется в технологии Active Server Page и выполняется сервером макросов (Windows Scripting Host). Microsoft SQL Server 7.0 позволяет использовать VBScript для операций с данными.

VBScript при использовании в Web-странице включается в состав HTML-документа и отправляется Web-браузеру. Далее браузер распознает текст VBScript и вместо отображения на экране интерпретирует и выполняет его. Сценарий, написанный на VBScript, выполняется на компьютере пользователя, просматривающего Web-страницу. Таким образом, к нам в руки попадает мощнейшее средство создания интерактивных приложений в среде Web.

Приведем пример простейшего HTML-документа, который содержит кнопку с надписью Нажми меня (помните "Приключения Алисы в стране чудес"?). При нажатии на кнопку выполняется программа, написанная на VBScript (ее код включен в текст HTML-документа). В результате каждого нажатия кнопка увеличивается в размерах за счет того, что надпись на ней дополняется пробелами справа и слева.

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

Sub btnHitMe_OnClick

Document.frmSimple.btnHitMe.value=" "+Docmrient. frmSimple.btnHitMe.value+" "

End Sub

-->

</SCRIPT>

<BODY>

<FORM name=frmSimple>

<INPUT name=btnHitMe type=button уа1ие="Нажми меня">

</FORM>

</BODY>

</HTML>

Для выполнения программ, написанных на VBScript, предназначается так называемое ядро сценариев (scripting engine), которое находится в файле VBSCRIPT.DLL, размещенном в системном каталоге установленной операционной системы. Этот файл используют все программы, поддерживающие VBScript, поэтому обычно ядро сценариев входит в комплект их поставки. Файл VBSCRIPT.DLL имеет несколько версий, если некоторые наши примеры не будут у вас работать, обновите'его версию.

VBScript не единственный язык, который можно поместить в HTML-документ. Его соперник — JavaScript, который в значительной степени отличается по синтаксису.

Замечание

Некоторые Web-браузеры, например Netscape Navigator компании Netscape, не поддерживают VBScript. Однако браузер Microsoft Internet Explorer поддерживает оба типа сценариев. Такая ситуация может вызывать ограничения при использовании VBScript в глобальной сети Internet, где невозможно заранее предугадать тип пользовательского браузера.

Включить текст сценария в HTML-документ можно с помощью тэга <SCRIPT>, указав с помощью параметра LANGUAGE язык сценария "VBScript":

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

'Здесь располагается текст сценария

-->

</SCRIPT>

</HTML>

Совет

Как уже отмечалось, не все типы Web-браузеров поддерживают VBScript, поэтому рекомендуем вам использовать тэги комментария "<!--"... "-->" и заключать в них текст сценария, написанного на VBScript. Это никак не повлияет на выполнение кода, но предотвратит его вывод на экран тем браузером, который не поддерживает VBScript.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Некоторые ограничения VBScript

В VBScript все используемые переменные имеют тип variant, то есть при объявлении переменных или параметров процедур и функций вы не можете указывать их тип, как это было в Visual Basic. Однако, вы по-прежнему можете использовать оператор Option Explicit в начале HTML-документа, чтобы потребовать явного объявления всех переменных.

Чтобы определить тип значения, содержащегося в переменной типа variant, вы можете применить функцию туремате(<переменная>), которая возвращает строку, описывающую тип значения. Можно также использовать семейство функций IsStr (<переменная>), IsDate (<переменная>) и т.д., которые возвращают True, если значение имеет соответствующий тип, или False — в противном случае.

Еще одно отличие VBScript от Visual Basic: в цикле For после оператора Next не указывается имя переменной, отвечающей за отсчет итераций цикла.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объектная модель и обработка событий

В коде сценария VBSrcipt вы можете получать доступ к включенным в состав HTML-документа стандартным элементам управления, таким как поля ввода, кнопки, формы данных. Их можно добавить, используя тэг <INPUT>, основные атрибуты которого: NAME — имя объекта в документе, STYLE — размеры и стиль, TYPE — тип элемента (BUTTON, SUBMIT и т. п.). Например, вставить кнопку Продолжить можно следующим образом:

<INPUT name=btnContinue type=button vаluе=Продолжить>

Вы можете также включать в состав HTML-документа компоненты ActiveX с помощью тэга <OBJECT>. Его атрибуты: ID — имя объекта в документе, CLASSIC — идентификационный номер класса в реестре системы, DATA — адрес в формате URL, откуда объект должен получать данные, CODEBASE — адрес (LJRL), по которому находится код объекта, HEIGHT, WIDTH — высота и ширина. Для установки свойств ActiveX компонента используется тэг <PARAM>, имеющий атрибуты: NAME — имя свойства, VALUE — устанавливаемое значение.

Для обработки событий элементов управления и ActiveX компонентов необходимо определить подпрограмму с именем, первую часть которого составляет имя объекта, а вторую часть (через прочерк) — имя события. Например, обработчик события, которое возникает при нажатии на кнопку btnContinue, можно описать так:

Sub btnContinue_OnClick()

Вы можете обрабатывать следующие события стандартных элементов управления: onclick (при щелчке мышью на элементе управления), Dblclick (при двойном щелчке), MouseOver (при перемещении мыши над объектом) и другие. Если говорить о компонентах ActiveX, то перечень доступных событий для них полностью зависит от того, какие события предусмотрены в нем самом.

В сценарии VBScript доступны некоторые стандартные объекты HTML, использование которых может быть полезным при разработке (табл. 19.3).

Таблица 19.3. Наиболее важные объекты HTML
Объект | Методы, события | Описание
Window |  | Является исходным объектом, поэтому не требуется указывать имя при обращении к его свойствам и методам
 | Navigate | Метод, переключающий окно на другой адрес URL
 | Close | Метод, закрывающий окно
 | OnLoad | Событие, которое возникает при загрузке страницы (используется в тэге <BODY>)
 | OnUnload | Событие, которое возникает при выгрузке страницы (используется в тэге <BODY>)
Document |  | Основной объект. Может содержать дочерние объекты типа Form
 | BgColor | Метод, устанавливающий цвет фона
 | FgColor | Метод, устанавливающий цвет текста
 | Open | Метод, открывающий документ для записи дополнительных строк в формате HTML
 | Write | Метод, записывающий строку в документ
 | Close | Метод, закрывающий документ
Form |  | Объект, содержащий элементы управления


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Пример использования DHTML

Проект DHTML — одно из предложенных Microsoft средств для создания Internet-приложении, функционирующих на стороне пользователя (поддерживается с версии Internet Explorer 4.01). Важной особенностью DHTML является то, что для написания его кода используется не VBScript, a VBA (полное множество языковых конструкций и возможностей языка Visual Basic). Также удобно то, что работа над проектом осуществляется в привычной для вас интерактивной среде Visual Basic. Однако существенный недостаток DHTML — это то, что для успешного его использования потребуется знакомство с рекомендациями Document Object Model (DOM), разработанными фирмой Microsoft и определяющими множество объектов и их взаимосвязей. Рассмотрение DOM выходит за рамки этой книги. Однако попытаемся познакомиться со средствами разработки DHTML, не углубляясь в сложные детали.

Создайте новый проект, воспользовавшись в диалоговом окне New Project значком DHTML Application (рис. 19.2).

Рис. 19.2. Создание проекта типа DHTML Application

Перед вами появится окно DHTML Project (рис. 19.3). В правой части отображается внешний вид с9здаваемого HTML-документа, в левой — его текстовое содержание в виде иерархического списка.

Рис. 19.3. Окно проекта DHTML Project

Панель инструментов содержит элементы управления, используемые при создании DHTML, например, кнопки, текстовые поля, рисунки, гиперссыл-ки. Попробуйте добавить их в DHTML. Вы видите, что работа с ними строится по такому же принципу, что и со стандартными компонентами Visual Basic. Их можно перемещать, изменять размеры, а также задавать значения свойств в окне Properties.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Пример создания DHTML-проекта

Создадим проект DHTML, который будет представлять собой форму для ввода информации о покупателе (наименование компании, фамилия, имя, отчество представителя, почтовый индекс, страна, регион, город, адрес). Назовите Проект Customer, а DHTML-СТраницу — InputCustomer.

Нажмите кнопку DHTML Page Designer Properties, расположенную на панели инструментов окна. Перед вами откроется диалоговое окно Свойства: InputCustomer (рис. 19.4). Выберите в нем опцию Save HTML in an external file, чтобы созданная нами Web-страница была сохранена в виде документа HTML. Далее укажите место на диске и имя создаваемого HTML-документа.

Рис. 19.4. Окно определения свойств проекта DHTML

С помощью кнопки New вы можете создать новый HTML-файл, а с помощью Open — открыть существующий.

Вернитесь в окно DHTML Project. На панели элементов управления выберите текстовое поле для ввода компании и добавьте его в правую часть окна конструктора DHTML. Назовите поле txtccompany. Теперь определим для этого поля надпись, отражающую его предназначение. При работе с обычной формой Visual Basic, а не с конструктором DHTML, мы бы использовали самый привычный способ: добавление элемента управления Label. Однако при проектировании HTML-документа достаточно установить курсор справа от поля ввода и ввести текст так же, как в редакторе Microsoft Word.

У объектов в DHTML существует два режима привязки: абсолютная (когда мы располагаем объекты в HTML-документе, задавая их местоположение и размеры координатами) и относительная (когда объекты располагаются в тексте документа, и их местоположение полностью зависит от того, в какое место текста они включены). Переключать эти режимы можно с помощью кнопки Absolute Position. В нашем примере воспользуемся режимом относительной привязки, а для выравнивания компонентом будем размещать их в таблице.

Для того чтобы вставить таблицу в DHTML, нажмите кнопку Table operations, далее в появившемся меню выберите Insert Table. Перед вами таблица, состоящая из двух строк и двух столбцов. В левом столбце расположите метки, в правом — поля для ввода. Двух строк в таблице недостаточно, поэтому добавьте их, нажав кнопку Table Operations и выбрав Insert Row.

Теперь перетащите в таблицу уже добавленный компонент и текстовое примечание к нему, а также добавьте все остальные компоненты, которые потребуются для ввода информации о покупателе. Настроить их свойства можно так же, как вы это делали с обычными компонентами Visual Basic — с помощью окна Properties. В частности, вам необходимо настроить их наименования и допустимую длину вводимых значений (табл. 19.4).

Таблица 19.4. Настройка свойств объектов в проекте Customer
Метка | Имя объекта | Максимально допустимая длина
Компания | txtecompany | 20
Фамилия | txtelastname | 16
Имя | txtefrstname | 16
Отчество | txtosecondname | 16
Почтовый индекс | txtczip | 6
Страна | txtccountry | 20
Регион | txtcregion | 3
Город | txtccity | 20
Адрес | txtcaddress | 60

В начало документа добавьте заголовок, а в конец — кнопку, которой пользователь будет подтверждать ввод и осуществлять передачу введенных данных на Web-сервер (о том, как это организовать, будет сказано позже). Внешний вид готового проекта Customer показан на рис. 19.5.

Рис. 19.5. Внешний вид готового проекта Customer

Рис. 19.6. Тестирование проекта Customer

Чтобы проверить работу проекта, нажмите клавишу <F5>. При этом откроется окно программы Internet Explorer, в котором вы увидите созданный вами HTML-документ (рис. 19.6). Чтобы вернуться в режим редактирования, закройте Internet Explorer и остановите программу.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Отправка данных

Вы также можете посмотреть не только внешний вид, но и исходный текст подготовленного вами HTML-документа и даже внести в него изменения. Для этого нажмите кнопку Launch Editor на панели инструментов окна проекта. Откроется редактор Notepad, содержащий текст HTML-документа.

<HTML>

<HEAD><TITLE></TITLE>

</HEAD>

<BODY>

<P аlign=сеntеr>Введите данные о себе:</Р>

<TABLE border=1 name=tblCustomer>

<TR>

<ТD>Компания

<TD>

<INPUT id="" name=txtccompany

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20>

<TR>

<ТD>Фамилия

<TD>

<INPUT id="" name=txtclastname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Имя

<TD>

<INPUT id="" name=txtcfirstname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Отчество

<TD>

<INPUT id="" name=txtcsecondname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=16>

<TR>

<TD>Пoчтовыйi индекс

<TD>

<INPUT id="" name=txtczip

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=6>

<TR>

<ТD>Страна

<TD>

<INPUT id="" name=txtccountry

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=2 0>

<TR>

<TD>Регион

<TD>

<INPUT id="" name=txtcregion

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=3>

<TR>

<TD>Город</TD>

<TD>

<INPUT id="" name=txtccity

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20></TD></TR>

<TR>

<TD>Aдpec</TD>

<TD>

<INPUT id="" name=txtcaddress

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=60></TD></TR></TABLE></P>

<INPUT id=btnContinue name=btnContinue style="HEIGHT: ЗОрх; LEFT: 189px;

POSITION: absolute; TOP: 391px; WIDTH: 160px" type=button

vаlue=Продолжить >

</BODY></HTML>

Для того чтобы данные, содержащиеся в полях ввода, можно было отправить на сервер, поля ввода необходимо поместить в форму данных. Начало формы в документе HTML обозначается тэгом <FORM>, конец — тэгом </FORM>. При этом тэг <FORM> может иметь атрибуты: имя формы и метод отправки данных.

Добавьте строчку <FORM NAME=frminputCustomer METHOD=POST> перед тэгом <TABLE> и тэг </FORM> перед тэгом </BODY> в исходном тексте вашего HTML-документа. В результате этого все поля ввода и кнопка Продолжить оказались внутри формы данных с именем frminputCustomer. Теперь сохраните текст и закройте редактор Notepad. Visual Basic сообщит о том, что данные были изменены и предложит обновить их. Нажмите кнопку Yes.

Существует два способа отправки данных на сервер. Первый и самый простой — использование элемента управления типа submit. Если пользователь нажмет на такую кнопку, расположенную внутри формы данных, то вся введенная в остальные элементы управления информация будет немедленно передана на Web-сервер. Недостатком данного способа является то, что мы не сможем контролировать правильность введенных значений, поэтому применим второй способ — использование сценария VBScript для проверки правильности вводимой информации и отправки данных. Вставьте в начало HTML-документа следующий код:

<SCRIPT Language="VBScript">

<!--

Sub btnContinue_OnClick()

Dim frmCurrent

Set frmCurrent=Document.frmInputCustomer

If IsNumeric(frmCurrent.txtczip.Value) then

frmCurrent.Action="default.asp?mode=inputcustome r"

frmCurrent.submit

Else

MsgBox "В поле Почтовый индекс недопустимы буквы",,"Ошибка типа"

End If

End Sub

-->

</SCRIPT>

Замечание

В элементе управления HTML поле ввода для доступа к значению использует свойство value вместо привычного свойства Text.

В этом фрагменте кода описывается процедура btnContinue_Onciick, которая обрабатывает событие, возникающее при нажатии на кнопку btncontinue. Сначала определяется ссылка на форму данных, содержащую поля ввода. Далее проверяется, является ли числовым значение, введенное в поле Почтовый индекс. Если это не так, то в диалоговом окне выводится сообщение об ошибке (рис. 19.7).

Рис. 19.7. Вывод сообщений пользователю с помощью процедуры MsgBox

В противном случае мы задаем параметры отправки данных и вызываем метод submit формы данных, который и осуществляет отправку введенной информации на Web-сервер. Как обрабатывать эти данные на сервере, вы узнаете в следующем разделе.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Введение в Active Server Page

Работая в сети Internet, вы, наверное, обратили внимание на то, что большинство страниц в World Wide Web нельзя назвать статическими. Например, работая с поисковым сервером, вы получаете перечень ссылок, удовлетворяющих вашему запросу. Это яркий пример, когда Web-страница представляет собой не простой HTML-документ, а видоизменяется в зависимости от различных условий, будь то принимаемые запросы от пользователей или изменение информации в источниках данных. Чтобы понять, как функционируют такие Web-страницы, рассмотрим подробнее работу Web-сервера. На запрос Web-браузера Web-сервер должен ответить HTML-потоком. Однако главной особенностью динамических страниц является то, что отправляется не подготовленный заранее HTML-документ, а созданный или видоизмененный "на лету".

Для генерации HTML-потока на Web-сервере запускается специальная программа. На сегодняшний день существует несколько технологий создания подобных программ. Это может быть CGI-сценарий или программа на традиционном алгоритмическом языке. Еще одним вариантом может стать использование относительно новой технологии фирмы Microsoft — Active Server Pages (Активные страницы сервера). ASP основывается на появившейся возможности Web-сервера (Internet Information Server или Personal Web Server) обрабатывать ASP-сценарий, прототипом для которого послужил все тот же Visual Basic. ASP-сценарий во многом похож на VBScript, с той лишь разницей, что он выполняется на сервере, а не на клиентском компьютере. Это имеет ряд преимуществ по сравнению с VBScript.

  • Время выполнения оказывается меньше за счет того, что производительность сервера зачастую гораздо выше.
  • HTML-документ не нуждается в интерпретации, а следовательно, может просматриваться любым Web-браузером, поддерживающим стандарт HTML (за исключением тех случаев, когда в создаваемую HTML-страницу Web-сервер добавляет VBScript).
  • Пользователь не сможет просмотреть исходный код программы.
  • Код ASP-сценария может обращаться к ресурсам сервера (обмениваться конфиденциальной информацией без угрозы утечки информации).


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переход от HTML к ASP

ASP-страница во многом похожа на HTML, поскольку основана на тех же стандартах. Web-сервер распознает Active Server Page по расширению asp. Если просто изменить расширение существующего DHTML-документа на asp, вы не получите динамическую страницу. Ключом к созданию таких страниц является добавление ASP-сценария. Для указания Web-серверу фрагмента кода, который должен исполняться на сервере, служат маркеры "<%" и "%>".

Совет

Вы также можете указать, что фрагмент кода должен выполниться на сервере, используя в тэге <SCRIPT> атрибут RUNAT="SERVER". Например: <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> ... </SCRIPT>.

ASP-страница, случайным образом формирующая приветствие, будет выглядеть следующим образом:

<HTML>

<BODY>

<%

Randomize

Select Case Round(Rnd()*4)

Case 0

Response.Write ("Привет")

Case 1

Response.Write ("Добро пожаловать")

Case 2

Response.Write ("Рады видеть")

Case 3

Response.Write ("День добрый")

Case 4

Response.Write ("Здравствуйте")

End Select

%>

<BODY>

<HTML>

Следующее отличие ASP от HTML — объектная модель. В ASP-сценарии доступны некоторые специфичные только для этой технологии объекты.

  • Response — для формирования HTML-потока.
  • Request — для анализа запроса к ASP-странице.
  • Session — хранит информацию о текущем подключении.
  • Server — для создания на сервере объектов, доступных в ASP-приложении.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Виртуальные каталоги

Технология ASP поддерживается Internet Information Server (под Windows NT) и Personal Web Server (под Windows 95 и Windows 98). Для иллюстрации работы ASP будем использовать Personal Web Server. Настроить параметры его работы можно с помощью программы Personal Web Manager.

Для тестирования нашего примера необходимо создать виртуальный каталог. Это означает, что надо соотнести логическое имя, которое мы будем использовать в URL в разделе path, с физическим каталогом на диске сервера. При отладке наших примеров применим локальную модель, т. е. Web-сервер и Web-браузер будут работать на одном компьютере, хотя обычно это бывает не так. Запустите Personal Web Manager и в открывшемся диалоговом окне щелкните на значке Advanced.

При установленном флажке Enable Default Document можно задать имена файлов, считываемых сервером по умолчанию при посещении пользователем виртуальных каталогов без указания имен файлов в URL. Задайте Default Document(s) равным Default.htm, Default.asp. Теперь создайте на диске новый каталог, например C:\WEBSHARE\WWWROOT\MyDir, и в этот каталог поместите файл Default.asp с текстом нашего примера, формирующего приветствие. Теперь, чтобы создать новый виртуальный каталог, поддерживаемый нашим Web-сервером, нажмите кнопку Add.

В поле Directory появившегося диалогового окна Add Directory введите путь к созданному каталогу, а в поле Alias — имя нового виртуального каталога Web-сервера. В разделе Access осуществляется управление доступом, причем возможны следующие режимы.

  • Read — дает право на чтение HTML-данных.
  • Scripts— позволяет выполнять ASP-сценарии из данного виртуальною каталога (потребуется установить, если вы хотите использовать ASP-сценарии).
  • Execute — позволяет пользователю выполнять в виртуальном каталоге сценарии и другие программы.

Итак, теперь вы можете просмотреть свою страницу в сети Internet. Для этого загрузите Internet Explorer и укажите следующий адрес:

http://MyServer/test/

Замечание

Предполагается, что MyServer — имя вашего сервера в настройках DNS.

Web-сервер станет выполнять ASP-сценарии, содержащийся в файле Default.asp, динамически сформирует HTML-документ и отправит его Web-браузеру, который позволит вам увидеть наше приветствие. Поэкспериментируйте, нажимая кнопку Refresh. Вы будете получать каждый раз (или почти каждый раз) новое приветствие.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание проекта типа IIS Application

В Visual Basic имеется тип проекта IIS Application, который дает возможность создавать ASP-страницы. Этот тип проекта предоставляет разработчику специальный класс webciass, который оформляется в виде ActiveX Dll и встраивается в ASP-страницу, инициализируется при обращении к ней и работает на сервере. Все тонкости этого механизма Visual Basic берет на себя, предоставляя вам привычную среду для создания проектов. Таким образом, вы разрабатываете приложение, затем оно компилируется и встраивается в ASP-страницу, при этом для вас не существует ограничений VBScript, и вы можете пользоваться всеми возможностями Visual Basic при написании кода.

Рассмотрим создание проекта IIS Application на следующем простом примере. Web-сервер будет предлагать ввести данные о покупателе, принимать их, формировать на их основе HTML-документ и отправлять его обратно пользователю для подтверждения.

Создайте новый проект, выбрав в диалоговом окне New Project (рис. 19.10) значок IIS Application.

Рис. 19.10. Создание проекта типа IIS Application

Перед вами появляется окно, в котором можно добавлять к проекту HTML-шаблоны, а также элементы webitem. HTML-шаблоны— это обычные HTML-документы, которые вы сможете посылать Web-браузеру пользователя. Элементы webitem содержат шаблоны, однако, обрабатывая события и используя методы этих элементов, вы также можете формировать HTML-поток.

Назовите проект serverPage, а единственный входящий в его состав объект WebClass — Default. Задайте для свойства StateManagement объекта Default значение wcRetainInstance. Это приведет к тому, что экземпляр класса WebClass будет создаваться один раз, а не при каждом обращении Web-браузера к ASP-странице.

Добавьте в проект два шаблона HTML, воспользовавшись кнопкой Add HTML Template Webitem. Первый, на основе созданного нами ранее файла Customer.htm, предназначен для ввода информации о покупателе, второй — для отправки созданного нами HTML-документа, содержащего принятые от пользователя данные.

В окне Project выберите объект Default, перейдите в окно редактора кода данного объекта и введите следующий текст:

Option Explicit

Option Compare Text

Private Sub WebClass BeginRequest()

If Request.QueryString.Count > 0 Then

If Request.QueryString.Item(1) = "inputcustomer" Then

'записать данные в html-файл на сервере

Open "С:\Work\ServerPage\custlist.htm" For Output As #1

Print #1, "<HTML>"

Print #1, "<P аlign=сеnter>Сведения о последнем покупателе:</Р>"

With Request

Print #1, "Компания: " & .Form("txtccompany") & "<Р>"

Print #1, "Фамилия: " & .Form("txtclastname") & "<P>"

Print #1, "Имя: " & .FormC'txtcfirstname") & "<Р>"

Print #1, "Отчество: " & .Form("txtcsecondname") & "<P>"

Print #1, "Почтовый индекс: " & .Form("txtczip") & "<Р>"

Print #1, "Страна: " & .Form("txtccountry") & "<Р>"

Print #1, "Регион: " & .FormC'txtcregion") & "<P>"

Print #1, "Город: " & .Form("txtccity") & "<Р>"

Print #1, "Адрес: " & .Form("txtcaddress")

End With

Print #1, "</HTML>"

Close #1

'отправить файл клиенту

Response.Clear

CustList.WriteTemplate "custlist.htm"

End If

Else

'отправить клиенту форму для ввода

Customer.WriteTemplate

End If

End Sub

По сути дела мы описали обработку события BeginRequest, которое происходит всякий раз при обращении Web-браузера к ASP-странице. Здесь мы анализируем содержимое коллекции QueryString объекта Response. При первом обращении она пуста, и мы отправляем пользователю форму для ввода данных, вызвав метод WriteTemplate нашего HTML-шаблона.

Рассмотрим параметры, которые мы устанавливаем при передаче введенных пользователем данных Web-серверу:

default.asp?mode=inputcustomer

В приведенной строке мы определили имя ASP-страницы (default.asp), которой будет передана информация, и режим (inputcustomer), что позволит нам различить ситуацию обращения. Итак, если в коллекции QueryString объекта Response находится элемент inputcustomer, мы можем считать, что при данном обращении к ASP-странице были переданы данные, следовательно, надо их принять, сформировать HTML-документ на их основе и отправить его пользователю. Получить доступ к принятым данным можно, используя коллекцию Form. Элементы этой коллекции — наши поля ввода. Воспользуемся стандартным механизмом Visual Basic для работы с файлами и сохраним принятые данные в файле на нашем диске \\ServerPage\CustList.htm, а потом отправим его Web-браузеру пользователя с помощью HTML-шаблона custList, предварительно очистив поле Web-браузера:

Response.Clear CustList.WriteTemplate "CustList.htm"

Запустите приложение, нажав клавишу <F5>. Вам будет предложено установить режим отладки. Выберите из списка, расположенного рядом с опцией Start Component, созданный нами WebClass — Default.

Рис. 19.15. Ввод данных о покупателе в предоставленный Web-сервером шаблон

Далее потребуется создание виртуального каталога, куда будет помещена ASP-страница. Без этого не может начаться даже отладочный запуск IIS Application.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Взаимодействие Internet-приложений с базами данных

Усложним наш пример. Теперь при первом обращении к ASP-странице будем отображать содержимое таблицы customer базы данных, а при нажатии на кнопку Добавить будем посылать все ту же форму для ввода данных о покупателе, однако полученные результаты будем заносить опять же в базу данных.

Для доступа к базе данных будем использовать технологию ADO, поэтому откройте окно References нашего проекта и добавьте ссылки на библиотеки Microsoft ActiveX Data Objects 2.1 Library и Microsoft ActiveX Data Objects Recordset 2.0 Library (рис. 19.17).

Рис. 19.17. Добавление ссылок на библиотеки ADO

Теперь нам потребуется обрабатывать событие webciass_initialize для выполнения операций соединения с базой данных и открытия Recordset и событие WebClass_Terminate для закрытия объектов Recordset иConnection.

Подпрограмма viewCustomers () будет посылать Web-браузеру в виде HTML-потока содержимое таблицы Customer базы данных, а также размещать объект типа Submit, при нажатии на который будет производиться вызов формы для ввода информации и последующего добавления новой записи о покупателе. Ранее мы уже говорили о таком способе отправки информации на Web-сервер. В данном случае никакой информации отправлено не будет, нам важно только то, чтобы сервер получил запрос с параметром begininput и передал Web-браузеру шаблон для ввода информации о покупателе.

Обработка события webciass_BeginRequest изменена таким образом, чтобы при первом обращении показывать содержимое таблицы Customer и кнопку Добавить, при обращении к ASP-странице с параметром inputCustomer принимать информацию и добавлять полученные сведения в базу данных, а при обращении с параметром begininput предоставлять форму для ввода информации о покупателе:

Option Explicit

Option Compare Text

Dim mcnnCustomer As ADODB.Connection

Dim mrstCustomer As ADODB.Recordset

Private Sub WebClass_BeginRequest()

If Request.QueryString.Count > 0 Then

'получены данные

If Request.QueryString.Item(1) = "ihputCustomer" Then

'записать полученные данные в таблицу

With mrstCustomer

.AddNew

.Fields("ccompany").Value = Request.Form("txtccompany")

.Fields("clastname").Value = Request.Form("txtclastname")

.Fields("cfirstname").Value = Request.Form("txtcfirstname")

. Fields ("csecondnairie") .Value = Request.Form("txtcsecondname")

. Fields("czip").Value = Request.Form("txtczip")

. Fields("ccountry").Value = Request.Form("txtccountry")

.Fields("cregion").Value = Request.Form("txtcregion")

.Fields("ccity").Value = Request.Form("txtccity")

.Fields("caddress").Value = Request.Form("txtcaddress")

.Update

End With

ViewCustomers

End If

'запрос на добавление записи

If Request.QueryString.Item (1) = "begininput" Then

'отобразить форму для ввода

Customer.WriteTemplate

End If

Else

ViewCustomers

End If

End Sub

'просмотр всех записей

Private Sub ViewCustomers ()

With Response

.Clear

.Write "<HTML>"

.Write "<P align=center> Список покупателей </Р>"

.Write "<FORM NAME=frmOutputCustomer METHOD=POST ACTION=default.asp?mode=begininput>"

.Write "<INPUT name=btnAdd type=submit уа1ие=Добавить>"

If Not (mrstCustomer.BOF And mrstCustomer.EOF) Then

mrstCustomer.MoveFirst

.Write "<TABLE border=l>"

.Write "<TR>"

.Write "<TD><P align=center> Компания </TD>"

.Write "<TD><P align=center> Фамилия </TD>"

.Write "<TD><P align=center> Имя </TD>"

.Write "<TD><P align=center> Отчество </TD>"

.Write "</TR>"

Do Until mrstCustomer.EOF

.Write "<TR>"

.Write "<TD>" & mrstCustomer.Fields("ccompany") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("clastname") & "</TD>"

.Write "<TD>" & nirstCustomer.Fields("cfirstname") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("csecondname") & "</TD>"

.Write "</TR>"

mrstCustomer.MoveNext

Loop

.Write "</TABLE>"

End If

.Write "</FORM>"

.Write "</HTML>"

End With

End Sub

Private Sub WebClass_Initialize ()

Set mcnnCustomer = New ADODB.Connection

mcnnCustomer.CursorLocation = adUseClient

mcnnCustomer.Provider = "SQLOLEDB.1"

mcnnCustomer.CommandTimeout = 300

"строка для соединения, имя пользователя, пароль

mcnnCustomer.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"

Set mrstCustomer = New ADODB.Recordset

mrstCustomer.Open "Customer", mcnnCustomer, adOpenKeyset, adLockOptimistic, adCmdTable

End Sub

Private Sub WebClass Terminate()

mrstCustomer.Close

Set mrstCustomer = Nothing

mcnnCustomer.Close

Set mcnnCustomer = Nothing

End Sub

Запустите проект. Перед вами достаточно простое Internet-приложение, обменивающееся информацией с базой данных и предоставляющее пользователю Web интерактивные средства для работы с этой информацией.

Замечание

Реальные Internet-приложения гораздо сложнее. Однако в нашем примере мы попытались дать тот минимальный материал, который поможет вам в дальнейшем при освоении принципов проектирования для World Wide Web.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 19. Создание простых Internet-приложений.

В этой главе рассмотрим создание простых приложений, работающих в сети Internet (Интернет) или intranet (интранет).

Прежде чем рассматривать вопросы, связанные с программированием, важно уяснить основные принципы функционирования Internet. Итак, прежде всего Internet — это компьютерная сеть, которая предоставляет огромному числу пользователей всей планеты единое информационное пространство. Intranet — сеть, работающая по тем же принципам, что и Internet, но функционирующая отдельно (обычно сети intranet используются предприятиями для собственных целей).

Когда мы говорим об Internet, нас, прежде всего, интересует не техническая реализация связи между теми или иными компонентами сети, а те возможности, которые могут стать доступными при подключении к ней. Их также принято называть службами Internet.

  • E-mail. Служит для отправки электронных документов конкретным абонентам. Посылаемые сообщения могут состоять как из текста, так и включать звуки, графику и прочие ресурсы.
  • Newsgroups. Группы новостей, которые организованы по принципу доски объявлений. Поступающая от пользователей информация группируется по различным темам.
  • Chat. Данная служба предоставляет возможность пользователям, подключенных к Internet, общаться в реальном времени посредством сообщений, набираемых на клавиатуре.
  • FTP. Обеспечивает доступ к удаленному компьютеру. Использует протокол FTP (File Transfer Protocol), который дает возможность пользователю немедленно передать файл через Internet из одного места в другое.
  • WWW (World Wide Web). Механизм в Internet, который применяет гипертекстовые связи для соединения страниц и ресурсов и позволяет осуществлять переадресацию при просмотре документов.

Наиболее интересной на сегодняшний день является служба WWW. С помощью нее создано единое гипертекстовое пространство или всемирная информационная сеть, представляющая собой набор интерактивных документов. Это означает, что можно переходить от одного документа к другому, используя ссылки в тексте (гипертекстовые связи). При этом не важно, где располагаются эти документы — вы можете обращаться к серверам в различных частях света, даже не подозревая об этом. Таким образом "сплетается паутина", опутывающая весь мир, отсюда и происходит название World Wide Web.

Для работы WWW используется протокол HTTP (HyperText Transfer Protocol), который обеспечивает обмен гипертекстовой информацией между Web-сервером и Web-браузером. Web-сервер — элемент WWW, который выдает информацию (в виде гипертекста) для пользователя. Можно рассматривать Web-сервер как некую программу, работающую на удаленном компьютере и предоставляющую в ответ на запросы пользователей ту или иную информацию. Программа, с помощью которой пользователь запрашивает информацию у Web-сервера и просматривает ее, называется Web-браузером (рис. 19.1). Microsoft Internet Explorer — пример такого рода программ.

Гипертекстовая информация, посылаемая пользователю и просматриваемая посредством Web-браузера, описывается с помощью специального языка HTML (HyperText Markup Language), который помимо текста допускает использование специальных описателей или тэгов для разметки страницы, управления шрифтом, цветом и вставки в текст различных объектов (графики, звука и т. п.).

Рис. 19.1. Взаимодействие между Web-сервером и Web-браузером

Чтобы идентифицировать полный путь к документу, графическому или другому файлу, в Internet используется URL (Uniform Resource Locator) — унифицированный адрес ресурса. URL может уточнять протокол, с помощью которого осуществляется доступ к файлу (такому как FTP или HTTP). URL также может специфицировать адрес электронной почты. Uniform Resource Locator имеет следующий формат:

protocol://server/path

Список форматов URL приведен в табл. 19.1.

Таблица 19.1. Формат URL
Раздел | Назначение
protocol | Имя операции, которая будет выполняться при интерпретации данного URL. Наиболее часто используемые методы: file (чтение файла с диска), http (доступ к Web-странице в сети с использованием HTTP-протокола), ftp (запрос файла с анонимного ftp-сервера), mailto (активизирует почтовую сессию с указанным пользователем и хостом), telnet (обращение к службе telnet), news (вызов службы новостей)
server | Имя сервера (необязательно). Если имя сервера не указано, то ссылка считается локальной, и полный путь, указанный далее в URL, вычисляется на той машине, с которой взят HTML-документ, содержащий данную ссылку
path | Частичный или полный путь к документу, который должен вызваться в результате интерпретации URL. Различные Web-сервера сконфигурированы по-разному для интерпретации пути доступа к документу

Примеры использования URL:

http://www.someones.homepage/default.html

ftp://ftp.server.somewhere/ftp.file

file://Server/Share/File.doc

Пользователь может задать URL, при этом Web-браузер отправит запрос соответствующему Web-серверу. В ответ на запрос Web-сервер отправляет текст указанного документа, а Web-браузер отображает его. При переходе по гиперссылке от одного документа к другому реализуется такой же механизм.

Общие сведения о HTML

В этом разделе мы расскажем о создании HTML-документов.

Что такое HTML?

HTML (HyperText Markup Language) — это стандартный язык, предназначенный для создания гипертекстовых документов в среде Web. HTML-документы могут просматриваться различными типами Web-браузеров. Если документ создан с использованием HTML, Web-браузер интерпретирует HTML для выделения различных элементов документа и их первичной обработки. Применение HTML позволяет форматировать документы, используя шрифты, линии и другие графические элементы в любой доступной для их просмотра системе.

Многие документы имеют стандартные элементы, такие как заголовок, параграфы или списки. Используя тэги HTML, вы можете обозначать их, обеспечивая Web-браузеры необходимой информацией для отображения данных элементов, сохраняя общую структуру и информационную полноту документов. Web-браузер — единственное, что требуется для прочтения HTML-документа. Он интерпретирует тэги HTML и воспроизводит на экране документ, не изменяя его первоначального вида.

В большинстве случаев автор документа строго определяет внешний вид своего документа. Читатель, используя возможности своего Web-браузера, может в определенной степени изменять внешний вид документа, но не его содержимое. HTML позволяет отметить при помощи тэга HTML, где в документе должен быть заголовок или абзац, а затем предоставляет Web-браузеру интерпретировать эти тэги.

Основное преимущество HTML заключается в том, что ваш документ может быть просмотрен на Web-браузерах различных типов.

Как создаются HTML-документы?

HTML-документы могут быть созданы с помощью любого текстового редактора или специализированных HTML-редакторов и конвертеров. Выбор редактора для создания HTML-документов зависит исключительно от ваших личных пристрастий. Вы можете использовать специализированные редакторы HTML, например, Frontpage. Однако большинство традиционных средств для создания документов, например Microsoft Word, имеют конвертеры, позволяющие преобразовывать документы в формат HTML.

Тэги в HTML

Все тэги HTML начинаются с "<" и заканчиваются символом ">". Зачастую они используются в паре: стартовый тэг и завершающий тэг. Приведем пример использования тэгов заголовка, определяющих текст, находящийся внутри стартового и завершающего тэга как заголовок документа:

<TITLE> Заголовок документа </TITLE>

Завершающий тэг записывается так же, как стартовый, и отличается от него символом "/" перед текстом внутри угловых скобок. В нашем примере тэг <TITLE> сообщает Web-браузеру о начале текста заголовка, а тэг </TITLE> — о его завершении.

Некоторые тэги, например <р>, не требуют завершающего тэга, но его использование придает исходному тексту документа удобочитаемость.

HTML не различает регистр символов, которыми записан тэг, поэтому приведенный ранее пример может выглядеть следующим образом:

<title> Заголовок документа </title>

Замечание

Дополнительные пробелы, символы табуляции и перевода строки, включенные в исходный текст HTML-документа для его лучшей читаемости, игнорируются Web-браузером при отображении документа. HTML-документ может включать эти элементы, только если они помещены внутрь тэгов <PRE> и </PRE>. Подробнее о тэге <PRE> описано ниже.

Основные тэги в HTML

Самый первый тэг, который встречается в документе, должен быть тэгом <HTML>. Данный тэг сообщает Web-браузеру, что документ написан с использованием языка HTML. Самый простой HTML-документ будет выглядеть так:

<HTML> ...некоторый текст... </HTML>

Тэг заголовочной части документа должен быть использован сразу после тэга <HTML> и нигде более в теле документа. Этот тэг обрамляет общее описание документа. Не размещайте какой-либо текст внутри тэга <HEAD>. Стартовый тэг <HEAD> помещается непосредственно перед тэгом <TITLE> и другими тэгами, описывающими документ, а завершающий тэг </HEAD> размещается сразу после окончания описания документа. Например:

<HTML>

<HEAD>

<TITLE> Простой пример </TITLE>

</HEAD>

Совет

Формально, стартовые и завершающие тэги типа <HTML>, <HEAD> и <BODY> необязательны. Но мы настоятельно рекомендуем вам использовать их, поскольку они позволяют Web-браузеру уверенно отделить заголовочную часть документа от смысловой части.

Большинство Web-браузеров отображают содержимое тэга <TITLE> в заголовке окна, содержащего документ, и в файле закладок, если он поддерживается Web-браузером. Заголовок, ограниченный тэгами <TITLE> и </TITLE>, размещается внутри <НЕАD>-ТЭГОВ, как показано выше на примере. Заголовок документа не появляется при отображении самого документа в окне.

Как и любой язык, HTML позволяет вставлять в тело документа комментарии, которые сохраняются при передаче документа по сети, но не отображаются браузером. Синтаксис комментария:

<!-- Комментарий -->

Тэги тела документа обрамляют отображаемую часть HTML-документа. Тело документа может содержать ссылки на другие документы, текст, таблицы, графику и т. д. Тело документа должно находиться между тэгами <BODY> и </BODY>. Это та часть документа, которая отображается как текстовая и графическая информация.

Структурно текст HTML-документа делится на собственно текст, заголовки фрагментов текста, заголовки более высокого уровня и т. д. Первый уровень заголовка обозначается цифрой 1, следующий— 2, и т.д. Большинство браузеров поддерживает интерпретацию шести уровней заголовков, определяя для каждого из них свой собственный стиль и размер. Заголовки глубже шестого уровня не входят в стандарт HTML и могут не обеспечиваться брау-зером. Синтаксис заголовка уровня 1 следующий:

<Н1> Заголовок первого уровня </Н1>

Заголовки могут быть представлены в общем случае так:

<Нх> Заголовок х-го уровня </Нх>

где х — цифра от 1 до 6, определяющая уровень заголовка.

В отличие от многих текстовых редакторов, в HTML-документе игнорируются символы перевода строки. Фактический разрыв строки может находиться в любом месте исходного текста документа (исходя из его текущего размещения и физических размеров окна браузера). Web-браузер осуществляет перевод строки и разделяет абзацы только при наличии тэга <р>. Если вы не будете использовать тэг <р>, то ваш документ будет выглядеть как один сплошной абзац.

Дополнительные параметры тэга <р>:

<Р ALIGN=left|center|right>

позволяют выравнивать абзац соответственно по левому краю, центру и правому краю.

Вы можете центрировать все элементы документа в окне браузера. Для этого можно использовать тэг <CENTER>. Тэг предварительного форматирования <PRE> позволяет отображать текст с обязательным форматированием на экране. Область предварительно отформатированного текста заканчивается завершающим тэгом </PRE>. Внутри тэгов <PRE> ... </PRE> разрешается использовать:

  • перевод строки;
  • символы табуляции (сдвиг на 8 пробелов вправо);
  • непропорциональный шрифт, устанавливаемый браузером.

Если поместить тэги, определяющие формат абзаца, например, <нх> между тэгами <PRE> и </PRE>, то они будут игнорироваться браузером.

Тэг <BR> извещает браузер о разрыве строки (не путать с тэгом разрыва абзаца <р>). Удобно использовать этот тэг в тех местах, где браузер должен отображать строки одну под другой. Дополнительный параметр позволяет расширить возможности тэга <BR>.

<BR CLEAR=left|right|all>

Данный параметр позволяет выполнить не просто перевод строки, а разместить следующую строку с чистой левой (left) или правой (right) границы или с обеих (all) границ окна браузера. Если вы не хотите, чтобы браузер автоматически переносил строку, то можете обозначить ее тэгами <NOBR> и </NOBR>. В этом случае Web-браузер не будет переносить строку, даже если она выходит за границы экрана. Вместо этого появится горизонтальная полоса прокрутки окна браузера. Если вы .все же хотите разбить данную строку на две, но в строго определенном месте, вставьте тэг <WBR>.

В табл. 19.2 приведены основные тэги HTML.

Таблица 19.2. Список базовых гэгов HTML
Стартовый | Завершающий | Описание
<HTML> | </HTML> | Обозначение HTML-документа
<HEAD> | </HEAD> | Заголовочная часть документа
<TITLE> | </TITLE> | Заголовок документа
<BODY> | </BODY> | Тело документа
<H1> - <Нб> | </H1> - </H6> | Заголовок абзаца с первого по шестой уровень
<Р> | </P> | Абзац
<PRE> | </PRE> | Форматированный текст
<BR> |  | Перевод строки без конца абзаца
<FONT SIZE = n> | </FONT> | Управление размером шрифта символов
<B> | </B> | Жирный текст
<I> | </I> | Наклонный текст
<TT> | </TT> | Непропорциональный текст
<HR> |  | Горизонтальная линия
<TABLE> | </TABLE> | Таблица
<TR> | </TR> | Строка таблицы
<TD> | </TD> | Ячейка таблицы
<A HREF="URL"> | </A> | Гиперссылка

Описанные выше тэги — это все, что необходимо вам для того, чтобы начать работать с HTML. Используя данные тэги, вы можете создать простой HTML-документ. Однако, прочитав следующие разделы, вы сможете существенно улучшить внешний вид ваших документов и узнать о других возможностях HTML.

Введение в VBScript

Хотя язык Hypertext Markup Language (HTML) обладает огромными возможностями для управления документом, ему далеко до алгоритмических языков программирования в полном смысле этого слова. Для расширения возможностей HTML разработаны специальные языки сценариев, один из которых — VBScript.

VBScript является подмножеством языка Visual Basic. Он лишен того разнообразия возможностей, которое присуще Visual Basic, однако его преимущество заключается в широте применения. В первую очередь VBScript предназначен для использования в Web-страницах, однако с развитием технологий область его применения существенно расширилась. Теперь он используется в технологии Active Server Page и выполняется сервером макросов (Windows Scripting Host). Microsoft SQL Server 7.0 позволяет использовать VBScript для операций с данными.

VBScript при использовании в Web-странице включается в состав HTML-документа и отправляется Web-браузеру. Далее браузер распознает текст VBScript и вместо отображения на экране интерпретирует и выполняет его. Сценарий, написанный на VBScript, выполняется на компьютере пользователя, просматривающего Web-страницу. Таким образом, к нам в руки попадает мощнейшее средство создания интерактивных приложений в среде Web.

Приведем пример простейшего HTML-документа, который содержит кнопку с надписью Нажми меня (помните "Приключения Алисы в стране чудес"?). При нажатии на кнопку выполняется программа, написанная на VBScript (ее код включен в текст HTML-документа). В результате каждого нажатия кнопка увеличивается в размерах за счет того, что надпись на ней дополняется пробелами справа и слева.

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

Sub btnHitMe_OnClick

Document.frmSimple.btnHitMe.value=" "+Docmrient. frmSimple.btnHitMe.value+" "

End Sub

-->

</SCRIPT>

<BODY>

<FORM name=frmSimple>

<INPUT name=btnHitMe type=button уа1ие="Нажми меня">

</FORM>

</BODY>

</HTML>

Для выполнения программ, написанных на VBScript, предназначается так называемое ядро сценариев (scripting engine), которое находится в файле VBSCRIPT.DLL, размещенном в системном каталоге установленной операционной системы. Этот файл используют все программы, поддерживающие VBScript, поэтому обычно ядро сценариев входит в комплект их поставки. Файл VBSCRIPT.DLL имеет несколько версий, если некоторые наши примеры не будут у вас работать, обновите'его версию.

VBScript не единственный язык, который можно поместить в HTML-документ. Его соперник — JavaScript, который в значительной степени отличается по синтаксису.

Замечание

Некоторые Web-браузеры, например Netscape Navigator компании Netscape, не поддерживают VBScript. Однако браузер Microsoft Internet Explorer поддерживает оба типа сценариев. Такая ситуация может вызывать ограничения при использовании VBScript в глобальной сети Internet, где невозможно заранее предугадать тип пользовательского браузера.

Включить текст сценария в HTML-документ можно с помощью тэга <SCRIPT>, указав с помощью параметра LANGUAGE язык сценария "VBScript":

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

'Здесь располагается текст сценария

-->

</SCRIPT>

</HTML>

Совет

Как уже отмечалось, не все типы Web-браузеров поддерживают VBScript, поэтому рекомендуем вам использовать тэги комментария "<!--"... "-->" и заключать в них текст сценария, написанного на VBScript. Это никак не повлияет на выполнение кода, но предотвратит его вывод на экран тем браузером, который не поддерживает VBScript.

Некоторые ограничения VBScript

В VBScript все используемые переменные имеют тип variant, то есть при объявлении переменных или параметров процедур и функций вы не можете указывать их тип, как это было в Visual Basic. Однако, вы по-прежнему можете использовать оператор Option Explicit в начале HTML-документа, чтобы потребовать явного объявления всех переменных.

Чтобы определить тип значения, содержащегося в переменной типа variant, вы можете применить функцию туремате(<переменная>), которая возвращает строку, описывающую тип значения. Можно также использовать семейство функций IsStr (<переменная>), IsDate (<переменная>) и т.д., которые возвращают True, если значение имеет соответствующий тип, или False — в противном случае.

Еще одно отличие VBScript от Visual Basic: в цикле For после оператора Next не указывается имя переменной, отвечающей за отсчет итераций цикла.

Объектная модель и обработка событий

В коде сценария VBSrcipt вы можете получать доступ к включенным в состав HTML-документа стандартным элементам управления, таким как поля ввода, кнопки, формы данных. Их можно добавить, используя тэг <INPUT>, основные атрибуты которого: NAME — имя объекта в документе, STYLE — размеры и стиль, TYPE — тип элемента (BUTTON, SUBMIT и т. п.). Например, вставить кнопку Продолжить можно следующим образом:

<INPUT name=btnContinue type=button vаluе=Продолжить>

Вы можете также включать в состав HTML-документа компоненты ActiveX с помощью тэга <OBJECT>. Его атрибуты: ID — имя объекта в документе, CLASSIC — идентификационный номер класса в реестре системы, DATA — адрес в формате URL, откуда объект должен получать данные, CODEBASE — адрес (LJRL), по которому находится код объекта, HEIGHT, WIDTH — высота и ширина. Для установки свойств ActiveX компонента используется тэг <PARAM>, имеющий атрибуты: NAME — имя свойства, VALUE — устанавливаемое значение.

Для обработки событий элементов управления и ActiveX компонентов необходимо определить подпрограмму с именем, первую часть которого составляет имя объекта, а вторую часть (через прочерк) — имя события. Например, обработчик события, которое возникает при нажатии на кнопку btnContinue, можно описать так:

Sub btnContinue_OnClick()

Вы можете обрабатывать следующие события стандартных элементов управления: onclick (при щелчке мышью на элементе управления), Dblclick (при двойном щелчке), MouseOver (при перемещении мыши над объектом) и другие. Если говорить о компонентах ActiveX, то перечень доступных событий для них полностью зависит от того, какие события предусмотрены в нем самом.

В сценарии VBScript доступны некоторые стандартные объекты HTML, использование которых может быть полезным при разработке (табл. 19.3).

Таблица 19.3. Наиболее важные объекты HTML
Объект | Методы, события | Описание
Window |  | Является исходным объектом, поэтому не требуется указывать имя при обращении к его свойствам и методам
 | Navigate | Метод, переключающий окно на другой адрес URL
 | Close | Метод, закрывающий окно
 | OnLoad | Событие, которое возникает при загрузке страницы (используется в тэге <BODY>)
 | OnUnload | Событие, которое возникает при выгрузке страницы (используется в тэге <BODY>)
Document |  | Основной объект. Может содержать дочерние объекты типа Form
 | BgColor | Метод, устанавливающий цвет фона
 | FgColor | Метод, устанавливающий цвет текста
 | Open | Метод, открывающий документ для записи дополнительных строк в формате HTML
 | Write | Метод, записывающий строку в документ
 | Close | Метод, закрывающий документ
Form |  | Объект, содержащий элементы управления

Пример использования DHTML

Проект DHTML — одно из предложенных Microsoft средств для создания Internet-приложении, функционирующих на стороне пользователя (поддерживается с версии Internet Explorer 4.01). Важной особенностью DHTML является то, что для написания его кода используется не VBScript, a VBA (полное множество языковых конструкций и возможностей языка Visual Basic). Также удобно то, что работа над проектом осуществляется в привычной для вас интерактивной среде Visual Basic. Однако существенный недостаток DHTML — это то, что для успешного его использования потребуется знакомство с рекомендациями Document Object Model (DOM), разработанными фирмой Microsoft и определяющими множество объектов и их взаимосвязей. Рассмотрение DOM выходит за рамки этой книги. Однако попытаемся познакомиться со средствами разработки DHTML, не углубляясь в сложные детали.

Создайте новый проект, воспользовавшись в диалоговом окне New Project значком DHTML Application (рис. 19.2).

Рис. 19.2. Создание проекта типа DHTML Application

Перед вами появится окно DHTML Project (рис. 19.3). В правой части отображается внешний вид с9здаваемого HTML-документа, в левой — его текстовое содержание в виде иерархического списка.

Рис. 19.3. Окно проекта DHTML Project

Панель инструментов содержит элементы управления, используемые при создании DHTML, например, кнопки, текстовые поля, рисунки, гиперссыл-ки. Попробуйте добавить их в DHTML. Вы видите, что работа с ними строится по такому же принципу, что и со стандартными компонентами Visual Basic. Их можно перемещать, изменять размеры, а также задавать значения свойств в окне Properties.

Пример создания DHTML-проекта

Создадим проект DHTML, который будет представлять собой форму для ввода информации о покупателе (наименование компании, фамилия, имя, отчество представителя, почтовый индекс, страна, регион, город, адрес). Назовите Проект Customer, а DHTML-СТраницу — InputCustomer.

Нажмите кнопку DHTML Page Designer Properties, расположенную на панели инструментов окна. Перед вами откроется диалоговое окно Свойства: InputCustomer (рис. 19.4). Выберите в нем опцию Save HTML in an external file, чтобы созданная нами Web-страница была сохранена в виде документа HTML. Далее укажите место на диске и имя создаваемого HTML-документа.

Рис. 19.4. Окно определения свойств проекта DHTML

С помощью кнопки New вы можете создать новый HTML-файл, а с помощью Open — открыть существующий.

Вернитесь в окно DHTML Project. На панели элементов управления выберите текстовое поле для ввода компании и добавьте его в правую часть окна конструктора DHTML. Назовите поле txtccompany. Теперь определим для этого поля надпись, отражающую его предназначение. При работе с обычной формой Visual Basic, а не с конструктором DHTML, мы бы использовали самый привычный способ: добавление элемента управления Label. Однако при проектировании HTML-документа достаточно установить курсор справа от поля ввода и ввести текст так же, как в редакторе Microsoft Word.

У объектов в DHTML существует два режима привязки: абсолютная (когда мы располагаем объекты в HTML-документе, задавая их местоположение и размеры координатами) и относительная (когда объекты располагаются в тексте документа, и их местоположение полностью зависит от того, в какое место текста они включены). Переключать эти режимы можно с помощью кнопки Absolute Position. В нашем примере воспользуемся режимом относительной привязки, а для выравнивания компонентом будем размещать их в таблице.

Для того чтобы вставить таблицу в DHTML, нажмите кнопку Table operations, далее в появившемся меню выберите Insert Table. Перед вами таблица, состоящая из двух строк и двух столбцов. В левом столбце расположите метки, в правом — поля для ввода. Двух строк в таблице недостаточно, поэтому добавьте их, нажав кнопку Table Operations и выбрав Insert Row.

Теперь перетащите в таблицу уже добавленный компонент и текстовое примечание к нему, а также добавьте все остальные компоненты, которые потребуются для ввода информации о покупателе. Настроить их свойства можно так же, как вы это делали с обычными компонентами Visual Basic — с помощью окна Properties. В частности, вам необходимо настроить их наименования и допустимую длину вводимых значений (табл. 19.4).

Таблица 19.4. Настройка свойств объектов в проекте Customer
Метка | Имя объекта | Максимально допустимая длина
Компания | txtecompany | 20
Фамилия | txtelastname | 16
Имя | txtefrstname | 16
Отчество | txtosecondname | 16
Почтовый индекс | txtczip | 6
Страна | txtccountry | 20
Регион | txtcregion | 3
Город | txtccity | 20
Адрес | txtcaddress | 60

В начало документа добавьте заголовок, а в конец — кнопку, которой пользователь будет подтверждать ввод и осуществлять передачу введенных данных на Web-сервер (о том, как это организовать, будет сказано позже). Внешний вид готового проекта Customer показан на рис. 19.5.

Рис. 19.5. Внешний вид готового проекта Customer

Рис. 19.6. Тестирование проекта Customer

Чтобы проверить работу проекта, нажмите клавишу <F5>. При этом откроется окно программы Internet Explorer, в котором вы увидите созданный вами HTML-документ (рис. 19.6). Чтобы вернуться в режим редактирования, закройте Internet Explorer и остановите программу.

Отправка данных

Вы также можете посмотреть не только внешний вид, но и исходный текст подготовленного вами HTML-документа и даже внести в него изменения. Для этого нажмите кнопку Launch Editor на панели инструментов окна проекта. Откроется редактор Notepad, содержащий текст HTML-документа.

<HTML>

<HEAD><TITLE></TITLE>

</HEAD>

<BODY>

<P аlign=сеntеr>Введите данные о себе:</Р>

<TABLE border=1 name=tblCustomer>

<TR>

<ТD>Компания

<TD>

<INPUT id="" name=txtccompany

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20>

<TR>

<ТD>Фамилия

<TD>

<INPUT id="" name=txtclastname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Имя

<TD>

<INPUT id="" name=txtcfirstname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Отчество

<TD>

<INPUT id="" name=txtcsecondname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=16>

<TR>

<TD>Пoчтовыйi индекс

<TD>

<INPUT id="" name=txtczip

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=6>

<TR>

<ТD>Страна

<TD>

<INPUT id="" name=txtccountry

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=2 0>

<TR>

<TD>Регион

<TD>

<INPUT id="" name=txtcregion

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=3>

<TR>

<TD>Город</TD>

<TD>

<INPUT id="" name=txtccity

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20></TD></TR>

<TR>

<TD>Aдpec</TD>

<TD>

<INPUT id="" name=txtcaddress

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=60></TD></TR></TABLE></P>

<INPUT id=btnContinue name=btnContinue style="HEIGHT: ЗОрх; LEFT: 189px;

POSITION: absolute; TOP: 391px; WIDTH: 160px" type=button

vаlue=Продолжить >

</BODY></HTML>

Для того чтобы данные, содержащиеся в полях ввода, можно было отправить на сервер, поля ввода необходимо поместить в форму данных. Начало формы в документе HTML обозначается тэгом <FORM>, конец — тэгом </FORM>. При этом тэг <FORM> может иметь атрибуты: имя формы и метод отправки данных.

Добавьте строчку <FORM NAME=frminputCustomer METHOD=POST> перед тэгом <TABLE> и тэг </FORM> перед тэгом </BODY> в исходном тексте вашего HTML-документа. В результате этого все поля ввода и кнопка Продолжить оказались внутри формы данных с именем frminputCustomer. Теперь сохраните текст и закройте редактор Notepad. Visual Basic сообщит о том, что данные были изменены и предложит обновить их. Нажмите кнопку Yes.

Существует два способа отправки данных на сервер. Первый и самый простой — использование элемента управления типа submit. Если пользователь нажмет на такую кнопку, расположенную внутри формы данных, то вся введенная в остальные элементы управления информация будет немедленно передана на Web-сервер. Недостатком данного способа является то, что мы не сможем контролировать правильность введенных значений, поэтому применим второй способ — использование сценария VBScript для проверки правильности вводимой информации и отправки данных. Вставьте в начало HTML-документа следующий код:

<SCRIPT Language="VBScript">

<!--

Sub btnContinue_OnClick()

Dim frmCurrent

Set frmCurrent=Document.frmInputCustomer

If IsNumeric(frmCurrent.txtczip.Value) then

frmCurrent.Action="default.asp?mode=inputcustome r"

frmCurrent.submit

Else

MsgBox "В поле Почтовый индекс недопустимы буквы",,"Ошибка типа"

End If

End Sub

-->

</SCRIPT>

Замечание

В элементе управления HTML поле ввода для доступа к значению использует свойство value вместо привычного свойства Text.

В этом фрагменте кода описывается процедура btnContinue_Onciick, которая обрабатывает событие, возникающее при нажатии на кнопку btncontinue. Сначала определяется ссылка на форму данных, содержащую поля ввода. Далее проверяется, является ли числовым значение, введенное в поле Почтовый индекс. Если это не так, то в диалоговом окне выводится сообщение об ошибке (рис. 19.7).

Рис. 19.7. Вывод сообщений пользователю с помощью процедуры MsgBox

В противном случае мы задаем параметры отправки данных и вызываем метод submit формы данных, который и осуществляет отправку введенной информации на Web-сервер. Как обрабатывать эти данные на сервере, вы узнаете в следующем разделе.

Введение в Active Server Page

Работая в сети Internet, вы, наверное, обратили внимание на то, что большинство страниц в World Wide Web нельзя назвать статическими. Например, работая с поисковым сервером, вы получаете перечень ссылок, удовлетворяющих вашему запросу. Это яркий пример, когда Web-страница представляет собой не простой HTML-документ, а видоизменяется в зависимости от различных условий, будь то принимаемые запросы от пользователей или изменение информации в источниках данных. Чтобы понять, как функционируют такие Web-страницы, рассмотрим подробнее работу Web-сервера. На запрос Web-браузера Web-сервер должен ответить HTML-потоком. Однако главной особенностью динамических страниц является то, что отправляется не подготовленный заранее HTML-документ, а созданный или видоизмененный "на лету".

Для генерации HTML-потока на Web-сервере запускается специальная программа. На сегодняшний день существует несколько технологий создания подобных программ. Это может быть CGI-сценарий или программа на традиционном алгоритмическом языке. Еще одним вариантом может стать использование относительно новой технологии фирмы Microsoft — Active Server Pages (Активные страницы сервера). ASP основывается на появившейся возможности Web-сервера (Internet Information Server или Personal Web Server) обрабатывать ASP-сценарий, прототипом для которого послужил все тот же Visual Basic. ASP-сценарий во многом похож на VBScript, с той лишь разницей, что он выполняется на сервере, а не на клиентском компьютере. Это имеет ряд преимуществ по сравнению с VBScript.

  • Время выполнения оказывается меньше за счет того, что производительность сервера зачастую гораздо выше.
  • HTML-документ не нуждается в интерпретации, а следовательно, может просматриваться любым Web-браузером, поддерживающим стандарт HTML (за исключением тех случаев, когда в создаваемую HTML-страницу Web-сервер добавляет VBScript).
  • Пользователь не сможет просмотреть исходный код программы.
  • Код ASP-сценария может обращаться к ресурсам сервера (обмениваться конфиденциальной информацией без угрозы утечки информации).

Переход от HTML к ASP

ASP-страница во многом похожа на HTML, поскольку основана на тех же стандартах. Web-сервер распознает Active Server Page по расширению asp. Если просто изменить расширение существующего DHTML-документа на asp, вы не получите динамическую страницу. Ключом к созданию таких страниц является добавление ASP-сценария. Для указания Web-серверу фрагмента кода, который должен исполняться на сервере, служат маркеры "<%" и "%>".

Совет

Вы также можете указать, что фрагмент кода должен выполниться на сервере, используя в тэге <SCRIPT> атрибут RUNAT="SERVER". Например: <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> ... </SCRIPT>.

ASP-страница, случайным образом формирующая приветствие, будет выглядеть следующим образом:

<HTML>

<BODY>

<%

Randomize

Select Case Round(Rnd()*4)

Case 0

Response.Write ("Привет")

Case 1

Response.Write ("Добро пожаловать")

Case 2

Response.Write ("Рады видеть")

Case 3

Response.Write ("День добрый")

Case 4

Response.Write ("Здравствуйте")

End Select

%>

<BODY>

<HTML>

Следующее отличие ASP от HTML — объектная модель. В ASP-сценарии доступны некоторые специфичные только для этой технологии объекты.

  • Response — для формирования HTML-потока.
  • Request — для анализа запроса к ASP-странице.
  • Session — хранит информацию о текущем подключении.
  • Server — для создания на сервере объектов, доступных в ASP-приложении.

Виртуальные каталоги

Технология ASP поддерживается Internet Information Server (под Windows NT) и Personal Web Server (под Windows 95 и Windows 98). Для иллюстрации работы ASP будем использовать Personal Web Server. Настроить параметры его работы можно с помощью программы Personal Web Manager.

Для тестирования нашего примера необходимо создать виртуальный каталог. Это означает, что надо соотнести логическое имя, которое мы будем использовать в URL в разделе path, с физическим каталогом на диске сервера. При отладке наших примеров применим локальную модель, т. е. Web-сервер и Web-браузер будут работать на одном компьютере, хотя обычно это бывает не так. Запустите Personal Web Manager и в открывшемся диалоговом окне щелкните на значке Advanced.

При установленном флажке Enable Default Document можно задать имена файлов, считываемых сервером по умолчанию при посещении пользователем виртуальных каталогов без указания имен файлов в URL. Задайте Default Document(s) равным Default.htm, Default.asp. Теперь создайте на диске новый каталог, например C:\WEBSHARE\WWWROOT\MyDir, и в этот каталог поместите файл Default.asp с текстом нашего примера, формирующего приветствие. Теперь, чтобы создать новый виртуальный каталог, поддерживаемый нашим Web-сервером, нажмите кнопку Add.

В поле Directory появившегося диалогового окна Add Directory введите путь к созданному каталогу, а в поле Alias — имя нового виртуального каталога Web-сервера. В разделе Access осуществляется управление доступом, причем возможны следующие режимы.

  • Read — дает право на чтение HTML-данных.
  • Scripts— позволяет выполнять ASP-сценарии из данного виртуальною каталога (потребуется установить, если вы хотите использовать ASP-сценарии).
  • Execute — позволяет пользователю выполнять в виртуальном каталоге сценарии и другие программы.

Итак, теперь вы можете просмотреть свою страницу в сети Internet. Для этого загрузите Internet Explorer и укажите следующий адрес:

http://MyServer/test/

Замечание

Предполагается, что MyServer — имя вашего сервера в настройках DNS.

Web-сервер станет выполнять ASP-сценарии, содержащийся в файле Default.asp, динамически сформирует HTML-документ и отправит его Web-браузеру, который позволит вам увидеть наше приветствие. Поэкспериментируйте, нажимая кнопку Refresh. Вы будете получать каждый раз (или почти каждый раз) новое приветствие.

Создание проекта типа US Application

В Visual Basic имеется тип проекта IIS Application, который дает возможность создавать ASP-страницы. Этот тип проекта предоставляет разработчику специальный класс webciass, который оформляется в виде ActiveX Dll и встраивается в ASP-страницу, инициализируется при обращении к ней и работает на сервере. Все тонкости этого механизма Visual Basic берет на себя, предоставляя вам привычную среду для создания проектов. Таким образом, вы разрабатываете приложение, затем оно компилируется и встраивается в ASP-страницу, при этом для вас не существует ограничений VBScript, и вы можете пользоваться всеми возможностями Visual Basic при написании кода.

Рассмотрим создание проекта IIS Application на следующем простом примере. Web-сервер будет предлагать ввести данные о покупателе, принимать их, формировать на их основе HTML-документ и отправлять его обратно пользователю для подтверждения.

Создайте новый проект, выбрав в диалоговом окне New Project (рис. 19.10) значок IIS Application.

Рис. 19.10. Создание проекта типа IIS Application

Перед вами появляется окно, в котором можно добавлять к проекту HTML-шаблоны, а также элементы webitem. HTML-шаблоны— это обычные HTML-документы, которые вы сможете посылать Web-браузеру пользователя. Элементы webitem содержат шаблоны, однако, обрабатывая события и используя методы этих элементов, вы также можете формировать HTML-поток.

Назовите проект serverPage, а единственный входящий в его состав объект WebClass — Default. Задайте для свойства StateManagement объекта Default значение wcRetainInstance. Это приведет к тому, что экземпляр класса WebClass будет создаваться один раз, а не при каждом обращении Web-браузера к ASP-странице.

Добавьте в проект два шаблона HTML, воспользовавшись кнопкой Add HTML Template Webitem. Первый, на основе созданного нами ранее файла Customer.htm, предназначен для ввода информации о покупателе, второй — для отправки созданного нами HTML-документа, содержащего принятые от пользователя данные.

В окне Project выберите объект Default, перейдите в окно редактора кода данного объекта и введите следующий текст:

Option Explicit

Option Compare Text

Private Sub WebClass BeginRequest()

If Request.QueryString.Count > 0 Then

If Request.QueryString.Item(1) = "inputcustomer" Then

'записать данные в html-файл на сервере

Open "С:\Work\ServerPage\custlist.htm" For Output As #1

Print #1, "<HTML>"

Print #1, "<P аlign=сеnter>Сведения о последнем покупателе:</Р>"

With Request

Print #1, "Компания: " & .Form("txtccompany") & "<Р>"

Print #1, "Фамилия: " & .Form("txtclastname") & "<P>"

Print #1, "Имя: " & .FormC'txtcfirstname") & "<Р>"

Print #1, "Отчество: " & .Form("txtcsecondname") & "<P>"

Print #1, "Почтовый индекс: " & .Form("txtczip") & "<Р>"

Print #1, "Страна: " & .Form("txtccountry") & "<Р>"

Print #1, "Регион: " & .FormC'txtcregion") & "<P>"

Print #1, "Город: " & .Form("txtccity") & "<Р>"

Print #1, "Адрес: " & .Form("txtcaddress")

End With

Print #1, "</HTML>"

Close #1

'отправить файл клиенту

Response.Clear

CustList.WriteTemplate "custlist.htm"

End If

Else

'отправить клиенту форму для ввода

Customer.WriteTemplate

End If

End Sub

По сути дела мы описали обработку события BeginRequest, которое происходит всякий раз при обращении Web-браузера к ASP-странице. Здесь мы анализируем содержимое коллекции QueryString объекта Response. При первом обращении она пуста, и мы отправляем пользователю форму для ввода данных, вызвав метод WriteTemplate нашего HTML-шаблона.

Рассмотрим параметры, которые мы устанавливаем при передаче введенных пользователем данных Web-серверу:

default.asp?mode=inputcustomer

В приведенной строке мы определили имя ASP-страницы (default.asp), которой будет передана информация, и режим (inputcustomer), что позволит нам различить ситуацию обращения. Итак, если в коллекции QueryString объекта Response находится элемент inputcustomer, мы можем считать, что при данном обращении к ASP-странице были переданы данные, следовательно, надо их принять, сформировать HTML-документ на их основе и отправить его пользователю. Получить доступ к принятым данным можно, используя коллекцию Form. Элементы этой коллекции — наши поля ввода. Воспользуемся стандартным механизмом Visual Basic для работы с файлами и сохраним принятые данные в файле на нашем диске \\ServerPage\CustList.htm, а потом отправим его Web-браузеру пользователя с помощью HTML-шаблона custList, предварительно очистив поле Web-браузера:

Response.Clear CustList.WriteTemplate "CustList.htm"

Запустите приложение, нажав клавишу <F5>. Вам будет предложено установить режим отладки. Выберите из списка, расположенного рядом с опцией Start Component, созданный нами WebClass — Default.

Рис. 19.15. Ввод данных о покупателе в предоставленный Web-сервером шаблон

Далее потребуется создание виртуального каталога, куда будет помещена ASP-страница. Без этого не может начаться даже отладочный запуск IIS Application.

Взаимодействие Internet-приложений с базами данных

Усложним наш пример. Теперь при первом обращении к ASP-странице будем отображать содержимое таблицы customer базы данных, а при нажатии на кнопку Добавить будем посылать все ту же форму для ввода данных о покупателе, однако полученные результаты будем заносить опять же в базу данных.

Для доступа к базе данных будем использовать технологию ADO, поэтому откройте окно References нашего проекта и добавьте ссылки на библиотеки Microsoft ActiveX Data Objects 2.1 Library и Microsoft ActiveX Data Objects Recordset 2.0 Library (рис. 19.17).

Рис. 19.17. Добавление ссылок на библиотеки ADO

Теперь нам потребуется обрабатывать событие webciass_initialize для выполнения операций соединения с базой данных и открытия Recordset и событие WebClass_Terminate для закрытия объектов Recordset иConnection.

Подпрограмма viewCustomers () будет посылать Web-браузеру в виде HTML-потока содержимое таблицы Customer базы данных, а также размещать объект типа Submit, при нажатии на который будет производиться вызов формы для ввода информации и последующего добавления новой записи о покупателе. Ранее мы уже говорили о таком способе отправки информации на Web-сервер. В данном случае никакой информации отправлено не будет, нам важно только то, чтобы сервер получил запрос с параметром begininput и передал Web-браузеру шаблон для ввода информации о покупателе.

Обработка события webciass_BeginRequest изменена таким образом, чтобы при первом обращении показывать содержимое таблицы Customer и кнопку Добавить, при обращении к ASP-странице с параметром inputCustomer принимать информацию и добавлять полученные сведения в базу данных, а при обращении с параметром begininput предоставлять форму для ввода информации о покупателе:

Option Explicit

Option Compare Text

Dim mcnnCustomer As ADODB.Connection

Dim mrstCustomer As ADODB.Recordset

Private Sub WebClass_BeginRequest()

If Request.QueryString.Count > 0 Then

'получены данные

If Request.QueryString.Item(1) = "ihputCustomer" Then

'записать полученные данные в таблицу

With mrstCustomer

.AddNew

.Fields("ccompany").Value = Request.Form("txtccompany")

.Fields("clastname").Value = Request.Form("txtclastname")

.Fields("cfirstname").Value = Request.Form("txtcfirstname")

. Fields ("csecondnairie") .Value = Request.Form("txtcsecondname")

. Fields("czip").Value = Request.Form("txtczip")

. Fields("ccountry").Value = Request.Form("txtccountry")

.Fields("cregion").Value = Request.Form("txtcregion")

.Fields("ccity").Value = Request.Form("txtccity")

.Fields("caddress").Value = Request.Form("txtcaddress")

.Update

End With

ViewCustomers

End If

'запрос на добавление записи

If Request.QueryString.Item (1) = "begininput" Then

'отобразить форму для ввода

Customer.WriteTemplate

End If

Else

ViewCustomers

End If

End Sub

'просмотр всех записей

Private Sub ViewCustomers ()

With Response

.Clear

.Write "<HTML>"

.Write "<P align=center> Список покупателей </Р>"

.Write "<FORM NAME=frmOutputCustomer METHOD=POST ACTION=default.asp?mode=begininput>"

.Write "<INPUT name=btnAdd type=submit уа1ие=Добавить>"

If Not (mrstCustomer.BOF And mrstCustomer.EOF) Then

mrstCustomer.MoveFirst

.Write "<TABLE border=l>"

.Write "<TR>"

.Write "<TD><P align=center> Компания </TD>"

.Write "<TD><P align=center> Фамилия </TD>"

.Write "<TD><P align=center> Имя </TD>"

.Write "<TD><P align=center> Отчество </TD>"

.Write "</TR>"

Do Until mrstCustomer.EOF

.Write "<TR>"

.Write "<TD>" & mrstCustomer.Fields("ccompany") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("clastname") & "</TD>"

.Write "<TD>" & nirstCustomer.Fields("cfirstname") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("csecondname") & "</TD>"

.Write "</TR>"

mrstCustomer.MoveNext

Loop

.Write "</TABLE>"

End If

.Write "</FORM>"

.Write "</HTML>"

End With

End Sub

Private Sub WebClass_Initialize ()

Set mcnnCustomer = New ADODB.Connection

mcnnCustomer.CursorLocation = adUseClient

mcnnCustomer.Provider = "SQLOLEDB.1"

mcnnCustomer.CommandTimeout = 300

"строка для соединения, имя пользователя, пароль

mcnnCustomer.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"

Set mrstCustomer = New ADODB.Recordset

mrstCustomer.Open "Customer", mcnnCustomer, adOpenKeyset, adLockOptimistic, adCmdTable

End Sub

Private Sub WebClass Terminate()

mrstCustomer.Close

Set mrstCustomer = Nothing

mcnnCustomer.Close

Set mcnnCustomer = Nothing

End Sub

Запустите проект. Перед вами достаточно простое Internet-приложение, обменивающееся информацией с базой данных и предоставляющее пользователю Web интерактивные средства для работы с этой информацией.

Замечание

Реальные Internet-приложения гораздо сложнее. Однако в нашем примере мы попытались дать тот минимальный материал, который поможет вам в дальнейшем при освоении принципов проектирования для World Wide Web.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 19. Создание простых Internet-приложений.

В этой главе рассмотрим создание простых приложений, работающих в сети Internet (Интернет) или intranet (интранет).

Прежде чем рассматривать вопросы, связанные с программированием, важно уяснить основные принципы функционирования Internet. Итак, прежде всего Internet — это компьютерная сеть, которая предоставляет огромному числу пользователей всей планеты единое информационное пространство. Intranet — сеть, работающая по тем же принципам, что и Internet, но функционирующая отдельно (обычно сети intranet используются предприятиями для собственных целей).

Когда мы говорим об Internet, нас, прежде всего, интересует не техническая реализация связи между теми или иными компонентами сети, а те возможности, которые могут стать доступными при подключении к ней. Их также принято называть службами Internet.

  • E-mail. Служит для отправки электронных документов конкретным абонентам. Посылаемые сообщения могут состоять как из текста, так и включать звуки, графику и прочие ресурсы.
  • Newsgroups. Группы новостей, которые организованы по принципу доски объявлений. Поступающая от пользователей информация группируется по различным темам.
  • Chat. Данная служба предоставляет возможность пользователям, подключенных к Internet, общаться в реальном времени посредством сообщений, набираемых на клавиатуре.
  • FTP. Обеспечивает доступ к удаленному компьютеру. Использует протокол FTP (File Transfer Protocol), который дает возможность пользователю немедленно передать файл через Internet из одного места в другое.
  • WWW (World Wide Web). Механизм в Internet, который применяет гипертекстовые связи для соединения страниц и ресурсов и позволяет осуществлять переадресацию при просмотре документов.

Наиболее интересной на сегодняшний день является служба WWW. С помощью нее создано единое гипертекстовое пространство или всемирная информационная сеть, представляющая собой набор интерактивных документов. Это означает, что можно переходить от одного документа к другому, используя ссылки в тексте (гипертекстовые связи). При этом не важно, где располагаются эти документы — вы можете обращаться к серверам в различных частях света, даже не подозревая об этом. Таким образом "сплетается паутина", опутывающая весь мир, отсюда и происходит название World Wide Web.

Для работы WWW используется протокол HTTP (HyperText Transfer Protocol), который обеспечивает обмен гипертекстовой информацией между Web-сервером и Web-браузером. Web-сервер — элемент WWW, который выдает информацию (в виде гипертекста) для пользователя. Можно рассматривать Web-сервер как некую программу, работающую на удаленном компьютере и предоставляющую в ответ на запросы пользователей ту или иную информацию. Программа, с помощью которой пользователь запрашивает информацию у Web-сервера и просматривает ее, называется Web-браузером (рис. 19.1). Microsoft Internet Explorer — пример такого рода программ.

Гипертекстовая информация, посылаемая пользователю и просматриваемая посредством Web-браузера, описывается с помощью специального языка HTML (HyperText Markup Language), который помимо текста допускает использование специальных описателей или тэгов для разметки страницы, управления шрифтом, цветом и вставки в текст различных объектов (графики, звука и т. п.).

Рис. 19.1. Взаимодействие между Web-сервером и Web-браузером

Чтобы идентифицировать полный путь к документу, графическому или другому файлу, в Internet используется URL (Uniform Resource Locator) — унифицированный адрес ресурса. URL может уточнять протокол, с помощью которого осуществляется доступ к файлу (такому как FTP или HTTP). URL также может специфицировать адрес электронной почты. Uniform Resource Locator имеет следующий формат:

protocol://server/path

Список форматов URL приведен в табл. 19.1.

Таблица 19.1. Формат URL
Раздел | Назначение
protocol | Имя операции, которая будет выполняться при интерпретации данного URL. Наиболее часто используемые методы: file (чтение файла с диска), http (доступ к Web-странице в сети с использованием HTTP-протокола), ftp (запрос файла с анонимного ftp-сервера), mailto (активизирует почтовую сессию с указанным пользователем и хостом), telnet (обращение к службе telnet), news (вызов службы новостей)
server | Имя сервера (необязательно). Если имя сервера не указано, то ссылка считается локальной, и полный путь, указанный далее в URL, вычисляется на той машине, с которой взят HTML-документ, содержащий данную ссылку
path | Частичный или полный путь к документу, который должен вызваться в результате интерпретации URL. Различные Web-сервера сконфигурированы по-разному для интерпретации пути доступа к документу

Примеры использования URL:

http://www.someones.homepage/default.html

ftp://ftp.server.somewhere/ftp.file

file://Server/Share/File.doc

Пользователь может задать URL, при этом Web-браузер отправит запрос соответствующему Web-серверу. В ответ на запрос Web-сервер отправляет текст указанного документа, а Web-браузер отображает его. При переходе по гиперссылке от одного документа к другому реализуется такой же механизм.

Общие сведения о HTML

В этом разделе мы расскажем о создании HTML-документов.

Что такое HTML?

HTML (HyperText Markup Language) — это стандартный язык, предназначенный для создания гипертекстовых документов в среде Web. HTML-документы могут просматриваться различными типами Web-браузеров. Если документ создан с использованием HTML, Web-браузер интерпретирует HTML для выделения различных элементов документа и их первичной обработки. Применение HTML позволяет форматировать документы, используя шрифты, линии и другие графические элементы в любой доступной для их просмотра системе.

Многие документы имеют стандартные элементы, такие как заголовок, параграфы или списки. Используя тэги HTML, вы можете обозначать их, обеспечивая Web-браузеры необходимой информацией для отображения данных элементов, сохраняя общую структуру и информационную полноту документов. Web-браузер — единственное, что требуется для прочтения HTML-документа. Он интерпретирует тэги HTML и воспроизводит на экране документ, не изменяя его первоначального вида.

В большинстве случаев автор документа строго определяет внешний вид своего документа. Читатель, используя возможности своего Web-браузера, может в определенной степени изменять внешний вид документа, но не его содержимое. HTML позволяет отметить при помощи тэга HTML, где в документе должен быть заголовок или абзац, а затем предоставляет Web-браузеру интерпретировать эти тэги.

Основное преимущество HTML заключается в том, что ваш документ может быть просмотрен на Web-браузерах различных типов.

Как создаются HTML-документы?

HTML-документы могут быть созданы с помощью любого текстового редактора или специализированных HTML-редакторов и конвертеров. Выбор редактора для создания HTML-документов зависит исключительно от ваших личных пристрастий. Вы можете использовать специализированные редакторы HTML, например, Frontpage. Однако большинство традиционных средств для создания документов, например Microsoft Word, имеют конвертеры, позволяющие преобразовывать документы в формат HTML.

Тэги в HTML

Все тэги HTML начинаются с "<" и заканчиваются символом ">". Зачастую они используются в паре: стартовый тэг и завершающий тэг. Приведем пример использования тэгов заголовка, определяющих текст, находящийся внутри стартового и завершающего тэга как заголовок документа:

<TITLE> Заголовок документа </TITLE>

Завершающий тэг записывается так же, как стартовый, и отличается от него символом "/" перед текстом внутри угловых скобок. В нашем примере тэг <TITLE> сообщает Web-браузеру о начале текста заголовка, а тэг </TITLE> — о его завершении.

Некоторые тэги, например <р>, не требуют завершающего тэга, но его использование придает исходному тексту документа удобочитаемость.

HTML не различает регистр символов, которыми записан тэг, поэтому приведенный ранее пример может выглядеть следующим образом:

<title> Заголовок документа </title>

Замечание

Дополнительные пробелы, символы табуляции и перевода строки, включенные в исходный текст HTML-документа для его лучшей читаемости, игнорируются Web-браузером при отображении документа. HTML-документ может включать эти элементы, только если они помещены внутрь тэгов <PRE> и </PRE>. Подробнее о тэге <PRE> описано ниже.

Основные тэги в HTML

Самый первый тэг, который встречается в документе, должен быть тэгом <HTML>. Данный тэг сообщает Web-браузеру, что документ написан с использованием языка HTML. Самый простой HTML-документ будет выглядеть так:

<HTML> ...некоторый текст... </HTML>

Тэг заголовочной части документа должен быть использован сразу после тэга <HTML> и нигде более в теле документа. Этот тэг обрамляет общее описание документа. Не размещайте какой-либо текст внутри тэга <HEAD>. Стартовый тэг <HEAD> помещается непосредственно перед тэгом <TITLE> и другими тэгами, описывающими документ, а завершающий тэг </HEAD> размещается сразу после окончания описания документа. Например:

<HTML>

<HEAD>

<TITLE> Простой пример </TITLE>

</HEAD>

Совет

Формально, стартовые и завершающие тэги типа <HTML>, <HEAD> и <BODY> необязательны. Но мы настоятельно рекомендуем вам использовать их, поскольку они позволяют Web-браузеру уверенно отделить заголовочную часть документа от смысловой части.

Большинство Web-браузеров отображают содержимое тэга <TITLE> в заголовке окна, содержащего документ, и в файле закладок, если он поддерживается Web-браузером. Заголовок, ограниченный тэгами <TITLE> и </TITLE>, размещается внутри <НЕАD>-ТЭГОВ, как показано выше на примере. Заголовок документа не появляется при отображении самого документа в окне.

Как и любой язык, HTML позволяет вставлять в тело документа комментарии, которые сохраняются при передаче документа по сети, но не отображаются браузером. Синтаксис комментария:

<!-- Комментарий -->

Тэги тела документа обрамляют отображаемую часть HTML-документа. Тело документа может содержать ссылки на другие документы, текст, таблицы, графику и т. д. Тело документа должно находиться между тэгами <BODY> и </BODY>. Это та часть документа, которая отображается как текстовая и графическая информация.

Структурно текст HTML-документа делится на собственно текст, заголовки фрагментов текста, заголовки более высокого уровня и т. д. Первый уровень заголовка обозначается цифрой 1, следующий— 2, и т.д. Большинство браузеров поддерживает интерпретацию шести уровней заголовков, определяя для каждого из них свой собственный стиль и размер. Заголовки глубже шестого уровня не входят в стандарт HTML и могут не обеспечиваться брау-зером. Синтаксис заголовка уровня 1 следующий:

<Н1> Заголовок первого уровня </Н1>

Заголовки могут быть представлены в общем случае так:

<Нх> Заголовок х-го уровня </Нх>

где х — цифра от 1 до 6, определяющая уровень заголовка.

В отличие от многих текстовых редакторов, в HTML-документе игнорируются символы перевода строки. Фактический разрыв строки может находиться в любом месте исходного текста документа (исходя из его текущего размещения и физических размеров окна браузера). Web-браузер осуществляет перевод строки и разделяет абзацы только при наличии тэга <р>. Если вы не будете использовать тэг <р>, то ваш документ будет выглядеть как один сплошной абзац.

Дополнительные параметры тэга <р>:

<Р ALIGN=left|center|right>

позволяют выравнивать абзац соответственно по левому краю, центру и правому краю.

Вы можете центрировать все элементы документа в окне браузера. Для этого можно использовать тэг <CENTER>. Тэг предварительного форматирования <PRE> позволяет отображать текст с обязательным форматированием на экране. Область предварительно отформатированного текста заканчивается завершающим тэгом </PRE>. Внутри тэгов <PRE> ... </PRE> разрешается использовать:

  • перевод строки;
  • символы табуляции (сдвиг на 8 пробелов вправо);
  • непропорциональный шрифт, устанавливаемый браузером.

Если поместить тэги, определяющие формат абзаца, например, <нх> между тэгами <PRE> и </PRE>, то они будут игнорироваться браузером.

Тэг <BR> извещает браузер о разрыве строки (не путать с тэгом разрыва абзаца <р>). Удобно использовать этот тэг в тех местах, где браузер должен отображать строки одну под другой. Дополнительный параметр позволяет расширить возможности тэга <BR>.

<BR CLEAR=left|right|all>

Данный параметр позволяет выполнить не просто перевод строки, а разместить следующую строку с чистой левой (left) или правой (right) границы или с обеих (all) границ окна браузера. Если вы не хотите, чтобы браузер автоматически переносил строку, то можете обозначить ее тэгами <NOBR> и </NOBR>. В этом случае Web-браузер не будет переносить строку, даже если она выходит за границы экрана. Вместо этого появится горизонтальная полоса прокрутки окна браузера. Если вы .все же хотите разбить данную строку на две, но в строго определенном месте, вставьте тэг <WBR>.

В табл. 19.2 приведены основные тэги HTML.

Таблица 19.2. Список базовых гэгов HTML
Стартовый | Завершающий | Описание
<HTML> | </HTML> | Обозначение HTML-документа
<HEAD> | </HEAD> | Заголовочная часть документа
<TITLE> | </TITLE> | Заголовок документа
<BODY> | </BODY> | Тело документа
<H1> - <Нб> | </H1> - </H6> | Заголовок абзаца с первого по шестой уровень
<Р> | </P> | Абзац
<PRE> | </PRE> | Форматированный текст
<BR> |  | Перевод строки без конца абзаца
<FONT SIZE = n> | </FONT> | Управление размером шрифта символов
<B> | </B> | Жирный текст
<I> | </I> | Наклонный текст
<TT> | </TT> | Непропорциональный текст
<HR> |  | Горизонтальная линия
<TABLE> | </TABLE> | Таблица
<TR> | </TR> | Строка таблицы
<TD> | </TD> | Ячейка таблицы
<A HREF="URL"> | </A> | Гиперссылка

Описанные выше тэги — это все, что необходимо вам для того, чтобы начать работать с HTML. Используя данные тэги, вы можете создать простой HTML-документ. Однако, прочитав следующие разделы, вы сможете существенно улучшить внешний вид ваших документов и узнать о других возможностях HTML.

Введение в VBScript

Хотя язык Hypertext Markup Language (HTML) обладает огромными возможностями для управления документом, ему далеко до алгоритмических языков программирования в полном смысле этого слова. Для расширения возможностей HTML разработаны специальные языки сценариев, один из которых — VBScript.

VBScript является подмножеством языка Visual Basic. Он лишен того разнообразия возможностей, которое присуще Visual Basic, однако его преимущество заключается в широте применения. В первую очередь VBScript предназначен для использования в Web-страницах, однако с развитием технологий область его применения существенно расширилась. Теперь он используется в технологии Active Server Page и выполняется сервером макросов (Windows Scripting Host). Microsoft SQL Server 7.0 позволяет использовать VBScript для операций с данными.

VBScript при использовании в Web-странице включается в состав HTML-документа и отправляется Web-браузеру. Далее браузер распознает текст VBScript и вместо отображения на экране интерпретирует и выполняет его. Сценарий, написанный на VBScript, выполняется на компьютере пользователя, просматривающего Web-страницу. Таким образом, к нам в руки попадает мощнейшее средство создания интерактивных приложений в среде Web.

Приведем пример простейшего HTML-документа, который содержит кнопку с надписью Нажми меня (помните "Приключения Алисы в стране чудес"?). При нажатии на кнопку выполняется программа, написанная на VBScript (ее код включен в текст HTML-документа). В результате каждого нажатия кнопка увеличивается в размерах за счет того, что надпись на ней дополняется пробелами справа и слева.

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

Sub btnHitMe_OnClick

Document.frmSimple.btnHitMe.value=" "+Docmrient. frmSimple.btnHitMe.value+" "

End Sub

-->

</SCRIPT>

<BODY>

<FORM name=frmSimple>

<INPUT name=btnHitMe type=button уа1ие="Нажми меня">

</FORM>

</BODY>

</HTML>

Для выполнения программ, написанных на VBScript, предназначается так называемое ядро сценариев (scripting engine), которое находится в файле VBSCRIPT.DLL, размещенном в системном каталоге установленной операционной системы. Этот файл используют все программы, поддерживающие VBScript, поэтому обычно ядро сценариев входит в комплект их поставки. Файл VBSCRIPT.DLL имеет несколько версий, если некоторые наши примеры не будут у вас работать, обновите'его версию.

VBScript не единственный язык, который можно поместить в HTML-документ. Его соперник — JavaScript, который в значительной степени отличается по синтаксису.

Замечание

Некоторые Web-браузеры, например Netscape Navigator компании Netscape, не поддерживают VBScript. Однако браузер Microsoft Internet Explorer поддерживает оба типа сценариев. Такая ситуация может вызывать ограничения при использовании VBScript в глобальной сети Internet, где невозможно заранее предугадать тип пользовательского браузера.

Включить текст сценария в HTML-документ можно с помощью тэга <SCRIPT>, указав с помощью параметра LANGUAGE язык сценария "VBScript":

<HTML>

<SCRIPT LANGUAGE="VBScript">

< ! --

'Здесь располагается текст сценария

-->

</SCRIPT>

</HTML>

Совет

Как уже отмечалось, не все типы Web-браузеров поддерживают VBScript, поэтому рекомендуем вам использовать тэги комментария "<!--"... "-->" и заключать в них текст сценария, написанного на VBScript. Это никак не повлияет на выполнение кода, но предотвратит его вывод на экран тем браузером, который не поддерживает VBScript.

Некоторые ограничения VBScript

В VBScript все используемые переменные имеют тип variant, то есть при объявлении переменных или параметров процедур и функций вы не можете указывать их тип, как это было в Visual Basic. Однако, вы по-прежнему можете использовать оператор Option Explicit в начале HTML-документа, чтобы потребовать явного объявления всех переменных.

Чтобы определить тип значения, содержащегося в переменной типа variant, вы можете применить функцию туремате(<переменная>), которая возвращает строку, описывающую тип значения. Можно также использовать семейство функций IsStr (<переменная>), IsDate (<переменная>) и т.д., которые возвращают True, если значение имеет соответствующий тип, или False — в противном случае.

Еще одно отличие VBScript от Visual Basic: в цикле For после оператора Next не указывается имя переменной, отвечающей за отсчет итераций цикла.

Объектная модель и обработка событий

В коде сценария VBSrcipt вы можете получать доступ к включенным в состав HTML-документа стандартным элементам управления, таким как поля ввода, кнопки, формы данных. Их можно добавить, используя тэг <INPUT>, основные атрибуты которого: NAME — имя объекта в документе, STYLE — размеры и стиль, TYPE — тип элемента (BUTTON, SUBMIT и т. п.). Например, вставить кнопку Продолжить можно следующим образом:

<INPUT name=btnContinue type=button vаluе=Продолжить>

Вы можете также включать в состав HTML-документа компоненты ActiveX с помощью тэга <OBJECT>. Его атрибуты: ID — имя объекта в документе, CLASSIC — идентификационный номер класса в реестре системы, DATA — адрес в формате URL, откуда объект должен получать данные, CODEBASE — адрес (LJRL), по которому находится код объекта, HEIGHT, WIDTH — высота и ширина. Для установки свойств ActiveX компонента используется тэг <PARAM>, имеющий атрибуты: NAME — имя свойства, VALUE — устанавливаемое значение.

Для обработки событий элементов управления и ActiveX компонентов необходимо определить подпрограмму с именем, первую часть которого составляет имя объекта, а вторую часть (через прочерк) — имя события. Например, обработчик события, которое возникает при нажатии на кнопку btnContinue, можно описать так:

Sub btnContinue_OnClick()

Вы можете обрабатывать следующие события стандартных элементов управления: onclick (при щелчке мышью на элементе управления), Dblclick (при двойном щелчке), MouseOver (при перемещении мыши над объектом) и другие. Если говорить о компонентах ActiveX, то перечень доступных событий для них полностью зависит от того, какие события предусмотрены в нем самом.

В сценарии VBScript доступны некоторые стандартные объекты HTML, использование которых может быть полезным при разработке (табл. 19.3).

Таблица 19.3. Наиболее важные объекты HTML
Объект | Методы, события | Описание
Window |  | Является исходным объектом, поэтому не требуется указывать имя при обращении к его свойствам и методам
 | Navigate | Метод, переключающий окно на другой адрес URL
 | Close | Метод, закрывающий окно
 | OnLoad | Событие, которое возникает при загрузке страницы (используется в тэге <BODY>)
 | OnUnload | Событие, которое возникает при выгрузке страницы (используется в тэге <BODY>)
Document |  | Основной объект. Может содержать дочерние объекты типа Form
 | BgColor | Метод, устанавливающий цвет фона
 | FgColor | Метод, устанавливающий цвет текста
 | Open | Метод, открывающий документ для записи дополнительных строк в формате HTML
 | Write | Метод, записывающий строку в документ
 | Close | Метод, закрывающий документ
Form |  | Объект, содержащий элементы управления

Пример использования DHTML

Проект DHTML — одно из предложенных Microsoft средств для создания Internet-приложении, функционирующих на стороне пользователя (поддерживается с версии Internet Explorer 4.01). Важной особенностью DHTML является то, что для написания его кода используется не VBScript, a VBA (полное множество языковых конструкций и возможностей языка Visual Basic). Также удобно то, что работа над проектом осуществляется в привычной для вас интерактивной среде Visual Basic. Однако существенный недостаток DHTML — это то, что для успешного его использования потребуется знакомство с рекомендациями Document Object Model (DOM), разработанными фирмой Microsoft и определяющими множество объектов и их взаимосвязей. Рассмотрение DOM выходит за рамки этой книги. Однако попытаемся познакомиться со средствами разработки DHTML, не углубляясь в сложные детали.

Создайте новый проект, воспользовавшись в диалоговом окне New Project значком DHTML Application (рис. 19.2).

Рис. 19.2. Создание проекта типа DHTML Application

Перед вами появится окно DHTML Project (рис. 19.3). В правой части отображается внешний вид с9здаваемого HTML-документа, в левой — его текстовое содержание в виде иерархического списка.

Рис. 19.3. Окно проекта DHTML Project

Панель инструментов содержит элементы управления, используемые при создании DHTML, например, кнопки, текстовые поля, рисунки, гиперссыл-ки. Попробуйте добавить их в DHTML. Вы видите, что работа с ними строится по такому же принципу, что и со стандартными компонентами Visual Basic. Их можно перемещать, изменять размеры, а также задавать значения свойств в окне Properties.

Пример создания DHTML-проекта

Создадим проект DHTML, который будет представлять собой форму для ввода информации о покупателе (наименование компании, фамилия, имя, отчество представителя, почтовый индекс, страна, регион, город, адрес). Назовите Проект Customer, а DHTML-СТраницу — InputCustomer.

Нажмите кнопку DHTML Page Designer Properties, расположенную на панели инструментов окна. Перед вами откроется диалоговое окно Свойства: InputCustomer (рис. 19.4). Выберите в нем опцию Save HTML in an external file, чтобы созданная нами Web-страница была сохранена в виде документа HTML. Далее укажите место на диске и имя создаваемого HTML-документа.

Рис. 19.4. Окно определения свойств проекта DHTML

С помощью кнопки New вы можете создать новый HTML-файл, а с помощью Open — открыть существующий.

Вернитесь в окно DHTML Project. На панели элементов управления выберите текстовое поле для ввода компании и добавьте его в правую часть окна конструктора DHTML. Назовите поле txtccompany. Теперь определим для этого поля надпись, отражающую его предназначение. При работе с обычной формой Visual Basic, а не с конструктором DHTML, мы бы использовали самый привычный способ: добавление элемента управления Label. Однако при проектировании HTML-документа достаточно установить курсор справа от поля ввода и ввести текст так же, как в редакторе Microsoft Word.

У объектов в DHTML существует два режима привязки: абсолютная (когда мы располагаем объекты в HTML-документе, задавая их местоположение и размеры координатами) и относительная (когда объекты располагаются в тексте документа, и их местоположение полностью зависит от того, в какое место текста они включены). Переключать эти режимы можно с помощью кнопки Absolute Position. В нашем примере воспользуемся режимом относительной привязки, а для выравнивания компонентом будем размещать их в таблице.

Для того чтобы вставить таблицу в DHTML, нажмите кнопку Table operations, далее в появившемся меню выберите Insert Table. Перед вами таблица, состоящая из двух строк и двух столбцов. В левом столбце расположите метки, в правом — поля для ввода. Двух строк в таблице недостаточно, поэтому добавьте их, нажав кнопку Table Operations и выбрав Insert Row.

Теперь перетащите в таблицу уже добавленный компонент и текстовое примечание к нему, а также добавьте все остальные компоненты, которые потребуются для ввода информации о покупателе. Настроить их свойства можно так же, как вы это делали с обычными компонентами Visual Basic — с помощью окна Properties. В частности, вам необходимо настроить их наименования и допустимую длину вводимых значений (табл. 19.4).

Таблица 19.4. Настройка свойств объектов в проекте Customer
Метка | Имя объекта | Максимально допустимая длина
Компания | txtecompany | 20
Фамилия | txtelastname | 16
Имя | txtefrstname | 16
Отчество | txtosecondname | 16
Почтовый индекс | txtczip | 6
Страна | txtccountry | 20
Регион | txtcregion | 3
Город | txtccity | 20
Адрес | txtcaddress | 60

В начало документа добавьте заголовок, а в конец — кнопку, которой пользователь будет подтверждать ввод и осуществлять передачу введенных данных на Web-сервер (о том, как это организовать, будет сказано позже). Внешний вид готового проекта Customer показан на рис. 19.5.

Рис. 19.5. Внешний вид готового проекта Customer

Рис. 19.6. Тестирование проекта Customer

Чтобы проверить работу проекта, нажмите клавишу <F5>. При этом откроется окно программы Internet Explorer, в котором вы увидите созданный вами HTML-документ (рис. 19.6). Чтобы вернуться в режим редактирования, закройте Internet Explorer и остановите программу.


Ch 19.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Отправка данных

Вы также можете посмотреть не только внешний вид, но и исходный текст подготовленного вами HTML-документа и даже внести в него изменения. Для этого нажмите кнопку Launch Editor на панели инструментов окна проекта. Откроется редактор Notepad, содержащий текст HTML-документа.

<HTML>

<HEAD><TITLE></TITLE>

</HEAD>

<BODY>

<P аlign=сеntеr>Введите данные о себе:</Р>

<TABLE border=1 name=tblCustomer>

<TR>

<ТD>Компания

<TD>

<INPUT id="" name=txtccompany

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20>

<TR>

<ТD>Фамилия

<TD>

<INPUT id="" name=txtclastname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Имя

<TD>

<INPUT id="" name=txtcfirstname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=l6>

<TR>

<ТD>Отчество

<TD>

<INPUT id="" name=txtcsecondname

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=16>

<TR>

<TD>Пoчтовыйi индекс

<TD>

<INPUT id="" name=txtczip

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=6>

<TR>

<ТD>Страна

<TD>

<INPUT id="" name=txtccountry

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=2 0>

<TR>

<TD>Регион

<TD>

<INPUT id="" name=txtcregion

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=3>

<TR>

<TD>Город</TD>

<TD>

<INPUT id="" name=txtccity

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=20></TD></TR>

<TR>

<TD>Aдpec</TD>

<TD>

<INPUT id="" name=txtcaddress

style="HEIGHT: 25px; LEFT: 112px; TOP: 61px; WIDTH: 378px"

maxLength=60></TD></TR></TABLE></P>

<INPUT id=btnContinue name=btnContinue style="HEIGHT: ЗОрх; LEFT: 189px;

POSITION: absolute; TOP: 391px; WIDTH: 160px" type=button

vаlue=Продолжить >

</BODY></HTML>

Для того чтобы данные, содержащиеся в полях ввода, можно было отправить на сервер, поля ввода необходимо поместить в форму данных. Начало формы в документе HTML обозначается тэгом <FORM>, конец — тэгом </FORM>. При этом тэг <FORM> может иметь атрибуты: имя формы и метод отправки данных.

Добавьте строчку <FORM NAME=frminputCustomer METHOD=POST> перед тэгом <TABLE> и тэг </FORM> перед тэгом </BODY> в исходном тексте вашего HTML-документа. В результате этого все поля ввода и кнопка Продолжить оказались внутри формы данных с именем frminputCustomer. Теперь сохраните текст и закройте редактор Notepad. Visual Basic сообщит о том, что данные были изменены и предложит обновить их. Нажмите кнопку Yes.

Существует два способа отправки данных на сервер. Первый и самый простой — использование элемента управления типа submit. Если пользователь нажмет на такую кнопку, расположенную внутри формы данных, то вся введенная в остальные элементы управления информация будет немедленно передана на Web-сервер. Недостатком данного способа является то, что мы не сможем контролировать правильность введенных значений, поэтому применим второй способ — использование сценария VBScript для проверки правильности вводимой информации и отправки данных. Вставьте в начало HTML-документа следующий код:

<SCRIPT Language="VBScript">

<!--

Sub btnContinue_OnClick()

Dim frmCurrent

Set frmCurrent=Document.frmInputCustomer

If IsNumeric(frmCurrent.txtczip.Value) then

frmCurrent.Action="default.asp?mode=inputcustome r"

frmCurrent.submit

Else

MsgBox "В поле Почтовый индекс недопустимы буквы",,"Ошибка типа"

End If

End Sub

-->

</SCRIPT>

Замечание

В элементе управления HTML поле ввода для доступа к значению использует свойство value вместо привычного свойства Text.

В этом фрагменте кода описывается процедура btnContinue_Onciick, которая обрабатывает событие, возникающее при нажатии на кнопку btncontinue. Сначала определяется ссылка на форму данных, содержащую поля ввода. Далее проверяется, является ли числовым значение, введенное в поле Почтовый индекс. Если это не так, то в диалоговом окне выводится сообщение об ошибке (рис. 19.7).

Рис. 19.7. Вывод сообщений пользователю с помощью процедуры MsgBox

В противном случае мы задаем параметры отправки данных и вызываем метод submit формы данных, который и осуществляет отправку введенной информации на Web-сервер. Как обрабатывать эти данные на сервере, вы узнаете в следующем разделе.

Введение в Active Server Page

Работая в сети Internet, вы, наверное, обратили внимание на то, что большинство страниц в World Wide Web нельзя назвать статическими. Например, работая с поисковым сервером, вы получаете перечень ссылок, удовлетворяющих вашему запросу. Это яркий пример, когда Web-страница представляет собой не простой HTML-документ, а видоизменяется в зависимости от различных условий, будь то принимаемые запросы от пользователей или изменение информации в источниках данных. Чтобы понять, как функционируют такие Web-страницы, рассмотрим подробнее работу Web-сервера. На запрос Web-браузера Web-сервер должен ответить HTML-потоком. Однако главной особенностью динамических страниц является то, что отправляется не подготовленный заранее HTML-документ, а созданный или видоизмененный "на лету".

Для генерации HTML-потока на Web-сервере запускается специальная программа. На сегодняшний день существует несколько технологий создания подобных программ. Это может быть CGI-сценарий или программа на традиционном алгоритмическом языке. Еще одним вариантом может стать использование относительно новой технологии фирмы Microsoft — Active Server Pages (Активные страницы сервера). ASP основывается на появившейся возможности Web-сервера (Internet Information Server или Personal Web Server) обрабатывать ASP-сценарий, прототипом для которого послужил все тот же Visual Basic. ASP-сценарий во многом похож на VBScript, с той лишь разницей, что он выполняется на сервере, а не на клиентском компьютере. Это имеет ряд преимуществ по сравнению с VBScript.

  • Время выполнения оказывается меньше за счет того, что производительность сервера зачастую гораздо выше.
  • HTML-документ не нуждается в интерпретации, а следовательно, может просматриваться любым Web-браузером, поддерживающим стандарт HTML (за исключением тех случаев, когда в создаваемую HTML-страницу Web-сервер добавляет VBScript).
  • Пользователь не сможет просмотреть исходный код программы.
  • Код ASP-сценария может обращаться к ресурсам сервера (обмениваться конфиденциальной информацией без угрозы утечки информации).

Переход от HTML к ASP

ASP-страница во многом похожа на HTML, поскольку основана на тех же стандартах. Web-сервер распознает Active Server Page по расширению asp. Если просто изменить расширение существующего DHTML-документа на asp, вы не получите динамическую страницу. Ключом к созданию таких страниц является добавление ASP-сценария. Для указания Web-серверу фрагмента кода, который должен исполняться на сервере, служат маркеры "<%" и "%>".

Совет

Вы также можете указать, что фрагмент кода должен выполниться на сервере, используя в тэге <SCRIPT> атрибут RUNAT="SERVER". Например: <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> ... </SCRIPT>.

ASP-страница, случайным образом формирующая приветствие, будет выглядеть следующим образом:

<HTML>

<BODY>

<%

Randomize

Select Case Round(Rnd()*4)

Case 0

Response.Write ("Привет")

Case 1

Response.Write ("Добро пожаловать")

Case 2

Response.Write ("Рады видеть")

Case 3

Response.Write ("День добрый")

Case 4

Response.Write ("Здравствуйте")

End Select

%>

<BODY>

<HTML>

Следующее отличие ASP от HTML — объектная модель. В ASP-сценарии доступны некоторые специфичные только для этой технологии объекты.

  • Response — для формирования HTML-потока.
  • Request — для анализа запроса к ASP-странице.
  • Session — хранит информацию о текущем подключении.
  • Server — для создания на сервере объектов, доступных в ASP-приложении.

Виртуальные каталоги

Технология ASP поддерживается Internet Information Server (под Windows NT) и Personal Web Server (под Windows 95 и Windows 98). Для иллюстрации работы ASP будем использовать Personal Web Server. Настроить параметры его работы можно с помощью программы Personal Web Manager.

Для тестирования нашего примера необходимо создать виртуальный каталог. Это означает, что надо соотнести логическое имя, которое мы будем использовать в URL в разделе path, с физическим каталогом на диске сервера. При отладке наших примеров применим локальную модель, т. е. Web-сервер и Web-браузер будут работать на одном компьютере, хотя обычно это бывает не так. Запустите Personal Web Manager и в открывшемся диалоговом окне щелкните на значке Advanced.

При установленном флажке Enable Default Document можно задать имена файлов, считываемых сервером по умолчанию при посещении пользователем виртуальных каталогов без указания имен файлов в URL. Задайте Default Document(s) равным Default.htm, Default.asp. Теперь создайте на диске новый каталог, например C:\WEBSHARE\WWWROOT\MyDir, и в этот каталог поместите файл Default.asp с текстом нашего примера, формирующего приветствие. Теперь, чтобы создать новый виртуальный каталог, поддерживаемый нашим Web-сервером, нажмите кнопку Add.

В поле Directory появившегося диалогового окна Add Directory введите путь к созданному каталогу, а в поле Alias — имя нового виртуального каталога Web-сервера. В разделе Access осуществляется управление доступом, причем возможны следующие режимы.

  • Read — дает право на чтение HTML-данных.
  • Scripts— позволяет выполнять ASP-сценарии из данного виртуальною каталога (потребуется установить, если вы хотите использовать ASP-сценарии).
  • Execute — позволяет пользователю выполнять в виртуальном каталоге сценарии и другие программы.

Итак, теперь вы можете просмотреть свою страницу в сети Internet. Для этого загрузите Internet Explorer и укажите следующий адрес:

http://MyServer/test/

Замечание

Предполагается, что MyServer — имя вашего сервера в настройках DNS.

Web-сервер станет выполнять ASP-сценарии, содержащийся в файле Default.asp, динамически сформирует HTML-документ и отправит его Web-браузеру, который позволит вам увидеть наше приветствие. Поэкспериментируйте, нажимая кнопку Refresh. Вы будете получать каждый раз (или почти каждый раз) новое приветствие.

Создание проекта типа US Application

В Visual Basic имеется тип проекта IIS Application, который дает возможность создавать ASP-страницы. Этот тип проекта предоставляет разработчику специальный класс webciass, который оформляется в виде ActiveX Dll и встраивается в ASP-страницу, инициализируется при обращении к ней и работает на сервере. Все тонкости этого механизма Visual Basic берет на себя, предоставляя вам привычную среду для создания проектов. Таким образом, вы разрабатываете приложение, затем оно компилируется и встраивается в ASP-страницу, при этом для вас не существует ограничений VBScript, и вы можете пользоваться всеми возможностями Visual Basic при написании кода.

Рассмотрим создание проекта IIS Application на следующем простом примере. Web-сервер будет предлагать ввести данные о покупателе, принимать их, формировать на их основе HTML-документ и отправлять его обратно пользователю для подтверждения.

Создайте новый проект, выбрав в диалоговом окне New Project (рис. 19.10) значок IIS Application.

Рис. 19.10. Создание проекта типа IIS Application

Перед вами появляется окно, в котором можно добавлять к проекту HTML-шаблоны, а также элементы webitem. HTML-шаблоны— это обычные HTML-документы, которые вы сможете посылать Web-браузеру пользователя. Элементы webitem содержат шаблоны, однако, обрабатывая события и используя методы этих элементов, вы также можете формировать HTML-поток.

Назовите проект serverPage, а единственный входящий в его состав объект WebClass — Default. Задайте для свойства StateManagement объекта Default значение wcRetainInstance. Это приведет к тому, что экземпляр класса WebClass будет создаваться один раз, а не при каждом обращении Web-браузера к ASP-странице.

Добавьте в проект два шаблона HTML, воспользовавшись кнопкой Add HTML Template Webitem. Первый, на основе созданного нами ранее файла Customer.htm, предназначен для ввода информации о покупателе, второй — для отправки созданного нами HTML-документа, содержащего принятые от пользователя данные.

В окне Project выберите объект Default, перейдите в окно редактора кода данного объекта и введите следующий текст:

Option Explicit

Option Compare Text

Private Sub WebClass BeginRequest()

If Request.QueryString.Count > 0 Then

If Request.QueryString.Item(1) = "inputcustomer" Then

'записать данные в html-файл на сервере

Open "С:\Work\ServerPage\custlist.htm" For Output As #1

Print #1, "<HTML>"

Print #1, "<P аlign=сеnter>Сведения о последнем покупателе:</Р>"

With Request

Print #1, "Компания: " & .Form("txtccompany") & "<Р>"

Print #1, "Фамилия: " & .Form("txtclastname") & "<P>"

Print #1, "Имя: " & .FormC'txtcfirstname") & "<Р>"

Print #1, "Отчество: " & .Form("txtcsecondname") & "<P>"

Print #1, "Почтовый индекс: " & .Form("txtczip") & "<Р>"

Print #1, "Страна: " & .Form("txtccountry") & "<Р>"

Print #1, "Регион: " & .FormC'txtcregion") & "<P>"

Print #1, "Город: " & .Form("txtccity") & "<Р>"

Print #1, "Адрес: " & .Form("txtcaddress")

End With

Print #1, "</HTML>"

Close #1

'отправить файл клиенту

Response.Clear

CustList.WriteTemplate "custlist.htm"

End If

Else

'отправить клиенту форму для ввода

Customer.WriteTemplate

End If

End Sub

По сути дела мы описали обработку события BeginRequest, которое происходит всякий раз при обращении Web-браузера к ASP-странице. Здесь мы анализируем содержимое коллекции QueryString объекта Response. При первом обращении она пуста, и мы отправляем пользователю форму для ввода данных, вызвав метод WriteTemplate нашего HTML-шаблона.

Рассмотрим параметры, которые мы устанавливаем при передаче введенных пользователем данных Web-серверу:

default.asp?mode=inputcustomer

В приведенной строке мы определили имя ASP-страницы (default.asp), которой будет передана информация, и режим (inputcustomer), что позволит нам различить ситуацию обращения. Итак, если в коллекции QueryString объекта Response находится элемент inputcustomer, мы можем считать, что при данном обращении к ASP-странице были переданы данные, следовательно, надо их принять, сформировать HTML-документ на их основе и отправить его пользователю. Получить доступ к принятым данным можно, используя коллекцию Form. Элементы этой коллекции — наши поля ввода. Воспользуемся стандартным механизмом Visual Basic для работы с файлами и сохраним принятые данные в файле на нашем диске \\ServerPage\CustList.htm, а потом отправим его Web-браузеру пользователя с помощью HTML-шаблона custList, предварительно очистив поле Web-браузера:

Response.Clear CustList.WriteTemplate "CustList.htm"

Запустите приложение, нажав клавишу <F5>. Вам будет предложено установить режим отладки. Выберите из списка, расположенного рядом с опцией Start Component, созданный нами WebClass — Default.

Рис. 19.15. Ввод данных о покупателе в предоставленный Web-сервером шаблон

Далее потребуется создание виртуального каталога, куда будет помещена ASP-страница. Без этого не может начаться даже отладочный запуск IIS Application.

Взаимодействие Internet-приложений с базами данных

Усложним наш пример. Теперь при первом обращении к ASP-странице будем отображать содержимое таблицы customer базы данных, а при нажатии на кнопку Добавить будем посылать все ту же форму для ввода данных о покупателе, однако полученные результаты будем заносить опять же в базу данных.

Для доступа к базе данных будем использовать технологию ADO, поэтому откройте окно References нашего проекта и добавьте ссылки на библиотеки Microsoft ActiveX Data Objects 2.1 Library и Microsoft ActiveX Data Objects Recordset 2.0 Library (рис. 19.17).

Рис. 19.17. Добавление ссылок на библиотеки ADO

Теперь нам потребуется обрабатывать событие webciass_initialize для выполнения операций соединения с базой данных и открытия Recordset и событие WebClass_Terminate для закрытия объектов Recordset иConnection.

Подпрограмма viewCustomers () будет посылать Web-браузеру в виде HTML-потока содержимое таблицы Customer базы данных, а также размещать объект типа Submit, при нажатии на который будет производиться вызов формы для ввода информации и последующего добавления новой записи о покупателе. Ранее мы уже говорили о таком способе отправки информации на Web-сервер. В данном случае никакой информации отправлено не будет, нам важно только то, чтобы сервер получил запрос с параметром begininput и передал Web-браузеру шаблон для ввода информации о покупателе.

Обработка события webciass_BeginRequest изменена таким образом, чтобы при первом обращении показывать содержимое таблицы Customer и кнопку Добавить, при обращении к ASP-странице с параметром inputCustomer принимать информацию и добавлять полученные сведения в базу данных, а при обращении с параметром begininput предоставлять форму для ввода информации о покупателе:

Option Explicit

Option Compare Text

Dim mcnnCustomer As ADODB.Connection

Dim mrstCustomer As ADODB.Recordset

Private Sub WebClass_BeginRequest()

If Request.QueryString.Count > 0 Then

'получены данные

If Request.QueryString.Item(1) = "ihputCustomer" Then

'записать полученные данные в таблицу

With mrstCustomer

.AddNew

.Fields("ccompany").Value = Request.Form("txtccompany")

.Fields("clastname").Value = Request.Form("txtclastname")

.Fields("cfirstname").Value = Request.Form("txtcfirstname")

. Fields ("csecondnairie") .Value = Request.Form("txtcsecondname")

. Fields("czip").Value = Request.Form("txtczip")

. Fields("ccountry").Value = Request.Form("txtccountry")

.Fields("cregion").Value = Request.Form("txtcregion")

.Fields("ccity").Value = Request.Form("txtccity")

.Fields("caddress").Value = Request.Form("txtcaddress")

.Update

End With

ViewCustomers

End If

'запрос на добавление записи

If Request.QueryString.Item (1) = "begininput" Then

'отобразить форму для ввода

Customer.WriteTemplate

End If

Else

ViewCustomers

End If

End Sub

'просмотр всех записей

Private Sub ViewCustomers ()

With Response

.Clear

.Write "<HTML>"

.Write "<P align=center> Список покупателей </Р>"

.Write "<FORM NAME=frmOutputCustomer METHOD=POST ACTION=default.asp?mode=begininput>"

.Write "<INPUT name=btnAdd type=submit уа1ие=Добавить>"

If Not (mrstCustomer.BOF And mrstCustomer.EOF) Then

mrstCustomer.MoveFirst

.Write "<TABLE border=l>"

.Write "<TR>"

.Write "<TD><P align=center> Компания </TD>"

.Write "<TD><P align=center> Фамилия </TD>"

.Write "<TD><P align=center> Имя </TD>"

.Write "<TD><P align=center> Отчество </TD>"

.Write "</TR>"

Do Until mrstCustomer.EOF

.Write "<TR>"

.Write "<TD>" & mrstCustomer.Fields("ccompany") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("clastname") & "</TD>"

.Write "<TD>" & nirstCustomer.Fields("cfirstname") & "</TD>"

.Write "<TD>" & mrstCustomer.Fields("csecondname") & "</TD>"

.Write "</TR>"

mrstCustomer.MoveNext

Loop

.Write "</TABLE>"

End If

.Write "</FORM>"

.Write "</HTML>"

End With

End Sub

Private Sub WebClass_Initialize ()

Set mcnnCustomer = New ADODB.Connection

mcnnCustomer.CursorLocation = adUseClient

mcnnCustomer.Provider = "SQLOLEDB.1"

mcnnCustomer.CommandTimeout = 300

"строка для соединения, имя пользователя, пароль

mcnnCustomer.Open "Data Source= MYSERVER; Initial Catalog=SALES", "SYSADM", "SYSADM"

Set mrstCustomer = New ADODB.Recordset

mrstCustomer.Open "Customer", mcnnCustomer, adOpenKeyset, adLockOptimistic, adCmdTable

End Sub

Private Sub WebClass Terminate()

mrstCustomer.Close

Set mrstCustomer = Nothing

mcnnCustomer.Close

Set mcnnCustomer = Nothing

End Sub

Запустите проект. Перед вами достаточно простое Internet-приложение, обменивающееся информацией с базой данных и предоставляющее пользователю Web интерактивные средства для работы с этой информацией.

Замечание

Реальные Internet-приложения гораздо сложнее. Однако в нашем примере мы попытались дать тот минимальный материал, который поможет вам в дальнейшем при освоении принципов проектирования для World Wide Web.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 2. Разработка приложения при помощи мастеров и шаблонов

Мастера

Для увеличения эффективности разработки приложений инструментальная среда Visual Basic б предлагает большой набор специальных средств, помогающих быстрее создать как само приложение, так и его элементы: формы, диалоговые окна, отчеты, базы данных и многое другое, то есть практически все, что связано с разрабатываемым приложением и средой, в которой оно будет работать. Такие средства принято называть мастерами (Wizards).

Мастер в интерактивном режиме по шагам выполняет процесс создания и сборки элементов приложения, в проект. При работе мастера необходимо только отвечать на вопросы посредством выбора предлагаемых на каждом шаге вариантов и нажимать на кнопку Next (Следующий шаг) для перехода к следующему шагу. В соответствии с выбором создаются все необходимые элементы приложения и предварительный исходный код для них. Результатом работы мастера является макет приложения, готовый к обсуждению с заказчиком и к дальнейшей доработке до коммерческого варианта. Работу мастера можно сравнить с работой конвейера по сборке проекта приложения из предлагаемых на каждом его шаге элементов выходного продукта, будь то приложение, база данных или просто отчет по ней.

Мастер работает по шагам до окончательной сборки конечного продукта. Однако, если для разрабатываемого приложения не требуются все шаблоны форм или другие элементы приложения, предлагаемые мастером, можно на любом шаге кнопкой Finish (Готово) завершить работу мастера или пропустить указанный шаг и перейти к следующему нажатием кнопки Next. При этом будут созданы только выбранные на пройденных шагах элементы приложения. Например, если вам от мастера приложений требуется только MDI — окно и форма документа, то можно нажать кнопку Finish уже на втором шаге мастера приложений.

Мастера Visual Basic 6 решают обширный круг задач, реализуемых в виде приложений или проектов. Практически любое приложение из любой предметной области можно предварительно создать при помощи мастеров и далее дорабатывать самостоятельно с использованием инструментария среды Visual Basic 6.

В среде проектирования Visual Basic 6 имеются мастера, представленные в табл. 2.1.

Таблица 2.1. Список мастеров для создания приложений
Мастер | Назначение
Application Wizard | Мастер приложений
Data Form Wizard | Мастер форм для баз данных
Data Object Wizard | Мастер объектов баз данных
Package and Deployment Wizard | Мастер упаковки и распространения
ActiveX Ctrl Interface Wizard | Мастер элементов управления ActiveX
ActiveX Doc Migration Wizard | Мастер миграции документов ActiveX
Property Page Wizard | Мастер страницы свойств
Toolbar Wizard | Мастер панели управления
Setup Wizard | Мастер установки приложений
Class Builder Utility | Конструктор классов
VB Wizard Manager | Конструктор мастеров

Наиболее часто используемые мастера вызываются из диалогового окна New Project. Другие мастера вызываются из главного меню командами, входящими в состав меню Add-Ins (Надстройки). Если в меню нет нужного вам мастера, его можно добавить при помощи диалогового окна Add-In Manager (Управление надстройками), выполнив следующие действия:

1. В меню Add-Ins выберите команду Add-In Manager.

2. В списке Available Add-In (Доступные надстройки) открывшегося диалогового окна Add-In Manager (рис. 2.1) установите курсор на наименование подключаемого мастера и выполните одно из следующих действий:

  • дважды щелкните мышью;
  • установите флажок Loaded/Unloaded (Загрузить/Выгрузить), расположенный в области Load Behavior (Поведение при загрузке).

3. Нажмите кнопку ОК для закрытия диалогового окна.

Наименование мастера в виде команды появляется в меню Add-Ins. Для запуска мастера достаточно выбрать эту команду из меню.

Рис. 2.1. Диалоговое окно Add-In Manager

Замечание

Исключить команду вызова мастера из меню Add-Ins можно аналогичными действиями, только вместо установки флажка необходимо выполнить его снятие.

В этой главе подробно рассмотрим работу мастера создания приложении Application Wizard и мастера форм баз данных Data Form Wizard. Сведения о мастере панели инструментов Toolbar Wizard и редакторе меню Menu Editor приведены в главе 7.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 2. Разработка приложения при помощи мастеров и шаблонов

Мастера

Для увеличения эффективности разработки приложений инструментальная среда Visual Basic б предлагает большой набор специальных средств, помогающих быстрее создать как само приложение, так и его элементы: формы, диалоговые окна, отчеты, базы данных и многое другое, то есть практически все, что связано с разрабатываемым приложением и средой, в которой оно будет работать. Такие средства принято называть мастерами (Wizards).

Мастер в интерактивном режиме по шагам выполняет процесс создания и сборки элементов приложения, в проект. При работе мастера необходимо только отвечать на вопросы посредством выбора предлагаемых на каждом шаге вариантов и нажимать на кнопку Next (Следующий шаг) для перехода к следующему шагу. В соответствии с выбором создаются все необходимые элементы приложения и предварительный исходный код для них. Результатом работы мастера является макет приложения, готовый к обсуждению с заказчиком и к дальнейшей доработке до коммерческого варианта. Работу мастера можно сравнить с работой конвейера по сборке проекта приложения из предлагаемых на каждом его шаге элементов выходного продукта, будь то приложение, база данных или просто отчет по ней.

Мастер работает по шагам до окончательной сборки конечного продукта. Однако, если для разрабатываемого приложения не требуются все шаблоны форм или другие элементы приложения, предлагаемые мастером, можно на любом шаге кнопкой Finish (Готово) завершить работу мастера или пропустить указанный шаг и перейти к следующему нажатием кнопки Next. При этом будут созданы только выбранные на пройденных шагах элементы приложения. Например, если вам от мастера приложений требуется только MDI — окно и форма документа, то можно нажать кнопку Finish уже на втором шаге мастера приложений.

Мастера Visual Basic 6 решают обширный круг задач, реализуемых в виде приложений или проектов. Практически любое приложение из любой предметной области можно предварительно создать при помощи мастеров и далее дорабатывать самостоятельно с использованием инструментария среды Visual Basic 6.

В среде проектирования Visual Basic 6 имеются мастера, представленные в табл. 2.1.

Таблица 2.1. Список мастеров для создания приложений
Мастер | Назначение
Application Wizard | Мастер приложений
Data Form Wizard | Мастер форм для баз данных
Data Object Wizard | Мастер объектов баз данных
Package and Deployment Wizard | Мастер упаковки и распространения
ActiveX Ctrl Interface Wizard | Мастер элементов управления ActiveX
ActiveX Doc Migration Wizard | Мастер миграции документов ActiveX
Property Page Wizard | Мастер страницы свойств
Toolbar Wizard | Мастер панели управления
Setup Wizard | Мастер установки приложений
Class Builder Utility | Конструктор классов
VB Wizard Manager | Конструктор мастеров

Наиболее часто используемые мастера вызываются из диалогового окна New Project. Другие мастера вызываются из главного меню командами, входящими в состав меню Add-Ins (Надстройки). Если в меню нет нужного вам мастера, его можно добавить при помощи диалогового окна Add-In Manager (Управление надстройками), выполнив следующие действия:

1. В меню Add-Ins выберите команду Add-In Manager.

2. В списке Available Add-In (Доступные надстройки) открывшегося диалогового окна Add-In Manager (рис. 2.1) установите курсор на наименование подключаемого мастера и выполните одно из следующих действий:

  • дважды щелкните мышью;
  • установите флажок Loaded/Unloaded (Загрузить/Выгрузить), расположенный в области Load Behavior (Поведение при загрузке).

3. Нажмите кнопку ОК для закрытия диалогового окна.

Наименование мастера в виде команды появляется в меню Add-Ins. Для запуска мастера достаточно выбрать эту команду из меню.

Рис. 2.1. Диалоговое окно Add-In Manager

Замечание

Исключить команду вызова мастера из меню Add-Ins можно аналогичными действиями, только вместо установки флажка необходимо выполнить его снятие.

В этой главе подробно рассмотрим работу мастера создания приложении Application Wizard и мастера форм баз данных Data Form Wizard. Сведения о мастере панели инструментов Toolbar Wizard и редакторе меню Menu Editor приведены в главе 7.

Мастер приложения Application Wizard

Мастер приложении Application Wizard применяется для быстрого создания приложения с его дальнейшей доработкой до рабочего варианта с использованием инструментария среды проектирования. С помощью него можно создать полнофункциональный прототип приложения, содержащий все необходимые формы интерфейса.

Рассмотрим работу мастера приложений по шагам. На экране поочередно появляются восемь диалоговых окон, в которых необходимо выполнить определенные действия. Осуществив установку параметров в очередном диалоговом окне мастера, для перехода к следующему шагу необходимо нажать кнопку Next (Следующий). Чтобы вернуться к предыдущему шагу, следует воспользоваться кнопкой Back (Назад). Напомним, что на любом шаге можно выйти из диалогового окна мастера, нажав кнопку Finish (Готово), и дорабатывать полученный макет приложения самостоятельно.

Для запуска мастера приложения Application Wizard выполните следующие действия:

1. В меню File (Файл) выберите команду New Project (Новый проект) или нажмите комбинацию клавиш <Ctrl>+<N>.

2. В открывшемся диалоговом окне New Project (рис. 2.2) дважды щелкните на значке VB Application Wizard.

Рис. 2.2. Диалоговое окно, используемое для запуска мастера приложений

3. В первом диалоговом окне мастера (рис. 2.3) расположен раскрывающийся список From what profile do you want to load your settings? (Из какого файла настройки загрузить установки?), посредством которого можно выбрать файл настроек, осуществленных мастером при предыдущем создании с его помощью аналогичного приложения. В файле настроек хранятся все варианты выбора, сделанные при работе мастера. Использование файла настроек ускорит создание однотипных приложений и элементов приложения. Если список пуст, нажмите кнопку с тремя точками и в открывшемся диалоговом окне Open Profile (Открыть файл настройки) осуществите поиск необходимого файла настроек на диске.

В том случае, если в работе мастера вы не будете использовать файл настройки, нажмите кнопку Next для перехода к следующему шагу.

4. На втором шаге работы мастера необходимо выбрать стиль интерфейса приложения из трех предложенных вариантов: MDI, SDI или стиль проводника (рис. 2.4). Подробно стили описаны в главе 7. Здесь же можно отметить, что в Visual Basic 6 можно создать приложения трех стилей.

  • Многодокументный интерфейс (MDI— Many Document Interface) — интерфейс с одним главным окном и требуемым количеством дочерних окон для выполнения функциональных задач приложения. Все дочерние окна открываются внутри главного окна, которое является контейнером для всех дочерних окон. При этом одно и то же дочернее окно с разными документами можно открыть многократно внутри главного. Примером такого приложения служит программа Microsoft Word.
  • Однодокументный интерфейс (SDI — Single Document Interface) — интерфейс только с одним окном для одного документа. Для выбора двух документов такое приложение необходимо запустить два раза. Примером такого приложения является тестовый редактор Microsoft WordPad.
  • Стиль проводника — это однооконный интерфейс, аналогичный SDI, для иерархических древовидных структур. Примером может служить приложение проводник (Explorer) в системе Windows.

Рис. 2.3. Диалоговое окно Introduction мастера приложений

Для указания стиля будущего приложения установите одну из трех опций. Затем в поле ввода What name do you want for the application? (Какое имя присвоить приложению?) введите наименование приложения и нажмите кнопку Next для перехода к следующему шагу.

5. На третьем шаге мастера Application Wizard (рис. 2.5) создается меню приложения. Открывшееся диалоговое окно мастера аналогично редактору меню, который более подробно описан в главе 7. Предлагаемое мастером меню создается в стандарте Windows. В диалоговом окне мастера два списка. Список Menus содержит пункты, предлагаемые для включения в строку основного меню. В список Sub Menus входят команды, предлагаемые для включения в пункты меню.

Рис. 2.4. Диалоговое окно Interface Type для указания типа создаваемого приложения

Рис. 2.5. Окно редактора меню Menus мастера приложений

Мастер предлагает включить в строку меню следующие пункты:

  • File (Файл)
  • Edit (Правка)
  • View (Вид)
  • Tools (Сервис)
  • Window (Окно)
  • Help (Справка)

Установите флажки рядом с теми пунктами меню, которые вы хотите использовать в создаваемом вами приложении. Затем, выбирая поочередно из списка Menus пункты, в списке Sub Menus установите флажки для тех команд, которые хотите включить в текущий пункт меню.

Основные команды, содержащиеся в раскрывающихся меню, аналогичны многим таким же командам других приложений Microsoft. Это облегчает пользователю работу с приложением.

Замечание

При создании меню приложения следует напомнить, что меню Window (Окно) будет присутствовать только для приложения в MDI, поскольку другие стили не предполагают наличия нескольких окон.

Для формирования строки меню и содержащихся в них команд, необходимо использовать находящиеся в диалоговом окне мастера кнопки, предназначенные для добавления, удаления и перемещения позиций в списках. Назначение кнопок описано в табл. 2.2.

Таблица 2.2. Назначение кнопок, используемых при формировании меню
Кнопка | Назначение
 | Открывает диалоговое окно Add New Menu, позволяющее добавить в меню новую команду
 | Позволяет удалить из списка Menus и/или Sub Menus выделенное значение
 | Перемещает выделенное в списке значение на одну позицию вверх
 | Перемещает выделенное в списке значение на одну позицию вниз

Кнопка Reset (Сброс) позволяет вернуть спискам исходное состояние.

6. На четвертом шаге мастера Application Wizard создается панель инструментов приложения (рис. 2.6). Это окно аналогично окну мастера панели инструментов Toolbar Wizard (Мастер панели инструментов) и подробно описано в главе 7. Кратко рассмотрим выполняемые в этом окне действия по созданию панели инструментов приложения.

Рис. 2.6. Диалоговое окно Customize Toolbar, позволяющее создать панель инструментов приложения

В верхней части диалогового окна расположена панель инструментов, предлагаемая по умолчанию для приложения. В правом списке эта же панель инструментов представлена в виде команд и соответствующих им кнопок. Левый список содержит команды, которые можно включить в панель инструментов.

Для переноса команд из одного списка в другой можно использовать двойной щелчок кнопкой мыши, способ "перенести-и-оставить" или кнопки, расположенные между списками. Изменение последовательности расположения кнопок на панели инструментов приложения осуществляется кнопками перемещения позиций в списке. Следует иметь в виду. что кнопки перемещения позиций действуют только на правый список. Левый список кнопок можно дополнить кнопками, разработанными заранее. Кнопка Reset возвращает панель инструментов в исходное состояние, т. е. заданное по умолчанию мастером.

7. На пятом шаге мастера приложений открывается диалоговое окно Resources (Ресурсы) (рис. 2.7), позволяющее присоединить к вашему приложению файл. Файл ресурсов — это специальный файл, в котором хранятся настройки вашего приложения: таблицы шрифтов, таблицы строковых переменных, используемые значки и т. д. В некотором приближении можно считать этот файл настроечной базой данных, аналогичной базе Registry системы Windows, но для вашего приложения. Установите требуемую опцию и перейдите к следующему шагу.

8. На шестом шаге мастера Application Wizard можно включить в приложение возможность прямого выхода в Internet (рис. 2.8).

Рис. 2.7. Окно Resources мастера приложений

Рис. 2.8. Окно Internet Connectivity мастера приложений

Диалоговое окно Internet Connectivity (Соединение с Internet) содержит две опции. Если установлена опция Yes (Да), то мастером приложений будет создан шаблон окна браузера. При установке опции Yes становится доступным для ввода поле, предназначенное для задания адреса загружаемой Web-страницы (URL). По умолчанию в этом поле задан адрес домашней страницы фирмы Microsoft.

Установив необходимые параметры, нажмите кнопку Next.

9. Седьмой шаг мастера приложения дает возможность включить в проект приложения стандартные (типовые) шаблоны окон и диалогов. Под шаблонами здесь понимаются прототипы форм, диалоговых окон и других элементов, готовых к использованию в составе приложения. Эти шаблоны названы стандартными, поскольку применяются практически во всех приложениях. Примерами диалоговых окон являются окна для ввода имени пользователя и пароля при входе в приложение, диалог присоединения к базе данных и другие, перечисленные ниже.

Рис. 2.9. Окно Standard Forms мастера приложений

Для того чтобы эти шаблоны были включены в состав проекта, необходимо в окне мастера (рис. 2.9) установить следующие флажки для их создания:

  • Splash screen at application start up — диалоговое окно приглашения, появляющегося при запуске файла приложения;
  • Login dialog to accept an ID and Password (Диалог входа) — диалоговое окно ввода имени пользователя и пароля для входа в приложение;
  • Options dialog for custom settings — диалоговое окно режимов работы приложения;
  • About Box — форма, содержащая информацию о приложении, версии приложения и разработчике.

Для того чтобы требуемые вам шаблоны диалоговых окон и форм были созданы и присоединены к приложению, необходимо установить соответствующие флажки.

На этом же шаге мастера в проектируемое приложение можно включить стандартные дополнительные шаблоны, вызвав окно выбора этих форм нажатием кнопки Form Templates (Шаблоны форм).

Рис. 2.10. Окно Form Templates мастера приложений

При нажатии кнопки Form Templates открывается одноименное диалоговое окно (рис. 2.10), содержащее следующие шаблоны форм:

  • Dialog (Диалог) — диалоговое окно общего вида для вывода сообщении и запроса на продолжение работы приложения в зависимости от выбора в этом окне;
  • ODBC Log In (Соединение с ODBC) — диалоговое окно для соединения с удаленными базами данных, используя ODBC;
  • Tip of the Day (Ежедневный совет) — окно ежедневного полезного совета в виде подсказки по работе с приложением;
  • Web Browser (Web-браузер) — окно браузера для работы в Internet.

Для того чтобы вышеперечисленные формы и диалоговые окна были созданы по указанным шаблонам и присоединены к проекту приложения, необходимо установить флажки выбора соответствующих шаблонов в списке Form Templates (Шаблоны форм) этого окна. Если требуются все шаблоны, кнопкой Select All (Выбрать все) можно установить все флажки в списке. Аналогично, с помощью кнопки Clear All (Очистить все) можно отменить выбор всех флажков.

Рис. 2.11. Диалоговое окно Data Access Forms мастера приложений

10. На восьмом шаге мастера открывается диалоговое окно Data Access Forms (рис. 2.11), позволяющее спроектировать формы для управления базами данных. В окне мастера расположен список Data Forms (Формы ввода данных), данные в который вводятся с помощью кнопки Create New Form (Создать новую форму). При нажатии этой кнопки вызывается мастер форм для баз данных Data Form Wizard, работа которого описана ниже в этой главе. Можно сразу же построить необходимые формы для работы с базой данных. Разработанные при помощи этого мастера формы будут включены в список Data Forms и затем в проект создаваемого приложения. Эти формы в дальнейшем будут доступны и как шаблоны, и для других создаваемых при помощи мастера Data Form Wizard форм работы с базами данных в новых разработках.

11. Девятый шаг (рис. 2.12) завершает работу мастера приложений. Кнопка Next (Следующий) становится недоступной и нажатием кнопки Finish (Готово) можно завершить процесс создания приложения.

Замечание

Пока в окне мастера кнопка Finish не нажата, можно вернуться к предыдущим шагам и внести изменения и доработки в создаваемое приложение. После того как эта кнопка нажата, изменения можно вносить только в проект при помощи конструктора форм и других инструментов среды проектирования.

На этом шаге можно, при необходимости, сохранить все настройки, осуществленные в процессе работы мастера, в файле настроек, чтобы использовать их при последующих разработках приложения с помощью мастера. Для выбора файла настроек предназначен раскрывающийся список То what profile do you want to load your settings? (В какой файл настройки загрузить установки?). Если в списке нет нужного файла, для осуществления поиска файла на диске нажмите кнопку с тремя точками и, с помощью открывшегося диалогового окна, найдите требуемый файл или введите название создаваемого файла.

Рис. 2.12. Окно Finished! мастера приложений

Итак, после нажатия кнопки Finish работа мастера VB Application Wizard завершается. Таким образом создано приложение в стиле MD1 (рис. 2.13), которое содержит все основные элементы проектируемого приложения, выбранные на каждом из шагов работы мастера:

  • MDI — окно приложения с расположенными в правом верхнем углу кнопками скрытия, развертывания и закрытия окна;
  • меню, содержащее следующие пункты: File (Файл), Edit (Правка), View (Вид), Window (Окно) и Help (Справка);
  • панель инструментов;
  • панель состояния приложения.

На панели инструментов приложения расположены кнопки, предложенные мастером VB Application Wizard по умолчанию. Назначение этих кнопок указано в табл. 2.3.

Таблица 2.3. Назначение кнопок панели инструментов приложения. созданного с помощью мастера
Кнопка | Назначение
New (Новый) | Создает новый документ
Open (Открыть) | Открывает существующий документ
Save (Сохранить) | Сохраняет изменения в документе
Print (Печать) | Вызывает диалоговое окно для настройки печати и выполнения печати документа
Cut (Вырезать) | Вырезает часть документа в буфер
Copy (Копировать) | Копирует часть документа в буфер
Paste (Вставить) | Вставляет из буфера
Кнопки назначения варианта начертания шрифта | Назначает вариант начертания шрифта: жирный (Bold), курсивный (Italic) или подчеркнутый (Underline)
Кнопки выравнивания текста | Выравнивает текст документа по левому краю, по середине, по правому краю

Рис. 2.13. MDI— окно созданного проекта

В проект включены все выбранные при работе мастера приложении формы, диалоговые окна и другие элементы. Для их просмотра можно вызвать проводник проекта. В окне проводника вид созданного при помощи мастера приложений проекта будет выглядеть так, как показано на рис. 2.14. Как видно из рисунка, в созданный проект включены все выбранные при работе мастера Application Wizard формы и диалоговые окна. Для модификации формы и создания исходного кода ее необходимо открыть в конструкторе форм непосредственно из проводника проекта, дважды щелкнув на ее имени.

Рис. 2.14. Окно проводника для созданного с помощью мастера проекта

Чтобы сохранить проект и все его элементы, необходимо воспользоваться командами сохранения из меню File (Файл). Желательно при сохранении форм и других элементов созданного проекта приложения, хранящихся в отдельных файлах, присвоить другие имена, поменяв заданные мастером по умолчанию на более понятные и имеющие смысловую нагрузку имена. Например, форму, предназначенную для ввода адреса, желательно назвать frmInputAddress или подобным именем. Изменить имена форм и других объектов можно в окне свойств для соответствующих объектов следующим образом:

1. Открыть форму в конструкторе форм, дважды щелкнув на ее имени.

2. Открыть окно свойств Properties формы. Для этого установить курсор в форме на свободном от объектов месте, нажать правую кнопку мыши и выбрать из контекстного меню команду Properties (Свойства). Для открытия окна свойств можно также воспользоваться командой Properties Window (Окно свойств) меню View (Вид) или нажать клавишу <F4>.

3. Изменить свойство Name (Имя), введя требуемое имя формы.

Созданный проект является макетом для дальнейшей модификации и доведения его до рабочего варианта приложения. В то же время, это уже работающий вариант приложения, демонстрирующий выполнение всех необходимых функций. Запустить приложение на выполнение можно командой Start (Старт) меню Run (Запуск) или нажав клавишу <F5>.

Мастер форм баз данных Data Form Wizard

При помощи мастера Data Form Wizard (Мастер форм баз данных) можно быстро создать формы, позволяющие работать с базами данных: получать информацию, организовать управление информацией (изменение, ввод новых данных, удаление), обеспечивать перемещение по записям базы данных. Как было описано выше, этот мастер может работать совместно с мастером приложений. Это является только одним из вариантов использования мастера форм баз данных в работе другого мастера. Отдельно данный мастер вызывается из диалогового окна выбора шаблона формы при добавлении новой формы в проект с помощью команды Add Form (Добавить форму) меню Project (Проект) или нажатием кнопки Add Form на стандартной панели инструментов.

Мастер Data Form Wizard дает возможность создать:

  • прототипы форм для работы с локальными или удаленными базами данных и выполнения запросов к этим базам данных;
  • элементы управления данными в форме. Среди них кнопки, предназначенные для перемещения по записям таблиц базы данных, ввода новых записей, изменения и удаления данных в таблицах;
  • формы различных типов для доступа к данным, хранящимся в базах данных. Типы форм могут быть самыми разными:
    • в виде полей, отображающих одну запись;
    • в табличном виде, отображающем несколько записей. В этом случае столбцы таблицы формы являются полями, а строки — записями таблицы базы данных;
    • формы, отображающие данные из таблиц с отношением один-ко-многим.

В отличие от мастера Application Wizard, количество и назначение шагов мастера Data Form Wizard может изменяться. Это определяется выбранным видом создаваемой формы. Для формы, отображающей данные из одной таблицы, выполняются следующие шаги:

1. Introduction — введение.

2. Database Type — выбор типа базы данных.

3. Database — выбор базы данных и соединение с ней.

4. Form — выбор типа формы.

5. Record Source — выбор полей базы данных, порядка следования полей в форме,сортировки.

6. Control Selection — выбор элементов управления данными.

7. Finished — завершение работы мастера.

8. Control Selection — выбор элементов управления данными.

9. Finished — завершение работы мастера. Рассмотрим последовательно работу мастера:

1. Первое диалоговое окно мастера Data Form Wizard называется Introduction (Введение) и аналогично окну первого шага мастера приложений Application Wizard.

Рис. 2.15. Диалоговое окно Introduction мастера форм баз данных

В нем можно загрузить файл, содержащий параметры настройки мастера, сохраненные в результате предыдущей работы данного мастера (рис. 2.15). Если вы не используете файл с параметрами настройки, нажмите кнопку Next для перехода к следующему шагу.

2. На втором шаге необходимо выбрать тип локальной базы данных или удаленную базу данных. На рис. 2.16 в списке содержится имя локальной база данных Access и значение Remote (ODBC) (Удаленная), позволяющее выбрать удаленную базу данных.

Рис. 2.16. Диалоговое окно Database Type мастера форм баз данных

При выборе конкретного типа локальной базы данных мастер переходит к следующему шагу проектирования формы — выбору базы данных. Если выбран удаленный доступ к базе данных, то открывается диалоговое окно Connect Information (Информация о соединении), предлагающее указать, как необходимо соединяться (рис. 2.17) с базой данных. Используя размещенные в форме поля, необходимо указать сетевой путь к базе, имя пользователя, пароль, имя базы данных, драйвер, имя сервера.

3. На третьем шаге мастер предлагает выбрать таблицу базы данных или базу в случае однотабличных баз данных (рис. 2.18). Воспользуемся демонстрационной базой данных Biblio, поставляемой вместе с Visual Basic 6.

4. В верхней части диалогового окна мастера, появляющегося на четвертом шаге (рис. 2.19), расположено поле What name do you want to the form? (Какое имя присвоить форме?), предназначенное для ввода имени создаваемои формы. Список Form Layout (Макет формы) содержит шаблоны форм, описанные в табл. 2.4.

Рис. 2.17. Окно Connect Information мастера форм баз данных

Рис. 2.18. Окно Database мастера форм баз данных

Таблица 2.4. Шаблоны создаваемых форм
Шаблон | Назначение
Single record | Форма содержит поля, отображающие одну запись таблицы базы данных
Grid (Datasheet) | Данные в форме представлены в табличном виде
Master/Detail | Форма для отображения данных из связанных таблиц, имеющих отношение один-ко-многим. При этом одной записи в главной таблице базы данных будет соответствовать набор записей в подчиненной таблице
MS HFIexGrid | Таблица записей с форматированием и сливанием строк. Для формы данного типа дополнительно надо будет выбрать тип форматирования таблицы
MS Chart | Форма, содержащая двух- или трехмерную графику статистики по базе данных. Для этой формы необходимо будет в дополнительном окне выбрать форму и тип диаграммы

Рис. 2.19. Окно Form мастера форм баз данных

На пятом шаге мастера необходимо выбрать источник данных (таблицы базы данных) для проектируемой формы. Если на предыдущем шаге был выбран тип формы Master/Detail, то пятый шаг состоит из двух похожих окон. Сначала выбирается источник данных для главной таблицы проектируемой формы, называемой Master. Затем в аналогичном окне выбирается источник данных подчиненной таблицы, называемой Detail. Окна мастера Data Form Wizard озаглавлены Master Record Source (Источник записей главной таблицы) и Detail Record Source (Источник записей подчиненной таблицы). Эти диалоговые окна представлены на рис. 2.20 и 2.21, соответственно.

Рис. 2.20. Диалоговое окно Master Record Source для выбора полей главной таблицы базы данных

В верхней части окна мастера расположен список Record Source (Источник записей), из которого выбирается требуемая таблица базы данных. После выбора таблицы в списке Available Fields (Доступные поля) появляется список всех полей выбранной таблицы для размещения их в создаваемой форме.

Список Selected Fields (Выбранные поля) содержит поля, размещаемые в создаваемой форме. Перенести требуемые поля из списка Available Fields в список Selected Fields можно по одному или сразу все соответствующими кнопками со значками направления переноса, указанными- в табл. 2.5.

Таблица 2.5. Кнопки направления переноса полей
Кнопка | Назначение
 | Переносит одно поле из списка доступных полей Available Fields в список выбранных полей Selected Fields
 | Переносит все поля из списка Available Fields в список полей Selected Fields
 | Переносит текущее поле из списка Selected Fields в список Available Fields
 | Переносит все поля из списка Selected Fields в список Available Fields

Рис. 2.21. Окно Detail Record Source мастера для выбора полей подчиненной таблицы

Поля в форме будут располагаться в порядке, заданном в списке выбранных полей. Внутри этого списка порядок полей можно менять кнопками перемещения полей, которые показаны в табл. 2.6.

Таблица 2.6. Кнопки, используемые для перестановки полей в списках
Кнопка | Назначение
 | Перемещает поле на одну позицию вверх
 | Перемещает поле на одну позицию вниз

После выбора списка полей в форме и порядка их расположения можно задать сортировку данных. Для этого в раскрывающемся списке Column to Sort By (Колонка сортировки) необходимо выбрать поле базы данных, по которому будет выполняться сортировка данных при их выборке в проектируемой форме.

6. Следующий, шестой шаг мастера форм, предназначен для указания полей, по которым связываются таблицы в многотабличной форме (рис. 2.22).

Замечание

Напомним, что этот шаг будет пропущен для форм, отображающих данные из одной таблицы.

Рис. 2.22. Окно Record Source Relation мастера форм баз данных

Диалоговое окно мастера содержит два списка. В левом списке отображаются поля главной таблицы, в правом — поля подчиненной таблицы. Связывание таблиц в проектируемой форме выполняется следующим образом. В списке полей главной таблицы Master необходимо выбрать поле для установления связи. После этого в списке полей подчиненной таблицы выбирается соответствующее поле для связывания таблиц.

7. На седьмом шаге мастера (рис. 2.23) устанавливаются возможности по управлению данными в базе данных при помощи кнопок, размещенных в форме. Диалоговое окно содержит следующие флажки:

Флажок | Назначение
Add Button | Создает в форме кнопку Add, предназначенную для добавления записей в базу данных
Edit Button | Создает в форме кнопку Update, переводящую форму в режим редактирования данных
Delete Button | Размещает в форме кнопку Delete, предназначенную для удаления записей
Refresh Button | Размещает в форме кнопку Refresh, предназначенную для обновления в форме информации из базы данных
Close Button | Создает кнопку Close для выхода из формы (закрытия формы)

Рис. 2.23. Диалоговое окно Control Selection мастера форм

8. На последнем шаге (рис. 2.24) задается имя и расположение файла для сохранения параметров настройки мастера. Этот файл можно будет использовать в первом диалоговом окне мастера для загрузки параметров при следующем создании формы с помощью мастера Data Form Wizard.

Установив все необходимые параметры, нажмите кнопку Finish (Готово). Будет завершена работа мастера и создан макет формы для работы с базой данных.

Итак, все шаги мастера Data Form Wizard пройдены и получена форма приложения для работы с базой данных. Мы уже говорили, что с помощью данного мастера можно создавать формы, позволяющие работать с одной таблицей или со связанными таблицами, имеющими отношение один-ко-многим. Рассмотрим формы, получаемые при помощи мастера в том и другом случае.

Рис. 2.24. Окно Finished! мастера форм баз данных

Рис. 2.25. Окно формы для одной записи

На рис. 2.25 представлена форма типа Single Record (Одна запись), содержащая поля, отображающие одну запись таблицы. В состав формы входят следующие объекты:

  • набор выбранных в окне мастера Record Source (Источник записей) полей базы данных;
  • кнопки управления:
    • Update (Изменить) для изменения данных в текущей записи;
    • Delete (Удалить) для удаления записей;
    • Cancel (Отмена) для отказа от изменений, внесенных в форму;
    • Refresh (Обновить) для обновления в форме данных из базы данных;
    • Close (Закрыть) для выхода из формы;
    • кнопка перемещения в начало таблицы (то есть на первую запись в соответствии с выбранной сортировкой);
    • кнопка перемещения в конец таблицы;
    • кнопка перемещения в таблице на одну запись вперед, то есть на следующую запись;
    • кнопка перемещения на одну запись назад в таблице, то есть на предыдущую запись.

Для формы типа Master/Detail (Главная/Подчиненная) получаем форму, показанную на рис. 2.26. Форма состоит из полей главной таблицы базы данных и в табличном виде представлены поля подчиненной таблицы базы данных. При перемещении по записям главной таблицы будет соответственно изменяться содержимое размещенной в форме таблицы.

Рис. 2.26. Окно формы для таблиц, имеющих отношение один-ко-многим

В состав формы входят следующие объекты:

  • набор выбранных в окне мастера Master Record Source (Источник записей главной таблицы) полей главной таблицы;
  • таблица, содержащая поля подчиненной таблицы базы данных, выбранные в окне Detail Record Source (Источник записей подчиненной таблицы) мастера;
  • кнопки управления:
    • Update (Изменить) для изменения данных в текущей записи;
    • Delete (Удалить) для удаления записей;
    • Cancel (Отмена) для отказа от изменений, внесенных в форму;
    • Refresh (Обновить) для обновления в форме данных из базы данных;
    • Close (Закрыть) для выхода из формы;
    • кнопка перемещения в начало таблицы (то есть на первую запись в соответствии с выбранной сортировкой);
    • кнопка перемещения в конец таблицы;
    • кнопка перемещения в таблице на одну запись вперед, то есть на следующую запись;
    • кнопка перемещения в таблице на одну запись назад , то есть на предыдущую запись.

    Замечание

    Кнопки управления, размещенные в форме с помощью мастера, позволяют просматривать и редактировать записи главной таблицы. По умолчанию мастер не разрешает редактирование данных в подчиненной таблице. Но с помощью СВОЙСТВ таблицы AllowAddNew, AllowDelete иAllowUpdate ВЫ можете установить режимы добавления, удаления и редактирования записей подчиненной таблицы.

Шаблоны

В Visual Basic 6 для создания приложений широко используются шаблоны, как самих приложений, так и входящих в него форм. Шаблоны приложений расположены в виде значков в диалоговом окне New Project, открываемом при запуске Visual Basic и при выполнении команды New Project (Новый проект) из меню File. Шаблоны форм размещены в диалоговом окне Add Form, открывающемся при выборе команды Add Form (Добавить форму) из меню Project (Проект) или при нажатии кнопки Add Form на стандартной панели инструментов.

Для открытия шаблона необходимо дважды щелкнуть на его значке, после чего шаблон открывается, позволяя начать проектирование.

Для многократного использования удачных и зарекомендовавших себя интерфейсных решений можно создать собственные шаблоны и использовать их при проектировании новых приложений.

Для того чтобы разработать свой шаблон, например шаблон формы, необходимо создать требуемую форму при помощи конструктора и сохранить ее. Затем скопировать эту форму в папку шаблонов соответствующих элементов. Для форм, например, шаблоны могут храниться в папке \VB\Template\Forms. После этого данный шаблон будет появляться в диалоговом окне выбора шаблонов под присвоенным ему именем. Аналогичным образом можно создать шаблоны для форм MDI-окна, модулей, модулей классов, элементов управления, страниц свойств.

Замечание

Заблокировать вывод шаблонов выбранного типа можно на вкладке Environment (Среда) в группе Show Template For (Показывать шаблоны) окна настройки среды разработки, вызвав его командой Options (Параметры) меню Tools (Сервис).

Стандартные шаблоны форм

Visual Basic б предлагает разработчику набор готовых стандартных шаблонов форм, широко используемых практически во всех его приложениях.

Рис. 2.27. Окно выбора шаблонов форм

При добавлении новой формы в проект вызывается диалоговое окно Add Form (рис. 2.27), содержащее следующие шаблоны:

  • Form — шаблон формы;
  • About Dialog — шаблон диалогового окна для описания приложения;
  • Web Browser — шаблон браузера;
  • Dialog — шаблон диалогового окна;
  • Log in Dialog — шаблон диалогового окна, предназначенного для ввода имени и пароля пользователя;
  • Splash Screen — шаблон атрибутов приложения;
  • Tip of the Day — шаблон ежедневных полезных советов;
  • ODBC Log In — шаблон соединения с базой данных;
  • Options Dialog — шаблон диалогового окна с параметрами работы приложения.

Все эти шаблоны часто применяются в разрабатываемых пользовательских приложениях. На их основе можно создать собственные шаблоны, добавив элементы управления и программный код.

Стандартные шаблоны помогают выдержать общий стиль приложения, совместимый со стилем системы Windows, что немаловажно для коммерческих приложений.

Рассмотрим более подробно перечисленные шаблоны.

Шаблон About Dialog

Обычно в приложение добавляют диалоговое окно с краткой информацией о назначении приложения и его функциях. Для создания этого диалогового окна в Visual Basic можно использовать шаблон формы About Dialog (рис. 2.28).

Рис. 2.28. Шаблон диалогового окна для описания приложения

Совет

Для вызова формы с краткой информацией о назначении приложения и его функциях удобно использовать команду меню приложения About (О приложении).

Шаблон About Dialog содержит следующие объекты:

  • поле для отображения значка приложения. Для значка можно использовать графическое изображение эмблемы фирмы;
  • текстовое поле Application Title (Заголовок приложения) для ввода заголовка приложения;
  • текстовое поле Version (Версия) для вывода номера версии приложения;
  • текстовое поле Арр Description (Описание приложения) для вывода описания приложения;
  • текстовое поле Warning (Внимание) для вывода информации об авторских правах, работе с приложением и т. д.;
  • кнопка ОК для выхода из этого окна;
  • кнопка System Info (Системная информация) для вывода системной информации о параметрах компьютера.

Шаблон Web Browser

Для быстрого создания диалоговых окон Web-браузеров можно использовать шаблон формы, показанный на рис. 2.29. В шаблоне заданы типовые кнопки для перемещения по страницам и раскрывающийся список для ввода или выбора адресов в сети Internet.

Рис. 2.29. Шаблон формы браузера

В состав этого шаблона формы входят следующие элементы управления:

  • кнопки, предназначенные для перемещения по Web-страницам сети Internet:
    • Назад — для возврата на предыдущую страницу;
    • Вперед — для перехода на следующую страницу;
    • Остановить — для останова загрузки Web-страницы;
    • Обновить — для обновления информации;
    • Домой — для возврата на домашнюю страницу.
  • поле с раскрывающимся списком Address (Адрес) для ввода или выбора адреса из списка предыдущих обращений в сети;
  • объект Timer (Таймер) для программирования временных событий.

Шаблон Dialog

Для выбора какого-либо действия, для подтверждения действия, для вывода какого-либо сообщения безо всяких действий можно использовать шаблон стандартного диалогового окна (рис. 2.30).

Рис. 2.30. Шаблон стандартного диалогового окна

В этом шаблоне можно разместить предупреждающий текст, ввести элементы выбора (например, переключатели или раскрывающийся список) и в зависимости от ситуации, использовать готовые кнопки подтверждения выбора — ОК (Да) или Cancel (Отмена). Этим кнопкам можно оставить предложенные по умолчанию названия или переименовать.

Шаблон Log in Dialog

Для организации входа в приложение с использованием имени пользователя и пароля, как это часто делается в современных приложениях, можно воспользоваться шаблоном окна запроса имени и пароля пользователя — Log in Dialog (рис. 2.31). При входе в приложение необходимо будет ввести имя пользователя для регистрации и пароль для входа. При несовпадении имени или пароля будет выдаваться соответствующее сообщение. Кнопки ОК и Cancel, расположенные в форме, предназначены для подтверждения входа в приложение или отказа, соответственно.

Рис. 2.31. Шаблон диалогового окна для ввода имени и пароля пользователя

Шаблон Splash Screen

В приложение можно добавить диалоговое окно описания коммерческих атрибутов приложения, таких как:

  • наименование приложения с эмблемой фирмы;
  • наименование разработчика приложения и авторов;
  • номер лицензии и кому принадлежит лицензия на данный экземпляр приложения;
  • версию приложения и рабочую платформу приложения;
  • атрибуты авторского права;
  • краткие примечания к приложению.

Для создания такого диалогового окна вывода сведений о приложении, которые обычно выводятся при запуске приложения, используется шаблон Splash Screen, показанный на рис. 2.32.

Рис. 2.32. Шаблон формы атрибутов приложения Splash Screen

Шаблон Tip of the Day

Visual Basic 6 при помощи стандартных шаблонов может помочь вам организовать службу ежедневных кратких полезных советов о работе приложения. Для этого можно использовать шаблон окна Tip of the Day (Ежедневный совет), показанный на рис. 2.33.

Рис. 2.33. Шаблон формы Tip of the Day

Шаблон ODBC Log In

Для приложений, работающих с базами данных, всегда требуется установить соединение с базой данных. Для этого можно использовать стандартный шаблон диалогового окна соединения с базой данных ODBC Logon (рис. 2.34). В этом шаблоне присутствуют следующие поля для ввода данных, требующихся для присоединения к базе данных:

  • DSN — имя источника данных;
  • UID — идентификатор пользователя базы данных;
  • Password (Пароль) — пароль входа в базу данных;
  • Database (База данных) — имя базы данных;
  • Driver (Драйвер) — драйвер, обеспечивающий связь с базой данных;
  • Server (Сервер) — имя сервера базы данных.

Рис. 2.34. Шаблон формы для соединения с базой данных

Шаблон Options Dialog

В приложениях часто требуется организовать настройку режимов работы приложения или среды, в которой работает приложение, при помощи набора параметров, задающих эти режимы работы или описывающих среду приложения. Для создания такой формы можно использовать специальный шаблон для настроек параметров приложения — Options Dialog (рис. 2.35).

В форме, создаваемой с помощью шаблона Options Dialog, все параметры режимов работы можно собрать в группы и каждую группу параметров разместить на отдельной вкладке. Работа этого диалогового окна организована так же, как форма настройки режимов работы среды проектирования Visual Basic 6, которая описана в главе 1.

Совет

Для вызова формы настройки режимов работы приложения или среды удобно использовать команду меню приложения Options (Параметры).

Рис. 2.35. Шаблон диалогового окна с параметрами работы приложения

В состав шаблона Options Dialog входит форма с четырьмя вкладками для различных по смыслу групп параметров настроек. На первой вкладке дополнительно добавлен объект для группировки настроек на вкладке. В шаблон включены три кнопки управления:

  • OK — подтверждение и сохранение настроек и выход из формы;
  • Cancel — отказ от введенных в настройки изменений и выход без сохранения новых значений параметров настройки;
  • Apply (Применить) — подтверждение и сохранение настроек без выхода из формы.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Мастер приложения Application Wizard

Мастер приложении Application Wizard применяется для быстрого создания приложения с его дальнейшей доработкой до рабочего варианта с использованием инструментария среды проектирования. С помощью него можно создать полнофункциональный прототип приложения, содержащий все необходимые формы интерфейса.

Рассмотрим работу мастера приложений по шагам. На экране поочередно появляются восемь диалоговых окон, в которых необходимо выполнить определенные действия. Осуществив установку параметров в очередном диалоговом окне мастера, для перехода к следующему шагу необходимо нажать кнопку Next (Следующий). Чтобы вернуться к предыдущему шагу, следует воспользоваться кнопкой Back (Назад). Напомним, что на любом шаге можно выйти из диалогового окна мастера, нажав кнопку Finish (Готово), и дорабатывать полученный макет приложения самостоятельно.

Для запуска мастера приложения Application Wizard выполните следующие действия:

1. В меню File (Файл) выберите команду New Project (Новый проект) или нажмите комбинацию клавиш <Ctrl>+<N>.

2. В открывшемся диалоговом окне New Project (рис. 2.2) дважды щелкните на значке VB Application Wizard.

Рис. 2.2. Диалоговое окно, используемое для запуска мастера приложений

3. В первом диалоговом окне мастера (рис. 2.3) расположен раскрывающийся список From what profile do you want to load your settings? (Из какого файла настройки загрузить установки?), посредством которого можно выбрать файл настроек, осуществленных мастером при предыдущем создании с его помощью аналогичного приложения. В файле настроек хранятся все варианты выбора, сделанные при работе мастера. Использование файла настроек ускорит создание однотипных приложений и элементов приложения. Если список пуст, нажмите кнопку с тремя точками и в открывшемся диалоговом окне Open Profile (Открыть файл настройки) осуществите поиск необходимого файла настроек на диске.

В том случае, если в работе мастера вы не будете использовать файл настройки, нажмите кнопку Next для перехода к следующему шагу.

4. На втором шаге работы мастера необходимо выбрать стиль интерфейса приложения из трех предложенных вариантов: MDI, SDI или стиль проводника (рис. 2.4). Подробно стили описаны в главе 7. Здесь же можно отметить, что в Visual Basic 6 можно создать приложения трех стилей.

  • Многодокументный интерфейс (MDI— Many Document Interface) — интерфейс с одним главным окном и требуемым количеством дочерних окон для выполнения функциональных задач приложения. Все дочерние окна открываются внутри главного окна, которое является контейнером для всех дочерних окон. При этом одно и то же дочернее окно с разными документами можно открыть многократно внутри главного. Примером такого приложения служит программа Microsoft Word.
  • Однодокументный интерфейс (SDI — Single Document Interface) — интерфейс только с одним окном для одного документа. Для выбора двух документов такое приложение необходимо запустить два раза. Примером такого приложения является тестовый редактор Microsoft WordPad.
  • Стиль проводника — это однооконный интерфейс, аналогичный SDI, для иерархических древовидных структур. Примером может служить приложение проводник (Explorer) в системе Windows.

Рис. 2.3. Диалоговое окно Introduction мастера приложений

Для указания стиля будущего приложения установите одну из трех опций. Затем в поле ввода What name do you want for the application? (Какое имя присвоить приложению?) введите наименование приложения и нажмите кнопку Next для перехода к следующему шагу.

5. На третьем шаге мастера Application Wizard (рис. 2.5) создается меню приложения. Открывшееся диалоговое окно мастера аналогично редактору меню, который более подробно описан в главе 7. Предлагаемое мастером меню создается в стандарте Windows. В диалоговом окне мастера два списка. Список Menus содержит пункты, предлагаемые для включения в строку основного меню. В список Sub Menus входят команды, предлагаемые для включения в пункты меню.

Рис. 2.4. Диалоговое окно Interface Type для указания типа создаваемого приложения

Рис. 2.5. Окно редактора меню Menus мастера приложений

Мастер предлагает включить в строку меню следующие пункты:

  • File (Файл)
  • Edit (Правка)
  • View (Вид)
  • Tools (Сервис)
  • Window (Окно)
  • Help (Справка)

Установите флажки рядом с теми пунктами меню, которые вы хотите использовать в создаваемом вами приложении. Затем, выбирая поочередно из списка Menus пункты, в списке Sub Menus установите флажки для тех команд, которые хотите включить в текущий пункт меню.

Основные команды, содержащиеся в раскрывающихся меню, аналогичны многим таким же командам других приложений Microsoft. Это облегчает пользователю работу с приложением.

Замечание

При создании меню приложения следует напомнить, что меню Window (Окно) будет присутствовать только для приложения в MDI, поскольку другие стили не предполагают наличия нескольких окон.

Для формирования строки меню и содержащихся в них команд, необходимо использовать находящиеся в диалоговом окне мастера кнопки, предназначенные для добавления, удаления и перемещения позиций в списках. Назначение кнопок описано в табл. 2.2.

Таблица 2.2. Назначение кнопок, используемых при формировании меню
Кнопка | Назначение
 | Открывает диалоговое окно Add New Menu, позволяющее добавить в меню новую команду
 | Позволяет удалить из списка Menus и/или Sub Menus выделенное значение
 | Перемещает выделенное в списке значение на одну позицию вверх
 | Перемещает выделенное в списке значение на одну позицию вниз

Кнопка Reset (Сброс) позволяет вернуть спискам исходное состояние.

6. На четвертом шаге мастера Application Wizard создается панель инструментов приложения (рис. 2.6). Это окно аналогично окну мастера панели инструментов Toolbar Wizard (Мастер панели инструментов) и подробно описано в главе 7. Кратко рассмотрим выполняемые в этом окне действия по созданию панели инструментов приложения.

Рис. 2.6. Диалоговое окно Customize Toolbar, позволяющее создать панель инструментов приложения

В верхней части диалогового окна расположена панель инструментов, предлагаемая по умолчанию для приложения. В правом списке эта же панель инструментов представлена в виде команд и соответствующих им кнопок. Левый список содержит команды, которые можно включить в панель инструментов.

Для переноса команд из одного списка в другой можно использовать двойной щелчок кнопкой мыши, способ "перенести-и-оставить" или кнопки, расположенные между списками. Изменение последовательности расположения кнопок на панели инструментов приложения осуществляется кнопками перемещения позиций в списке. Следует иметь в виду. что кнопки перемещения позиций действуют только на правый список. Левый список кнопок можно дополнить кнопками, разработанными заранее. Кнопка Reset возвращает панель инструментов в исходное состояние, т. е. заданное по умолчанию мастером.

7. На пятом шаге мастера приложений открывается диалоговое окно Resources (Ресурсы) (рис. 2.7), позволяющее присоединить к вашему приложению файл. Файл ресурсов — это специальный файл, в котором хранятся настройки вашего приложения: таблицы шрифтов, таблицы строковых переменных, используемые значки и т. д. В некотором приближении можно считать этот файл настроечной базой данных, аналогичной базе Registry системы Windows, но для вашего приложения. Установите требуемую опцию и перейдите к следующему шагу.

8. На шестом шаге мастера Application Wizard можно включить в приложение возможность прямого выхода в Internet (рис. 2.8).

Рис. 2.7. Окно Resources мастера приложений

Рис. 2.8. Окно Internet Connectivity мастера приложений

Диалоговое окно Internet Connectivity (Соединение с Internet) содержит две опции. Если установлена опция Yes (Да), то мастером приложений будет создан шаблон окна браузера. При установке опции Yes становится доступным для ввода поле, предназначенное для задания адреса загружаемой Web-страницы (URL). По умолчанию в этом поле задан адрес домашней страницы фирмы Microsoft.

Установив необходимые параметры, нажмите кнопку Next.

9. Седьмой шаг мастера приложения дает возможность включить в проект приложения стандартные (типовые) шаблоны окон и диалогов. Под шаблонами здесь понимаются прототипы форм, диалоговых окон и других элементов, готовых к использованию в составе приложения. Эти шаблоны названы стандартными, поскольку применяются практически во всех приложениях. Примерами диалоговых окон являются окна для ввода имени пользователя и пароля при входе в приложение, диалог присоединения к базе данных и другие, перечисленные ниже.

Рис. 2.9. Окно Standard Forms мастера приложений

Для того чтобы эти шаблоны были включены в состав проекта, необходимо в окне мастера (рис. 2.9) установить следующие флажки для их создания:

  • Splash screen at application start up — диалоговое окно приглашения, появляющегося при запуске файла приложения;
  • Login dialog to accept an ID and Password (Диалог входа) — диалоговое окно ввода имени пользователя и пароля для входа в приложение;
  • Options dialog for custom settings — диалоговое окно режимов работы приложения;
  • About Box — форма, содержащая информацию о приложении, версии приложения и разработчике.

Для того чтобы требуемые вам шаблоны диалоговых окон и форм были созданы и присоединены к приложению, необходимо установить соответствующие флажки.

На этом же шаге мастера в проектируемое приложение можно включить стандартные дополнительные шаблоны, вызвав окно выбора этих форм нажатием кнопки Form Templates (Шаблоны форм).

Рис. 2.10. Окно Form Templates мастера приложений

При нажатии кнопки Form Templates открывается одноименное диалоговое окно (рис. 2.10), содержащее следующие шаблоны форм:

  • Dialog (Диалог) — диалоговое окно общего вида для вывода сообщении и запроса на продолжение работы приложения в зависимости от выбора в этом окне;
  • ODBC Log In (Соединение с ODBC) — диалоговое окно для соединения с удаленными базами данных, используя ODBC;
  • Tip of the Day (Ежедневный совет) — окно ежедневного полезного совета в виде подсказки по работе с приложением;
  • Web Browser (Web-браузер) — окно браузера для работы в Internet.

Для того чтобы вышеперечисленные формы и диалоговые окна были созданы по указанным шаблонам и присоединены к проекту приложения, необходимо установить флажки выбора соответствующих шаблонов в списке Form Templates (Шаблоны форм) этого окна. Если требуются все шаблоны, кнопкой Select All (Выбрать все) можно установить все флажки в списке. Аналогично, с помощью кнопки Clear All (Очистить все) можно отменить выбор всех флажков.

Рис. 2.11. Диалоговое окно Data Access Forms мастера приложений

10. На восьмом шаге мастера открывается диалоговое окно Data Access Forms (рис. 2.11), позволяющее спроектировать формы для управления базами данных. В окне мастера расположен список Data Forms (Формы ввода данных), данные в который вводятся с помощью кнопки Create New Form (Создать новую форму). При нажатии этой кнопки вызывается мастер форм для баз данных Data Form Wizard, работа которого описана ниже в этой главе. Можно сразу же построить необходимые формы для работы с базой данных. Разработанные при помощи этого мастера формы будут включены в список Data Forms и затем в проект создаваемого приложения. Эти формы в дальнейшем будут доступны и как шаблоны, и для других создаваемых при помощи мастера Data Form Wizard форм работы с базами данных в новых разработках.

11. Девятый шаг (рис. 2.12) завершает работу мастера приложений. Кнопка Next (Следующий) становится недоступной и нажатием кнопки Finish (Готово) можно завершить процесс создания приложения.

Замечание

Пока в окне мастера кнопка Finish не нажата, можно вернуться к предыдущим шагам и внести изменения и доработки в создаваемое приложение. После того как эта кнопка нажата, изменения можно вносить только в проект при помощи конструктора форм и других инструментов среды проектирования.

На этом шаге можно, при необходимости, сохранить все настройки, осуществленные в процессе работы мастера, в файле настроек, чтобы использовать их при последующих разработках приложения с помощью мастера. Для выбора файла настроек предназначен раскрывающийся список То what profile do you want to load your settings? (В какой файл настройки загрузить установки?). Если в списке нет нужного файла, для осуществления поиска файла на диске нажмите кнопку с тремя точками и, с помощью открывшегося диалогового окна, найдите требуемый файл или введите название создаваемого файла.

Рис. 2.12. Окно Finished! мастера приложений

Итак, после нажатия кнопки Finish работа мастера VB Application Wizard завершается. Таким образом создано приложение в стиле MD1 (рис. 2.13), которое содержит все основные элементы проектируемого приложения, выбранные на каждом из шагов работы мастера:

  • MDI — окно приложения с расположенными в правом верхнем углу кнопками скрытия, развертывания и закрытия окна;
  • меню, содержащее следующие пункты: File (Файл), Edit (Правка), View (Вид), Window (Окно) и Help (Справка);
  • панель инструментов;
  • панель состояния приложения.

На панели инструментов приложения расположены кнопки, предложенные мастером VB Application Wizard по умолчанию. Назначение этих кнопок указано в табл. 2.3.

Таблица 2.3. Назначение кнопок панели инструментов приложения. созданного с помощью мастера
Кнопка | Назначение
New (Новый) | Создает новый документ
Open (Открыть) | Открывает существующий документ
Save (Сохранить) | Сохраняет изменения в документе
Print (Печать) | Вызывает диалоговое окно для настройки печати и выполнения печати документа
Cut (Вырезать) | Вырезает часть документа в буфер
Copy (Копировать) | Копирует часть документа в буфер
Paste (Вставить) | Вставляет из буфера
Кнопки назначения варианта начертания шрифта | Назначает вариант начертания шрифта: жирный (Bold), курсивный (Italic) или подчеркнутый (Underline)
Кнопки выравнивания текста | Выравнивает текст документа по левому краю, по середине, по правому краю

Рис. 2.13. MDI— окно созданного проекта

В проект включены все выбранные при работе мастера приложении формы, диалоговые окна и другие элементы. Для их просмотра можно вызвать проводник проекта. В окне проводника вид созданного при помощи мастера приложений проекта будет выглядеть так, как показано на рис. 2.14. Как видно из рисунка, в созданный проект включены все выбранные при работе мастера Application Wizard формы и диалоговые окна. Для модификации формы и создания исходного кода ее необходимо открыть в конструкторе форм непосредственно из проводника проекта, дважды щелкнув на ее имени.

Рис. 2.14. Окно проводника для созданного с помощью мастера проекта

Чтобы сохранить проект и все его элементы, необходимо воспользоваться командами сохранения из меню File (Файл). Желательно при сохранении форм и других элементов созданного проекта приложения, хранящихся в отдельных файлах, присвоить другие имена, поменяв заданные мастером по умолчанию на более понятные и имеющие смысловую нагрузку имена. Например, форму, предназначенную для ввода адреса, желательно назвать frmInputAddress или подобным именем. Изменить имена форм и других объектов можно в окне свойств для соответствующих объектов следующим образом:

1. Открыть форму в конструкторе форм, дважды щелкнув на ее имени.

2. Открыть окно свойств Properties формы. Для этого установить курсор в форме на свободном от объектов месте, нажать правую кнопку мыши и выбрать из контекстного меню команду Properties (Свойства). Для открытия окна свойств можно также воспользоваться командой Properties Window (Окно свойств) меню View (Вид) или нажать клавишу <F4>.

3. Изменить свойство Name (Имя), введя требуемое имя формы.

Созданный проект является макетом для дальнейшей модификации и доведения его до рабочего варианта приложения. В то же время, это уже работающий вариант приложения, демонстрирующий выполнение всех необходимых функций. Запустить приложение на выполнение можно командой Start (Старт) меню Run (Запуск) или нажав клавишу <F5>.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Мастер форм баз данных Data Form Wizard

При помощи мастера Data Form Wizard (Мастер форм баз данных) можно быстро создать формы, позволяющие работать с базами данных: получать информацию, организовать управление информацией (изменение, ввод новых данных, удаление), обеспечивать перемещение по записям базы данных. Как было описано выше, этот мастер может работать совместно с мастером приложений. Это является только одним из вариантов использования мастера форм баз данных в работе другого мастера. Отдельно данный мастер вызывается из диалогового окна выбора шаблона формы при добавлении новой формы в проект с помощью команды Add Form (Добавить форму) меню Project (Проект) или нажатием кнопки Add Form на стандартной панели инструментов.

Мастер Data Form Wizard дает возможность создать:

  • прототипы форм для работы с локальными или удаленными базами данных и выполнения запросов к этим базам данных;
  • элементы управления данными в форме. Среди них кнопки, предназначенные для перемещения по записям таблиц базы данных, ввода новых записей, изменения и удаления данных в таблицах;
  • формы различных типов для доступа к данным, хранящимся в базах данных. Типы форм могут быть самыми разными:
    • в виде полей, отображающих одну запись;
    • в табличном виде, отображающем несколько записей. В этом случае столбцы таблицы формы являются полями, а строки — записями таблицы базы данных;
    • формы, отображающие данные из таблиц с отношением один-ко-многим.

В отличие от мастера Application Wizard, количество и назначение шагов мастера Data Form Wizard может изменяться. Это определяется выбранным видом создаваемой формы. Для формы, отображающей данные из одной таблицы, выполняются следующие шаги:

1. Introduction — введение.

2. Database Type — выбор типа базы данных.

3. Database — выбор базы данных и соединение с ней.

4. Form — выбор типа формы.

5. Record Source — выбор полей базы данных, порядка следования полей в форме,сортировки.

6. Control Selection — выбор элементов управления данными.

7. Finished — завершение работы мастера.

8. Control Selection — выбор элементов управления данными.

9. Finished — завершение работы мастера. Рассмотрим последовательно работу мастера:

1. Первое диалоговое окно мастера Data Form Wizard называется Introduction (Введение) и аналогично окну первого шага мастера приложений Application Wizard.

Рис. 2.15. Диалоговое окно Introduction мастера форм баз данных

В нем можно загрузить файл, содержащий параметры настройки мастера, сохраненные в результате предыдущей работы данного мастера (рис. 2.15). Если вы не используете файл с параметрами настройки, нажмите кнопку Next для перехода к следующему шагу.

2. На втором шаге необходимо выбрать тип локальной базы данных или удаленную базу данных. На рис. 2.16 в списке содержится имя локальной база данных Access и значение Remote (ODBC) (Удаленная), позволяющее выбрать удаленную базу данных.

Рис. 2.16. Диалоговое окно Database Type мастера форм баз данных

При выборе конкретного типа локальной базы данных мастер переходит к следующему шагу проектирования формы — выбору базы данных. Если выбран удаленный доступ к базе данных, то открывается диалоговое окно Connect Information (Информация о соединении), предлагающее указать, как необходимо соединяться (рис. 2.17) с базой данных. Используя размещенные в форме поля, необходимо указать сетевой путь к базе, имя пользователя, пароль, имя базы данных, драйвер, имя сервера.

3. На третьем шаге мастер предлагает выбрать таблицу базы данных или базу в случае однотабличных баз данных (рис. 2.18). Воспользуемся демонстрационной базой данных Biblio, поставляемой вместе с Visual Basic 6.

4. В верхней части диалогового окна мастера, появляющегося на четвертом шаге (рис. 2.19), расположено поле What name do you want to the form? (Какое имя присвоить форме?), предназначенное для ввода имени создаваемои формы. Список Form Layout (Макет формы) содержит шаблоны форм, описанные в табл. 2.4.

Рис. 2.17. Окно Connect Information мастера форм баз данных

Рис. 2.18. Окно Database мастера форм баз данных

Таблица 2.4. Шаблоны создаваемых форм
Шаблон | Назначение
Single record | Форма содержит поля, отображающие одну запись таблицы базы данных
Grid (Datasheet) | Данные в форме представлены в табличном виде
Master/Detail | Форма для отображения данных из связанных таблиц, имеющих отношение один-ко-многим. При этом одной записи в главной таблице базы данных будет соответствовать набор записей в подчиненной таблице
MS HFIexGrid | Таблица записей с форматированием и сливанием строк. Для формы данного типа дополнительно надо будет выбрать тип форматирования таблицы
MS Chart | Форма, содержащая двух- или трехмерную графику статистики по базе данных. Для этой формы необходимо будет в дополнительном окне выбрать форму и тип диаграммы

Рис. 2.19. Окно Form мастера форм баз данных

На пятом шаге мастера необходимо выбрать источник данных (таблицы базы данных) для проектируемой формы. Если на предыдущем шаге был выбран тип формы Master/Detail, то пятый шаг состоит из двух похожих окон. Сначала выбирается источник данных для главной таблицы проектируемой формы, называемой Master. Затем в аналогичном окне выбирается источник данных подчиненной таблицы, называемой Detail. Окна мастера Data Form Wizard озаглавлены Master Record Source (Источник записей главной таблицы) и Detail Record Source (Источник записей подчиненной таблицы). Эти диалоговые окна представлены на рис. 2.20 и 2.21, соответственно.

Рис. 2.20. Диалоговое окно Master Record Source для выбора полей главной таблицы базы данных

В верхней части окна мастера расположен список Record Source (Источник записей), из которого выбирается требуемая таблица базы данных. После выбора таблицы в списке Available Fields (Доступные поля) появляется список всех полей выбранной таблицы для размещения их в создаваемой форме.

Список Selected Fields (Выбранные поля) содержит поля, размещаемые в создаваемой форме. Перенести требуемые поля из списка Available Fields в список Selected Fields можно по одному или сразу все соответствующими кнопками со значками направления переноса, указанными- в табл. 2.5.

Таблица 2.5. Кнопки направления переноса полей
Кнопка | Назначение
 | Переносит одно поле из списка доступных полей Available Fields в список выбранных полей Selected Fields
 | Переносит все поля из списка Available Fields в список полей Selected Fields
 | Переносит текущее поле из списка Selected Fields в список Available Fields
 | Переносит все поля из списка Selected Fields в список Available Fields

Рис. 2.21. Окно Detail Record Source мастера для выбора полей подчиненной таблицы

Поля в форме будут располагаться в порядке, заданном в списке выбранных полей. Внутри этого списка порядок полей можно менять кнопками перемещения полей, которые показаны в табл. 2.6.

Таблица 2.6. Кнопки, используемые для перестановки полей в списках
Кнопка | Назначение
 | Перемещает поле на одну позицию вверх
 | Перемещает поле на одну позицию вниз

После выбора списка полей в форме и порядка их расположения можно задать сортировку данных. Для этого в раскрывающемся списке Column to Sort By (Колонка сортировки) необходимо выбрать поле базы данных, по которому будет выполняться сортировка данных при их выборке в проектируемой форме.

6. Следующий, шестой шаг мастера форм, предназначен для указания полей, по которым связываются таблицы в многотабличной форме (рис. 2.22).

Замечание

Напомним, что этот шаг будет пропущен для форм, отображающих данные из одной таблицы.

Рис. 2.22. Окно Record Source Relation мастера форм баз данных

Диалоговое окно мастера содержит два списка. В левом списке отображаются поля главной таблицы, в правом — поля подчиненной таблицы. Связывание таблиц в проектируемой форме выполняется следующим образом. В списке полей главной таблицы Master необходимо выбрать поле для установления связи. После этого в списке полей подчиненной таблицы выбирается соответствующее поле для связывания таблиц.

7. На седьмом шаге мастера (рис. 2.23) устанавливаются возможности по управлению данными в базе данных при помощи кнопок, размещенных в форме. Диалоговое окно содержит следующие флажки:

Флажок | Назначение
Add Button | Создает в форме кнопку Add, предназначенную для добавления записей в базу данных
Edit Button | Создает в форме кнопку Update, переводящую форму в режим редактирования данных
Delete Button | Размещает в форме кнопку Delete, предназначенную для удаления записей
Refresh Button | Размещает в форме кнопку Refresh, предназначенную для обновления в форме информации из базы данных
Close Button | Создает кнопку Close для выхода из формы (закрытия формы)

Рис. 2.23. Диалоговое окно Control Selection мастера форм

8. На последнем шаге (рис. 2.24) задается имя и расположение файла для сохранения параметров настройки мастера. Этот файл можно будет использовать в первом диалоговом окне мастера для загрузки параметров при следующем создании формы с помощью мастера Data Form Wizard.

Установив все необходимые параметры, нажмите кнопку Finish (Готово). Будет завершена работа мастера и создан макет формы для работы с базой данных.

Итак, все шаги мастера Data Form Wizard пройдены и получена форма приложения для работы с базой данных. Мы уже говорили, что с помощью данного мастера можно создавать формы, позволяющие работать с одной таблицей или со связанными таблицами, имеющими отношение один-ко-многим. Рассмотрим формы, получаемые при помощи мастера в том и другом случае.

Рис. 2.24. Окно Finished! мастера форм баз данных

Рис. 2.25. Окно формы для одной записи

На рис. 2.25 представлена форма типа Single Record (Одна запись), содержащая поля, отображающие одну запись таблицы. В состав формы входят следующие объекты:

  • набор выбранных в окне мастера Record Source (Источник записей) полей базы данных;
  • кнопки управления:
    • Update (Изменить) для изменения данных в текущей записи;
    • Delete (Удалить) для удаления записей;
    • Cancel (Отмена) для отказа от изменений, внесенных в форму;
    • Refresh (Обновить) для обновления в форме данных из базы данных;
    • Close (Закрыть) для выхода из формы;
    • кнопка перемещения в начало таблицы (то есть на первую запись в соответствии с выбранной сортировкой);
    • кнопка перемещения в конец таблицы;
    • кнопка перемещения в таблице на одну запись вперед, то есть на следующую запись;
    • кнопка перемещения на одну запись назад в таблице, то есть на предыдущую запись.

Для формы типа Master/Detail (Главная/Подчиненная) получаем форму, показанную на рис. 2.26. Форма состоит из полей главной таблицы базы данных и в табличном виде представлены поля подчиненной таблицы базы данных. При перемещении по записям главной таблицы будет соответственно изменяться содержимое размещенной в форме таблицы.

Рис. 2.26. Окно формы для таблиц, имеющих отношение один-ко-многим

В состав формы входят следующие объекты:

  • набор выбранных в окне мастера Master Record Source (Источник записей главной таблицы) полей главной таблицы;
  • таблица, содержащая поля подчиненной таблицы базы данных, выбранные в окне Detail Record Source (Источник записей подчиненной таблицы) мастера;
  • кнопки управления:
    • Update (Изменить) для изменения данных в текущей записи;
    • Delete (Удалить) для удаления записей;
    • Cancel (Отмена) для отказа от изменений, внесенных в форму;
    • Refresh (Обновить) для обновления в форме данных из базы данных;
    • Close (Закрыть) для выхода из формы;
    • кнопка перемещения в начало таблицы (то есть на первую запись в соответствии с выбранной сортировкой);
    • кнопка перемещения в конец таблицы;
    • кнопка перемещения в таблице на одну запись вперед, то есть на следующую запись;
    • кнопка перемещения в таблице на одну запись назад , то есть на предыдущую запись.

    Замечание

    Кнопки управления, размещенные в форме с помощью мастера, позволяют просматривать и редактировать записи главной таблицы. По умолчанию мастер не разрешает редактирование данных в подчиненной таблице. Но с помощью СВОЙСТВ таблицы AllowAddNew, AllowDelete иAllowUpdate ВЫ можете установить режимы добавления, удаления и редактирования записей подчиненной таблицы.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблоны

В Visual Basic 6 для создания приложений широко используются шаблоны, как самих приложений, так и входящих в него форм. Шаблоны приложений расположены в виде значков в диалоговом окне New Project, открываемом при запуске Visual Basic и при выполнении команды New Project (Новый проект) из меню File. Шаблоны форм размещены в диалоговом окне Add Form, открывающемся при выборе команды Add Form (Добавить форму) из меню Project (Проект) или при нажатии кнопки Add Form на стандартной панели инструментов.

Для открытия шаблона необходимо дважды щелкнуть на его значке, после чего шаблон открывается, позволяя начать проектирование.

Для многократного использования удачных и зарекомендовавших себя интерфейсных решений можно создать собственные шаблоны и использовать их при проектировании новых приложений.

Для того чтобы разработать свой шаблон, например шаблон формы, необходимо создать требуемую форму при помощи конструктора и сохранить ее. Затем скопировать эту форму в папку шаблонов соответствующих элементов. Для форм, например, шаблоны могут храниться в папке \VB\Template\Forms. После этого данный шаблон будет появляться в диалоговом окне выбора шаблонов под присвоенным ему именем. Аналогичным образом можно создать шаблоны для форм MDI-окна, модулей, модулей классов, элементов управления, страниц свойств.

Замечание

Заблокировать вывод шаблонов выбранного типа можно на вкладке Environment (Среда) в группе Show Template For (Показывать шаблоны) окна настройки среды разработки, вызвав его командой Options (Параметры) меню Tools (Сервис).


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стандартные шаблоны форм

Visual Basic б предлагает разработчику набор готовых стандартных шаблонов форм, широко используемых практически во всех его приложениях.

Рис. 2.27. Окно выбора шаблонов форм

При добавлении новой формы в проект вызывается диалоговое окно Add Form (рис. 2.27), содержащее следующие шаблоны:

  • Form — шаблон формы;
  • About Dialog — шаблон диалогового окна для описания приложения;
  • Web Browser — шаблон браузера;
  • Dialog — шаблон диалогового окна;
  • Log in Dialog — шаблон диалогового окна, предназначенного для ввода имени и пароля пользователя;
  • Splash Screen — шаблон атрибутов приложения;
  • Tip of the Day — шаблон ежедневных полезных советов;
  • ODBC Log In — шаблон соединения с базой данных;
  • Options Dialog — шаблон диалогового окна с параметрами работы приложения.

Все эти шаблоны часто применяются в разрабатываемых пользовательских приложениях. На их основе можно создать собственные шаблоны, добавив элементы управления и программный код.

Стандартные шаблоны помогают выдержать общий стиль приложения, совместимый со стилем системы Windows, что немаловажно для коммерческих приложений.

Рассмотрим более подробно перечисленные шаблоны.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон About Dialog

Обычно в приложение добавляют диалоговое окно с краткой информацией о назначении приложения и его функциях. Для создания этого диалогового окна в Visual Basic можно использовать шаблон формы About Dialog (рис. 2.28).

Рис. 2.28. Шаблон диалогового окна для описания приложения

Совет

Для вызова формы с краткой информацией о назначении приложения и его функциях удобно использовать команду меню приложения About (О приложении).

Шаблон About Dialog содержит следующие объекты:

  • поле для отображения значка приложения. Для значка можно использовать графическое изображение эмблемы фирмы;
  • текстовое поле Application Title (Заголовок приложения) для ввода заголовка приложения;
  • текстовое поле Version (Версия) для вывода номера версии приложения;
  • текстовое поле Арр Description (Описание приложения) для вывода описания приложения;
  • текстовое поле Warning (Внимание) для вывода информации об авторских правах, работе с приложением и т. д.;
  • кнопка ОК для выхода из этого окна;
  • кнопка System Info (Системная информация) для вывода системной информации о параметрах компьютера.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Web Browser

Для быстрого создания диалоговых окон Web-браузеров можно использовать шаблон формы, показанный на рис. 2.29. В шаблоне заданы типовые кнопки для перемещения по страницам и раскрывающийся список для ввода или выбора адресов в сети Internet.

Рис. 2.29. Шаблон формы браузера

В состав этого шаблона формы входят следующие элементы управления:

  • кнопки, предназначенные для перемещения по Web-страницам сети Internet:
    • Назад — для возврата на предыдущую страницу;
    • Вперед — для перехода на следующую страницу;
    • Остановить — для останова загрузки Web-страницы;
    • Обновить — для обновления информации;
    • Домой — для возврата на домашнюю страницу.
  • поле с раскрывающимся списком Address (Адрес) для ввода или выбора адреса из списка предыдущих обращений в сети;
  • объект Timer (Таймер) для программирования временных событий.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Dialog

Для выбора какого-либо действия, для подтверждения действия, для вывода какого-либо сообщения безо всяких действий можно использовать шаблон стандартного диалогового окна (рис. 2.30).

Рис. 2.30. Шаблон стандартного диалогового окна

В этом шаблоне можно разместить предупреждающий текст, ввести элементы выбора (например, переключатели или раскрывающийся список) и в зависимости от ситуации, использовать готовые кнопки подтверждения выбора — ОК (Да) или Cancel (Отмена). Этим кнопкам можно оставить предложенные по умолчанию названия или переименовать.


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Log in Dialog

Для организации входа в приложение с использованием имени пользователя и пароля, как это часто делается в современных приложениях, можно воспользоваться шаблоном окна запроса имени и пароля пользователя — Log in Dialog (рис. 2.31). При входе в приложение необходимо будет ввести имя пользователя для регистрации и пароль для входа. При несовпадении имени или пароля будет выдаваться соответствующее сообщение. Кнопки ОК и Cancel, расположенные в форме, предназначены для подтверждения входа в приложение или отказа, соответственно.

Рис. 2.31. Шаблон диалогового окна для ввода имени и пароля пользователя


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Splash Screen

В приложение можно добавить диалоговое окно описания коммерческих атрибутов приложения, таких как:

  • наименование приложения с эмблемой фирмы;
  • наименование разработчика приложения и авторов;
  • номер лицензии и кому принадлежит лицензия на данный экземпляр приложения;
  • версию приложения и рабочую платформу приложения;
  • атрибуты авторского права;
  • краткие примечания к приложению.

Для создания такого диалогового окна вывода сведений о приложении, которые обычно выводятся при запуске приложения, используется шаблон Splash Screen, показанный на рис. 2.32.

Рис. 2.32. Шаблон формы атрибутов приложения Splash Screen


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Tip of the Day

Visual Basic 6 при помощи стандартных шаблонов может помочь вам организовать службу ежедневных кратких полезных советов о работе приложения. Для этого можно использовать шаблон окна Tip of the Day (Ежедневный совет), показанный на рис. 2.33.

Рис. 2.33. Шаблон формы Tip of the Day


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон ODBC Log In

Для приложений, работающих с базами данных, всегда требуется установить соединение с базой данных. Для этого можно использовать стандартный шаблон диалогового окна соединения с базой данных ODBC Logon (рис. 2.34). В этом шаблоне присутствуют следующие поля для ввода данных, требующихся для присоединения к базе данных:

  • DSN — имя источника данных;
  • UID — идентификатор пользователя базы данных;
  • Password (Пароль) — пароль входа в базу данных;
  • Database (База данных) — имя базы данных;
  • Driver (Драйвер) — драйвер, обеспечивающий связь с базой данных;
  • Server (Сервер) — имя сервера базы данных.

Рис. 2.34. Шаблон формы для соединения с базой данных


гл 2.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Шаблон Options Dialog

В приложениях часто требуется организовать настройку режимов работы приложения или среды, в которой работает приложение, при помощи набора параметров, задающих эти режимы работы или описывающих среду приложения. Для создания такой формы можно использовать специальный шаблон для настроек параметров приложения — Options Dialog (рис. 2.35).

В форме, создаваемой с помощью шаблона Options Dialog, все параметры режимов работы можно собрать в группы и каждую группу параметров разместить на отдельной вкладке. Работа этого диалогового окна организована так же, как форма настройки режимов работы среды проектирования Visual Basic 6, которая описана в главе 1.

Совет

Для вызова формы настройки режимов работы приложения или среды удобно использовать команду меню приложения Options (Параметры).

Рис. 2.35. Шаблон диалогового окна с параметрами работы приложения

В состав шаблона Options Dialog входит форма с четырьмя вкладками для различных по смыслу групп параметров настроек. На первой вкладке дополнительно добавлен объект для группировки настроек на вкладке. В шаблон включены три кнопки управления:

  • OK — подтверждение и сохранение настроек и выход из формы;
  • Cancel — отказ от введенных в настройки изменений и выход без сохранения новых значений параметров настройки;
  • Apply (Применить) — подтверждение и сохранение настроек без выхода из формы.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 20. Групповая разработка проекта.

Чтобы создать любой большой проект, a Visual Basic 6 имеет для этого все средства, необходимо привлечь нескольких программистов. При этом сразу же встает проблема бесконфликтной работы такой группы программистов (имеются в виду конфликты, вызванные одновременным изменением одних и тех же кодов). Даже у программиста, работающего в одиночку, могут возникнуть конфликты версий, необходимость отката (возврата) к предыдущим версиям, что же говорить о группе программистов, работающих над одним проектом. Основные проблемы при групповой разработке — конфликты версий одного кода и последующее их слияние в одно приложение.

Visual Basic 6 предоставляет возможность эффективно работать группе программистов. Уже в первых проектах при сохранении Visual Basic 6 задает вопрос Add this project to SourceSafe? Задавая такой вопрос, система выясняет, будет ли проект сохранен в репозитарии — специализированной базе данных (хранилище проектов) для хранения разработок Visual Basic 6 и других систем разработки из семейства Microsoft Visual Studio. Однако, кроме хранения проектов, SourceSafe организует совместную работу программистов, снимая все противоречия групповой разработки.

Групповая разработка проекта предполагает наличие управляющего проектом, который имеет полный доступ ко всем проектам, и исполнителей отдельных проектов (или пользователей, согласно терминологии базы данных), имеющих доступ только к той части проектов, над которой они работают. При работе с файлами проекта должно обеспечиваться хранение предыдущих версий проекта. При одновременной работе нескольких программистов с одним файлом проекта система должна предоставлять возможность редактирования этого файла в текущий момент только одному исполнителю, блокировать внесение изменений в файл до завершения работы над ним и возврата свежей версии в хранилище.

Все указанные требования групповой работы обеспечивает репозитарии Visual SourseSafe (далее просто SourceSafe).

В репозитарии хранятся все файлы проекта, включая и конструкторскую документацию: технические задания, постановки задач. Рекомендуется также хранить выполняемые файлы, файлы справок, модели баз данных проекта, в общем все, что связано с проектом и может потребоваться при проектировании. Кстати говоря, с помощью репозитария удобно работать над текстовыми проектами: технической документацией проекта или. книгой.

При работе с SourceSafe выделяются два принципиально разных режима работы (они даже разделены на два приложения) — это режим администрирования базы данных SourceSafe и режим пользователя.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Администрирование SourceSafe

Администрирование базы данных SourceSafe состоит из двух групп задач:

  • Работа с пользователями базы данных (участниками проектов)
  • Работа с данными


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Запуск SourceSafe

Для администрирования SourceSafe необходимо запустить программу администратора базы данных. Нажмите кнопку Пуск системы Windows, в появившемся главном меню выберите команду Программы, затем в открывшемся меню найдите папку Microsoft Visual Studio, а в ней Microsoft Visual SourceSafe, в котором и находится искомая программа администратора базы данных.

Первое соединение с базой данных отличается от последующих, так как еще нет ни одного пользователя, кроме Admin, которому к тому же еще не назначен пароль. Диалоговое окно первого соединения показано на рис. 20.1. В данном случае поле Old password (Старый пароль) необходимо оставить пустым, затем ввести в поле New password новый пароль и продублировать его в поле Verify (Проверка). В дальнейшем будет появляться стандартное окно входа с указанием имени пользователя и пароля.

Рис. 20.1. Назначение/изменение пароля пользователя Admin при первом присоединении к базе данных SourceSafe


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка

Настройка режимы работы программы SourceSafe выполняется в диалоговом окне SourceSafe Options (Режимы работы SourceSafe). Это окно состоит из шести вкладок (рис. 20.2), элементы управления которых определяют режимы работы базы.

Рис. 20.2. Вкладка General диалогового окна SourceSafe Options

На вкладке General (Общие) (рис. 20.2) можно установить общие параметры работы.

  • Флажок Allow multiple checkouts (Допускать множественный доступ) — разрешает редактирование одного файла несколькими пользователями. В этом случае объединением изменений занимается администратор или отдельно выделенный пользователь.

Замечание

Режим множественного доступа на практике применяется достаточно редко.

  • Флажок Use network name for automatic user log in (Использовать сетевое имя при входе в программу) — позволяет автоматически подставлять сетевое имя пользователя при регистрации в программе SourceSafe.
  • Поле Default Database name (Имя базы данных по умолчанию) — это поле позволяет задать имя базы данных по умолчанию, если при работе над проектами используется несколько баз данных.
  • Поле Expand keywords in Hies of type (Использовать расширения ключевых слов для типов файлов) — позволяет задать, для каких типов файлов будет происходить замена ключевых слов более значимой информацией, помещенной в заголовки файлов.
  • Поле Log all actions in journal file (Регистрировать все действия в файле журнала) — задает файл журнала, в котором фиксируются все действия пользователей при работе с базой данных.

Вкладка Project Security (Защита проекта) (рис. 20.3) позволяет организовать разграничение прав доступа к данным на уровне проекта. Пользователь может иметь следующие права при работе над проектом;

  • Read (Чтение) — права только на чтение файлов проектов (сокращенно обозначается буквой R);
  • Check Out/Check In (Блокирование при редактировании/Освобождение блокирования) — права на редактирование файлов и возврат измененных файлов в базу данных (сокращенно обозначается буквой С);
  • Add/Rename/Delete (Добавление/Переименование/Удаление) — права на добавление, переименование, удаление проектов или файлов проектов (сокращенно обозначается буквой А);
  • Destroy (Уничтожение) — право на полное удаление файла и всех его версий или всего проекта (сокращенно обозначается буквой D).

Рис. 20.3. Вкладка Project Security диалогового окна SourceSafe Options

По умолчанию всем пользователям SourceSafe предоставляется полный доступ, то есть возможность выполнения всех четырех действий в базе данных. Для того чтобы можно было индивидуально назначать доступ пользователям, предназначен флажок Enable project security (Доступность защиты проекта). Если этот флажок установлен, то становятся доступны флажки назначения прав пользователей по умолчанию в области Default user rights (Права пользователей по умолчанию). В этой группе можно переназначить права доступа пользователей, предоставленные им по умолчанию при регистрации. Рекомендуется при этом устанавливать только права на чтение (R) и на блокировку/освобождение файлов при редактировании (С). При установленном флажке Enable project security становятся доступны команды меню Tools (Сервис) администратора, отвечающие за работу с правами пользователей:

  • Rights by Project (Права на проекты) — открывает диалоговое окно Project Rights (Права на проекты) для настройки прав на каждый из проектов;
  • Rights Assignments for User (Назначение прав пользователя) — открывает диалоговое окно Assignments for для индивидуальной настройки прав выбранного пользователя;
  • Copy User Rights (Копирование прав пользователя) — открывает диалоговое окно Copy Rights Assignments to (Копирование назначения прав для) для копирования прав выбранному пользователю от пользователя, указанного в диалоговом окне.

Вкладка Shadow Folders (Теневые папки) диалогового окна SourceSafe Options (рис. 20.4) задает папку "теневого" хранения файлов указанного проекта, при этом поддерживается автоматический контроль актуальности копий файлов в такой папке. При помощи "теневых" папок удобно выполнять окончательную сборку проекта.

Рис. 20.4. Вкладка Shadow Folders диалогового окна SourceSafe Options

Элементы управления этой вкладки служат для выполнения определенных действий.

  • Поле Set shadow folder for project (Установить папку для проекта) — назначает проект, для которого выполняется установка теневой папки. Расположенная справа от поля кнопка Browse (Просмотр) открывает диалоговое окно, позволяющее осуществить поиск и назначение проекта в дереве проектов SourceSafe.
  • Поле Set shadow folder to (Установить папку для) — назначает выбор теневой папки или ввод новой. Расположенная справа от поля кнопка Browse (Просмотр) открывает диалоговое окно для поиска нужной папки.

В области Files in Shadow Folder (Файлы в теневой папке) расположены следующие элементы управления.

  • Флажок Set read-only flag for all files (Установить флаг только для чтения для всех файлов) — устанавливает режим, при котором все файлы, записанные в папку, будут иметь признак только для чтения.
  • Поле с раскрывающимся списком End-of-line characters for files (Символ конца файла) — назначает символ конца файла.
  • Поле с раскрывающимся списком File date/time (Дата/время файла) — определяет, каким временем датировать файл.

Кнопка Set Another (Назначить другой) очищает все поля для установки параметров следующего проекта.

Следующие две вкладки Web Projects (Web-проекты) и Web диалогового окна SourceSafe Options позволяют настроить проекты, предназначенные для работы в Internet. На вкладке Web Projects настраиваются параметры отдельного проекта для работы в сети, а на вкладке Web — общие для всех проектов параметры.

Вкладка File Types (Типы файлов) диалогового окна SourceSafe Options определяет типы файлов проектов для сред разработки программных продуктов, входящих в пакет Visual Studio. Для настройки Visual Basic 6 необходимо использовать значение списка VB (рис. 20.5).

На этой вкладке размещены следующие элементы управления;

  • поле Binary files (Двоичные файлы) — задает типы файлов, которые считаются в SourceSafe двоичными, а не текстовыми;
  • список File groups (Группы файлов) — назначает выбранную среду разработки, которой соответствуют типы файлов;
  • поле File types included in file group (Типы файлов, включенные в группу) — определяет расширения файлов, которые включены в данную группу файлов.

На вкладке находятся также кнопки Add (Добавить) и Delete (Удалить), позволяющие при необходимости добавить новую группу файлов или удалить ненужную.

Замечание

Обычно параметры вкладки File Types установлены по умолчанию и редактировать их не требуется.

Рис. 20.5. Вкладка File Types диалогового окна SourceSafe Options


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с пользователями

Основная задача при работе с пользователями — это поддержка списка пользователей и назначение прав пользователей при операциях с проектами и файлами проектов. Работа с пользователями выполняется в окне администратора Visual SourceSafe Administrator (рис. 20.6), где по умолчанию представлен список пользователей базы данных.

Рис. 20.6. Окно администратора SourceSafe

В этом списке администратор может выполнить следующие действия с пользователями.

  • Добавить пользователя
  • Удалить пользователя
  • Изменить параметры пользователя
  • Изменить пароль пользователя

Добавление пользователей выполняется командой Add User (Добавить пользователя) меню Users (Пользователи). При этом вызывается одноименное окно Add User (рис. 20.7), в котором можно ввести имя пользователя и его пароль.

Рис. 20.7. Окно Add User для добавления пользователя

Удаление пользователя выполняется командой Delete User (Удалить пользователя) меню Users. При этом открывается диалоговое окно с запросом на подтверждение удаления. Пользователь при этом не должен быть соединен с базой данных.

Для изменения параметров пользователя необходимо выполнить команду Edit User (Изменить пользователя) меню Users (Пользователи). При этом вызывается одноименное окно, аналогичное окну для добавления пользователя (рис. 20.7), в котором отсутствует поле Password (Пароль). Для изменения имени пользователя следует ввести другое имя в поле User name (Имя пользователя).

Чтобы изменить пароль пользователя, необходимо воспользоваться диалоговым окном Change Password (рис. 20.8), открываемым при выборе команды Change Password (Изменить пароль) меню Users.

Рис. 20.8. Диалоговое окно Change Password для изменения пароля пользователя

В поле New password (Новый пароль) диалогового окна Change Password необходимо ввести новый пароль и продублировать его в поле Verify (Проверка). Для изменения пароля администратора требуется дополнительно ввести старый пароль.

После того как сформирован список пользователей, следует назначить всем пользователям индивидуальные права доступа к проектам базы данных.

Замечание

Необходимо напомнить, что доступ к работе с правами выполняется только с установленным флажком Enable Project Security (Доступность защиты проекта) на вкладке Project Security (Защита проекта) настройки режимов работы администратора SourceSafe.

Для настройки прав пользователей на проекты следует выполнить команду Rights by Project (Права на проекты) меню Tools (Сервис). При этом вызывается диалоговое окно Project Rights'(Права на проекты), в котором можно выполнить настройку прав пользователей отдельно на каждый из проектов (рис. 20.9).

Рис. 20.9. Диалоговое окно Project Rights для настройки прав пользователей на проекты в базе данных

Для настройки прав на проект следует в списке дерева проектов выбрать проект, для которого выполняется настройка прав, затем из правого списка выбрать пользователя и с помощью флажков, расположенных в области User rights (Права пользователя), установить набор необходимых прав. Права устанавливаются немедленно и отображаются в столбце Rights (Права) списка пользователей в виде буквенных сокращений. С помощью этой настройки каждому проекту можно назначить индивидуальные права доступа пользователей к файлам проекта.

В данном случае при настройке прав отправной точкой является проект. Это удобно, например, при создании нового проекта или проверке прав существующего проекта, поскольку виден весь список пользователей. Однако если требуется назначить индивидуальные права одному пользователю, то придется искать этого пользователя по всем проектам, что довольно неудобно. Для второго варианта назначения прав существует диалоговое окно Assignments for (Назначение для), которое вызывается командой Rights Assignments for User (Назначение прав пользователя) в меню Tools (Сервис). Это окно показано на рис. 20.10. Назначение прав выполняется для текущего по списку пользователя, имя которого отображается в наименовании окна.

В этом окне есть список прав на проекты и аналогичная предыдущей настройке группа флажков User rights (Права пользователя), в которой назначаются эти права. Права в этом списке отображаются те же, что были назначены в предыдущей настройке или установлены по умолчанию при регистрации пользователя. В этом окне можно изменить или добавить права на проекты. Для этого служат кнопки:

  • Add Assignment (Добавить назначение) — позволяет добавить или отредактировать права доступа пользователя;
  • Delete Assignment (Удалить назначение) — удаляет назначение прав доступа пользователя.

При добавлении прав вызывается диалоговое окно, аналогичное окну назначения прав для проекта (рис. 20.9), за исключением наличия списка прав пользователей. Действия здесь такие же, то есть для назначения прав доступа необходимо в области User rights установить соответствующие этим правам флажки. Для удаления достаточно подтвердить факт удаления прав пользователя на проект.

Рис. 20.10. Диалоговое окно Assignments for для индивидуальной настройки прав пользователей на проекты в базе данных

Если вводятся пользователи с равными правами, то можно воспользоваться диалоговым окном копирования прав пользователей друг другу Copy Rights Assignment to (Копирование назначения прав для), которое вызывается командой Copy User Rights (Копирование прав пользователя) меню Tools (Сервис). При этом для текущего пользователя вызывается диалоговое окно, показанное на рис. 20.11.

Рис. 20.11. Окно Copy Rights Assignment to для копирования прав пользователей

После выбора из списка в этом окне пользователя с. необходимы ми правами, при помощи кнопки Сору (Копировать) выполняется копирование прав доступа для выбранного пользователя, имя которого находится в заголовке окна.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с данными

Основная работа при администрировании базы данных SourceSafe связана с частичным или полным архивированием данных, а также их восстановлением при необходимости. Для этих целей в SourceSafe существуют два мастера:

  • Archive Wizard (Мастер архивирования)
  • Restore Wizard (Мастер восстановления данных)

Для запуска мастера Archive Wizard выполните команду Archive Projects (Архивирование проектов) меню Archive (Архив). Работа мастера проста, интуитивно понятна и не требует отдельного описания. Цель работы мастера Archive Wizard заключается в создании специального архивного файла с расширением ssa, в который записываются проекты из базы данных.

Замечание

Предварительно для хранения архивных файлов желательно создать отдельный каталог с ограниченным доступом для пользователей. Периодичность архивирования определяется надежностью работы системы и скоростью внесения изменений в проекты исполнителями. Процесс этот достаточно простой и не занимает много времени. При интенсивной работе над проектом можно выполнять архивирование ежедневно силами администратора системы.

Восстановление из архива выполняется с помощью мастера Restore Wizard, который запускается командой Restore Projects (Восстановление проектов) меню Archive (Архив). Этот мастер выполняет запись проектов из архивного файла в базу данных программы SourceSafe.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа пользователя в SourceSafe.

После того как пользователь введен администратором в список пользователей, определены его права доступа к проектам, он может приступать к работе над файлами проекта. Для работы пользователя с проектами и файлами, входящими в проект, служит окно проводника программы SourceSafe (рис. 20.12), состоящее из перечисленных ниже основных элементов.

  • Список проектов — отображает дерево проектов.
  • Список файлов проектов — отображает содержимое проектов, то есть файлы, входящие в состав проектов.
  • Поле для вывода итоговой информации по выполнению действий — отображает информацию о выполняемых действиях.
  • Меню — содержит команды на выполнение действий SourceSafe.
  • Панель инструментов проводника — содержит набор кнопок для выполнения команд по работе с проектами и файлами проектов.
  • Верхняя строка состояния — отображает текущий проект и рабочую библиотеку проекта.
  • Нижняя строка состояния — содержит имя текущего пользователя, режимы работы, количество файлов в списке.

Рис. 20.12. Окно проводника SourceSafe для работы пользователей

На панели инструментов окна Проводника представлены кнопки, назначение которых описано в табл. 20.1.

Таблица 20.1. Кнопки панели инструментов окна Проводника
Кнопка | Название | Назначение
 | Create Project (Создать проект) | Создает новый проект
 | Add Files (Добавить файлы) | Добавляет файлы в проект
 | Label Version (Метка версии) | Устанавливает метку версии проекта
 | Delete Files/Project (Удалить файл/проект) | Удаляет файл или проект
 | Get Latest Version (Получить последнюю версию) | Показывает последнюю версию файлов проекта
 | Check Out Files/Project (Заблокировать файлы/проект) | Блокирует файлы проекта и копирует их в указанное место для редактирования
 | Check In Files/Project (Освободить файлы/проект) | Освобождает блокированные файлы и снимает блокировку в базе данных
 | Undo Check Out (Снять блокировку) | Снимает блокировку файлов
 | Share Files (Доступность файлов) | Устанавливает совместный доступ к файлам проекта
 | View File (Просмотр файла) | Запускает среду проектирования и загружает в нее файл для просмотра
 | Edit File (Правка файла) | Запускает среду проектирования и загружает в нее файл для работы с ним. При этом выполняется Check Out (Блокировка) этого файла
 | File/Project Difference (Различия файла/проекта) | Выполняет сравнение файлов и выдает отчет о найденных различиях
 | Show Properties (Просмотр свойств) | Показывает свойства выбранного файла или проекта
 | Show History (Просмотр истории) | Показывает историю создания и работы над выбранным файлом или проектом
 | Find in Files (Поиск в файлах) | Поиск заданного текста в файлах
 | Set Working Folders (Установка рабочей папки) | Устанавливает рабочий каталог. При этом вызывается диалоговое окно установки рабочего каталога
 | Refresh File List (Обновление списка файлов) | Обновляет список файлов
 | Help (Справка) | Вызывает справочную систему SourceSafe

Набор кнопок, расположенных на панели инструментов по умолчанию, можно изменить, добавить требуемые кнопки, скрыть ненужные. Для этого используется диалоговое окно настройки панели инструментов (рис. 20.13), открываемое при выборе команды Customize Toolbar меню Tools. В диалоговом окне Настройка панели инструментов расположены два списка. Набор кнопок на панели инструментов задается списком Панель инструментов. В него можно добавить кнопки из списка доступных кнопок Имеющиеся кнопки. Для изменения порядка следования кнопок на панели инструментов предназначены кнопки Вверх и Вниз окна настройки.

Рис. 20.13. Диалоговое окно настройки панели инструментов окна Проводника SourceSafe


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Иерархия в SourceSafe

В SourceSafe поддерживается строгая иерархия проектов и файлов проекта, образующая дерево проектов. Корнем всегда является папка с обозначением $/. Далее в иерархии следуют проекты и файлы проектов.

В иерархическом дереве поддерживается наследование прав доступа, то есть права доступа от вышестоящих уровней передаются нижестоящим. При этом права нижестоящих уровней можно изменить.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с проектами

Как было сказано выше, все проекты отображаются в левом списке Про-водника SourceSafe. При работе с проектами можно выполнить все доступные для пользователя действия. Например, если пользователь имеет все права, то можно добавлять, удалять, редактировать проект.

Для создания нового проекта следует определить его место в дереве, для этого необходимо выбрать в дереве тот проект, внутри которого будет находиться новый проект. Если это проект первого уровня иерархии, выбирается корень дерева, то есть папка со значком $/ — самый верхний уровень иерархии. После этого следует выполнить команду Create Project (Создать проект) меню File (Файл). При этом вызывается окно Create Project in (Создать проект в) (рис. 20.14), в поля которого вводят наименование и примечания с кратким описанием проекта, используя поля Project (Проект) и Comment (Комментарий).

Рис. 20.14. Окно создания нового проекта в SourceSafe

После того как проект внесен в базу данных SourceSafe, можно работать с его файлами. Для начала необходимо добавить в проект все входящие в него файлы.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с файлами проекта

Запись (добавление) файлов проекта в базу данных SourceSafe выполняется командой Add Files (Добавить файлы) меню File (Файл) или одноименной кнопкой на панели инструментов. При этом вызывается диалоговое окно Add File to (Добавить файл в) (рис. 20.15) с указанием проекта, в который добавляются файлы.

Замечание

Типы файлов в раскрывающемся списке List files of type (Список типов файлов) диалогового окна Add File to соответствуют настройке типов файлов по группам в режимах настройки SourceSafe на вкладке File Types (Типы файлов) диалогового окна SourceSafe Options.

Итак, все проекты внесены в базу данных программы SourceSafe, а все файлы проектов записаны в соответствующие им проекты базы. Что происходит потом?

Далее SourceSafe становится организатором работы над проектами. Пользователи копируют файлы из базы SourceSafe в свои рабочие папки. При этом такие файлы блокируются в базе данных, т. е. на файлы ставится метка, как показано на рис. 20.16. При этом другой пользователь не может скопировать блокированный файл для редактирования до тех пор, пока файл (его новая версия) не возвращен в базу SourceSafe и с него не снята блокировка.

Рис. 20.15. Окно для добавления файлов проекта в базу данных SourceSafe

Рис. 20.16. Блокировка файлов, скопированных для редактирования

Копирование файлов и их блокировка выполняются автоматически с помощью команды Check Out (Блокировка) меню SourceSafe или соответствующей кнопкой панели инструментов. Блокировку можно выполнить как для всех файлов проекта (при этом необходимо выбрать проект в дереве), так и для отдельных файлов проекта (для этого необходимо выбрать интересующий файл или группу файлов). Как видно из рисунка, система обеспечивает контроль даты и имени пользователя, выполнившего блокировку.

При выполнении блокировки вызывается диалоговое окно Check Out (Блокировка) (рис. 20.17) для выбора папки, в которую будет записана копия файла для редактирования. В этом же окне можно ввести небольшой комментарий о выполненных изменениях, о цели блокировки файла.

Рис. 20.17. Диалоговое окно Check Out блокировки файла

Необходимо отметить, что при отсоединении от базы данных SourceSafe все метки блокировки остаются и снять их может только тот пользователь, который взял файлы проектов на редактирование.

Если случайно блокирован не тот файл, который требуется, то исправить такую ошибку можно с помощью команды Undo Check Out (Отменить блокировку) меню SourceSafe.

После завершения работы с файлами проекта они возвращаются в базу данных SourceSafe командой Check In (Освобождение) из меню SourceSafe или с помощью одноименной кнопки на панели инструментов, и значок блокировки с них снимается.

Замечание

Аналогично блокировке, освобождение можно выполнить как сразу для всех файлов проекта, так и для одного или группы файлов.

При выполнении освобождения вызывается диалоговое окно Check In (Освобождение), в котором можно дополнительно пояснить внесенные изменения в файл (рис. 20.18). Если установить флажок Remove local copy (Удалить локальную копию) этого диалогового окна, то копия файла в рабочей папке проекта будет удалена. Флажок Keep checked out (Сохранить блокирование) выполняет возврат копии файла в базу с сохранением метки блокировки на нем.

Очень важно сохранить хронологию работы над проектом. Для просмотра этих сведений необходимо вызвать для выбранного проекта диалоговое окно History of Project (Хронология проекта) командой Show History (Показать хронологию) меню Tools (Сервис) или нажать одноименную кнопку на панели инструментов (рис. 20.20). При этом предварительно будет вызвано диалоговое окно Project History Options (Режимы хронологии проекта) настройки режима просмотра хронологии (рис. 20.19), в котором указываются режимы просмотра и, в частности, интервал дат для выборки хронологии.

Кроме того, что в окне History of Project отображается вся хронология работы над проектом, отсюда с помощью кнопки Check Out можно выбрать любую предыдущую версию файла.

Рис. 20.18. Диалоговое окно Check In освобождения файла

Рис. 20.19. Режимы просмотра хронологии проекта

Рис. 20.20. Хронология проекта в диалоговом окне History of Project


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание

SourceSafe в среде Visual Basic 6

В среде проектирования Visual Basic 6 возможности для работы с SourceSafe представлены в меню Tools (Сервис) раскрывающимся меню SourceSafe. Это меню является контекстным, то есть его содержание зависит от состояния проекта в среде разработки. Первоначально, когда нет ни одного проекта, здесь можно выполнить следующие действия:

  • Создать проект из SourceSafe
  • Запустить SourceSafe для работы в базе данных
  • Выполнить настройку работы SourceSafe в среде Visual Basic 6

Для создания проекта необходимо в меню Tools выбрать команду SourceSafe, а затем значение Create Project from SourceSafe (Создать проект из SourceSafe). При этом вызывается окно Create local project from SourceSafe (Создать локальный проект из SourceSafe), в котором представлено дерево проектов (рис. 20.21). Предварительно откроется диалоговое окно для присоединения к базе данных SourceSafe. После выбора проекта в дереве будет создана копия этого проекта в рабочей папке проекта и затем эта копия будет загружена в среду проектирования.

Рис. 20.21. Диалоговое окно Create local project from SourceSafe для создания проекта

После зафузки проекта меню SourceSafe пополняется следующими командами:

  • Get Latest Version — получить последнюю версию
  • Check Out — выполнить блокировку файлов
  • Check In — выполнить освобождение файлов
  • Undo Check Out — снять блокировку
  • Show History — показать историю проекта
  • Show Differences — показать разницу версии
  • SourceSafe Property — свойства программы SourceSafe
  • Add Files to SourceSafe — добавить файлы в базу данных SourceSafe
  • Share Files — назначить совместное использование файлов
  • Refresh File Status — обновить состояние файлов

База данных SourceSafe запускается при помощи команды Run SourceSafe меню SourceSafe. После присоединения к базе можно работать как при обычном запуске базы данных.

Настройка совместной работы со средой проектирования выполняется в диалоговом окне Source Code Control Options (Параметры управления исходными кодами), показанном на рис. 20.22. Это окно открывается командой Options (Параметры) меню SourceSafe.

Рис. 20.22. Диалоговое окно Source Code Control Options управления режимами работы с исходными текстами

В этом окне расположено четыре раскрывающихся списка, имеющих следующее назначение:

  • Get latest checked-in versions of files when opening a VB project (Получать последнюю версию файлов при открытии проекта) — устанавливать возможность получения последней версии файлов проекта для открытия его в среде проектирования;
  • Check in files when closing VB project (Выполнять освобождение файлов при закрытии проекта) — освобождает файлы в базе данных при закрытии проекта в среде проектирования;
  • Add files to source control when adding them to a VB project (Добавлять файлы в базу SourceSafe при их добавлении в проект) — автоматически добавляет новые файлы проекта в базу SourceSafe;
  • Remove files from source control when deleting them from the VB project (Удалять файлы из базы SourceSafe при их удалении из проекта) — удаляет файлы из базы SourceSafe при удалении их из проекта.

В этих списках можно выбрать три значения:

  • Yes — подтверждение выполнения соответствующего действия всегда и без запроса;
  • Ask — предварительный запрос на выполнение действия;
  • No — отказ от соответствующего действия.

Таким образом, Visual Basic 6 совместно с SourceSafe позволяет организовать групповую работу и избежать практически всех конфликтных ситуации, возникающих при разработке больших проектов силами группы программистов, постановщиков и людей, тестирующих приложение.


Ch 20.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание

Глава 20. Групповая разработка проекта.

Чтобы создать любой большой проект, a Visual Basic 6 имеет для этого все средства, необходимо привлечь нескольких программистов. При этом сразу же встает проблема бесконфликтной работы такой группы программистов (имеются в виду конфликты, вызванные одновременным изменением одних и тех же кодов). Даже у программиста, работающего в одиночку, могут возникнуть конфликты версий, необходимость отката (возврата) к предыдущим версиям, что же говорить о группе программистов, работающих над одним проектом. Основные проблемы при групповой разработке — конфликты версий одного кода и последующее их слияние в одно приложение.

Visual Basic 6 предоставляет возможность эффективно работать группе программистов. Уже в первых проектах при сохранении Visual Basic 6 задает вопрос Add this project to SourceSafe? Задавая такой вопрос, система выясняет, будет ли проект сохранен в репозитарии — специализированной базе данных (хранилище проектов) для хранения разработок Visual Basic 6 и других систем разработки из семейства Microsoft Visual Studio. Однако, кроме хранения проектов, SourceSafe организует совместную работу программистов, снимая все противоречия групповой разработки.

Групповая разработка проекта предполагает наличие управляющего проектом, который имеет полный доступ ко всем проектам, и исполнителей отдельных проектов (или пользователей, согласно терминологии базы данных), имеющих доступ только к той части проектов, над которой они работают. При работе с файлами проекта должно обеспечиваться хранение предыдущих версий проекта. При одновременной работе нескольких программистов с одним файлом проекта система должна предоставлять возможность редактирования этого файла в текущий момент только одному исполнителю, блокировать внесение изменений в файл до завершения работы над ним и возврата свежей версии в хранилище.

Все указанные требования групповой работы обеспечивает репозитарии Visual SourseSafe (далее просто SourceSafe).

В репозитарии хранятся все файлы проекта, включая и конструкторскую документацию: технические задания, постановки задач. Рекомендуется также хранить выполняемые файлы, файлы справок, модели баз данных проекта, в общем все, что связано с проектом и может потребоваться при проектировании. Кстати говоря, с помощью репозитария удобно работать над текстовыми проектами: технической документацией проекта или. книгой.

При работе с SourceSafe выделяются два принципиально разных режима работы (они даже разделены на два приложения) — это режим администрирования базы данных SourceSafe и режим пользователя.

Администрирование SourceSafe

Администрирование базы данных SourceSafe состоит из двух групп задач:

  • Работа с пользователями базы данных (участниками проектов)
  • Работа с данными

Запуск SourceSafe

Для администрирования SourceSafe необходимо запустить программу администратора базы данных. Нажмите кнопку Пуск системы Windows, в появившемся главном меню выберите команду Программы, затем в открывшемся меню найдите папку Microsoft Visual Studio, а в ней Microsoft Visual SourceSafe, в котором и находится искомая программа администратора базы данных.

Первое соединение с базой данных отличается от последующих, так как еще нет ни одного пользователя, кроме Admin, которому к тому же еще не назначен пароль. Диалоговое окно первого соединения показано на рис. 20.1. В данном случае поле Old password (Старый пароль) необходимо оставить пустым, затем ввести в поле New password новый пароль и продублировать его в поле Verify (Проверка). В дальнейшем будет появляться стандартное окно входа с указанием имени пользователя и пароля.

Рис. 20.1. Назначение/изменение пароля пользователя Admin при первом присоединении к базе данных SourceSafe

Настройка

Настройка режимы работы программы SourceSafe выполняется в диалоговом окне SourceSafe Options (Режимы работы SourceSafe). Это окно состоит из шести вкладок (рис. 20.2), элементы управления которых определяют режимы работы базы.

Рис. 20.2. Вкладка General диалогового окна SourceSafe Options

На вкладке General (Общие) (рис. 20.2) можно установить общие параметры работы.

  • Флажок Allow multiple checkouts (Допускать множественный доступ) — разрешает редактирование одного файла несколькими пользователями. В этом случае объединением изменений занимается администратор или отдельно выделенный пользователь.

Замечание

Режим множественного доступа на практике применяется достаточно редко.

  • Флажок Use network name for automatic user log in (Использовать сетевое имя при входе в программу) — позволяет автоматически подставлять сетевое имя пользователя при регистрации в программе SourceSafe.
  • Поле Default Database name (Имя базы данных по умолчанию) — это поле позволяет задать имя базы данных по умолчанию, если при работе над проектами используется несколько баз данных.
  • Поле Expand keywords in Hies of type (Использовать расширения ключевых слов для типов файлов) — позволяет задать, для каких типов файлов будет происходить замена ключевых слов более значимой информацией, помещенной в заголовки файлов.
  • Поле Log all actions in journal file (Регистрировать все действия в файле журнала) — задает файл журнала, в котором фиксируются все действия пользователей при работе с базой данных.

Вкладка Project Security (Защита проекта) (рис. 20.3) позволяет организовать разграничение прав доступа к данным на уровне проекта. Пользователь может иметь следующие права при работе над проектом;

  • Read (Чтение) — права только на чтение файлов проектов (сокращенно обозначается буквой R);
  • Check Out/Check In (Блокирование при редактировании/Освобождение блокирования) — права на редактирование файлов и возврат измененных файлов в базу данных (сокращенно обозначается буквой С);
  • Add/Rename/Delete (Добавление/Переименование/Удаление) — права на добавление, переименование, удаление проектов или файлов проектов (сокращенно обозначается буквой А);
  • Destroy (Уничтожение) — право на полное удаление файла и всех его версий или всего проекта (сокращенно обозначается буквой D).

Рис. 20.3. Вкладка Project Security диалогового окна SourceSafe Options

По умолчанию всем пользователям SourceSafe предоставляется полный доступ, то есть возможность выполнения всех четырех действий в базе данных. Для того чтобы можно было индивидуально назначать доступ пользователям, предназначен флажок Enable project security (Доступность защиты проекта). Если этот флажок установлен, то становятся доступны флажки назначения прав пользователей по умолчанию в области Default user rights (Права пользователей по умолчанию). В этой группе можно переназначить права доступа пользователей, предоставленные им по умолчанию при регистрации. Рекомендуется при этом устанавливать только права на чтение (R) и на блокировку/освобождение файлов при редактировании (С). При установленном флажке Enable project security становятся доступны команды меню Tools (Сервис) администратора, отвечающие за работу с правами пользователей:

  • Rights by Project (Права на проекты) — открывает диалоговое окно Project Rights (Права на проекты) для настройки прав на каждый из проектов;
  • Rights Assignments for User (Назначение прав пользователя) — открывает диалоговое окно Assignments for для индивидуальной настройки прав выбранного пользователя;
  • Copy User Rights (Копирование прав пользователя) — открывает диалоговое окно Copy Rights Assignments to (Копирование назначения прав для) для копирования прав выбранному пользователю от пользователя, указанного в диалоговом окне.

Вкладка Shadow Folders (Теневые папки) диалогового окна SourceSafe Options (рис. 20.4) задает папку "теневого" хранения файлов указанного проекта, при этом поддерживается автоматический контроль актуальности копий файлов в такой папке. При помощи "теневых" папок удобно выполнять окончательную сборку проекта.

Рис. 20.4. Вкладка Shadow Folders диалогового окна SourceSafe Options

Элементы управления этой вкладки служат для выполнения определенных действий.

  • Поле Set shadow folder for project (Установить папку для проекта) — назначает проект, для которого выполняется установка теневой папки. Расположенная справа от поля кнопка Browse (Просмотр) открывает диалоговое окно, позволяющее осуществить поиск и назначение проекта в дереве проектов SourceSafe.
  • Поле Set shadow folder to (Установить папку для) — назначает выбор теневой папки или ввод новой. Расположенная справа от поля кнопка Browse (Просмотр) открывает диалоговое окно для поиска нужной папки.

В области Files in Shadow Folder (Файлы в теневой папке) расположены следующие элементы управления.

  • Флажок Set read-only flag for all files (Установить флаг только для чтения для всех файлов) — устанавливает режим, при котором все файлы, записанные в папку, будут иметь признак только для чтения.
  • Поле с раскрывающимся списком End-of-line characters for files (Символ конца файла) — назначает символ конца файла.
  • Поле с раскрывающимся списком File date/time (Дата/время файла) — определяет, каким временем датировать файл.

Кнопка Set Another (Назначить другой) очищает все поля для установки параметров следующего проекта.

Следующие две вкладки Web Projects (Web-проекты) и Web диалогового окна SourceSafe Options позволяют настроить проекты, предназначенные для работы в Internet. На вкладке Web Projects настраиваются параметры отдельного проекта для работы в сети, а на вкладке Web — общие для всех проектов параметры.

Вкладка File Types (Типы файлов) диалогового окна SourceSafe Options определяет типы файлов проектов для сред разработки программных продуктов, входящих в пакет Visual Studio. Для настройки Visual Basic 6 необходимо использовать значение списка VB (рис. 20.5).

На этой вкладке размещены следующие элементы управления;

  • поле Binary files (Двоичные файлы) — задает типы файлов, которые считаются в SourceSafe двоичными, а не текстовыми;
  • список File groups (Группы файлов) — назначает выбранную среду разработки, которой соответствуют типы файлов;
  • поле File types included in file group (Типы файлов, включенные в группу) — определяет расширения файлов, которые включены в данную группу файлов.

На вкладке находятся также кнопки Add (Добавить) и Delete (Удалить), позволяющие при необходимости добавить новую группу файлов или удалить ненужную.

Замечание

Обычно параметры вкладки File Types установлены по умолчанию и редактировать их не требуется.

Рис. 20.5. Вкладка File Types диалогового окна SourceSafe Options

Работа с пользователями

Основная задача при работе с пользователями — это поддержка списка пользователей и назначение прав пользователей при операциях с проектами и файлами проектов. Работа с пользователями выполняется в окне администратора Visual SourceSafe Administrator (рис. 20.6), где по умолчанию представлен список пользователей базы данных.

Рис. 20.6. Окно администратора SourceSafe

В этом списке администратор может выполнить следующие действия с пользователями.

  • Добавить пользователя
  • Удалить пользователя
  • Изменить параметры пользователя
  • Изменить пароль пользователя

Добавление пользователей выполняется командой Add User (Добавить пользователя) меню Users (Пользователи). При этом вызывается одноименное окно Add User (рис. 20.7), в котором можно ввести имя пользователя и его пароль.

Рис. 20.7. Окно Add User для добавления пользователя

Удаление пользователя выполняется командой Delete User (Удалить пользователя) меню Users. При этом открывается диалоговое окно с запросом на подтверждение удаления. Пользователь при этом не должен быть соединен с базой данных.

Для изменения параметров пользователя необходимо выполнить команду Edit User (Изменить пользователя) меню Users (Пользователи). При этом вызывается одноименное окно, аналогичное окну для добавления пользователя (рис. 20.7), в котором отсутствует поле Password (Пароль). Для изменения имени пользователя следует ввести другое имя в поле User name (Имя пользователя).

Чтобы изменить пароль пользователя, необходимо воспользоваться диалоговым окном Change Password (рис. 20.8), открываемым при выборе команды Change Password (Изменить пароль) меню Users.

Рис. 20.8. Диалоговое окно Change Password для изменения пароля пользователя

В поле New password (Новый пароль) диалогового окна Change Password необходимо ввести новый пароль и продублировать его в поле Verify (Проверка). Для изменения пароля администратора требуется дополнительно ввести старый пароль.

После того как сформирован список пользователей, следует назначить всем пользователям индивидуальные права доступа к проектам базы данных.

Замечание

Необходимо напомнить, что доступ к работе с правами выполняется только с установленным флажком Enable Project Security (Доступность защиты проекта) на вкладке Project Security (Защита проекта) настройки режимов работы администратора SourceSafe.

Для настройки прав пользователей на проекты следует выполнить команду Rights by Project (Права на проекты) меню Tools (Сервис). При этом вызывается диалоговое окно Project Rights'(Права на проекты), в котором можно выполнить настройку прав пользователей отдельно на каждый из проектов (рис. 20.9).

Рис. 20.9. Диалоговое окно Project Rights для настройки прав пользователей на проекты в базе данных

Для настройки прав на проект следует в списке дерева проектов выбрать проект, для которого выполняется настройка прав, затем из правого списка выбрать пользователя и с помощью флажков, расположенных в области User rights (Права пользователя), установить набор необходимых прав. Права устанавливаются немедленно и отображаются в столбце Rights (Права) списка пользователей в виде буквенных сокращений. С помощью этой настройки каждому проекту можно назначить индивидуальные права доступа пользователей к файлам проекта.

В данном случае при настройке прав отправной точкой является проект. Это удобно, например, при создании нового проекта или проверке прав существующего проекта, поскольку виден весь список пользователей. Однако если требуется назначить индивидуальные права одному пользователю, то придется искать этого пользователя по всем проектам, что довольно неудобно. Для второго варианта назначения прав существует диалоговое окно Assignments for (Назначение для), которое вызывается командой Rights Assignments for User (Назначение прав пользователя) в меню Tools (Сервис). Это окно показано на рис. 20.10. Назначение прав выполняется для текущего по списку пользователя, имя которого отображается в наименовании окна.

В этом окне есть список прав на проекты и аналогичная предыдущей настройке группа флажков User rights (Права пользователя), в которой назначаются эти права. Права в этом списке отображаются те же, что были назначены в предыдущей настройке или установлены по умолчанию при регистрации пользователя. В этом окне можно изменить или добавить права на проекты. Для этого служат кнопки:

  • Add Assignment (Добавить назначение) — позволяет добавить или отредактировать права доступа пользователя;
  • Delete Assignment (Удалить назначение) — удаляет назначение прав доступа пользователя.

При добавлении прав вызывается диалоговое окно, аналогичное окну назначения прав для проекта (рис. 20.9), за исключением наличия списка прав пользователей. Действия здесь такие же, то есть для назначения прав доступа необходимо в области User rights установить соответствующие этим правам флажки. Для удаления достаточно подтвердить факт удаления прав пользователя на проект.

Рис. 20.10. Диалоговое окно Assignments for для индивидуальной настройки прав пользователей на проекты в базе данных

Если вводятся пользователи с равными правами, то можно воспользоваться диалоговым окном копирования прав пользователей друг другу Copy Rights Assignment to (Копирование назначения прав для), которое вызывается командой Copy User Rights (Копирование прав пользователя) меню Tools (Сервис). При этом для текущего пользователя вызывается диалоговое окно, показанное на рис. 20.11.

Рис. 20.11. Окно Copy Rights Assignment to для копирования прав пользователей

После выбора из списка в этом окне пользователя с. необходимы ми правами, при помощи кнопки Сору (Копировать) выполняется копирование прав доступа для выбранного пользователя, имя которого находится в заголовке окна.

Работа с данными

Основная работа при администрировании базы данных SourceSafe связана с частичным или полным архивированием данных, а также их восстановлением при необходимости. Для этих целей в SourceSafe существуют два мастера:

  • Archive Wizard (Мастер архивирования)
  • Restore Wizard (Мастер восстановления данных)

Для запуска мастера Archive Wizard выполните команду Archive Projects (Архивирование проектов) меню Archive (Архив). Работа мастера проста, интуитивно понятна и не требует отдельного описания. Цель работы мастера Archive Wizard заключается в создании специального архивного файла с расширением ssa, в который записываются проекты из базы данных.

Замечание

Предварительно для хранения архивных файлов желательно создать отдельный каталог с ограниченным доступом для пользователей. Периодичность архивирования определяется надежностью работы системы и скоростью внесения изменений в проекты исполнителями. Процесс этот достаточно простой и не занимает много времени. При интенсивной работе над проектом можно выполнять архивирование ежедневно силами администратора системы.

Восстановление из архива выполняется с помощью мастера Restore Wizard, который запускается командой Restore Projects (Восстановление проектов) меню Archive (Архив). Этот мастер выполняет запись проектов из архивного файла в базу данных программы SourceSafe.

Работа пользователя в SourceSafe

После того как пользователь введен администратором в список пользователей, определены его права доступа к проектам, он может приступать к работе над файлами проекта. Для работы пользователя с проектами и файлами, входящими в проект, служит окно проводника программы SourceSafe (рис. 20.12), состоящее из перечисленных ниже основных элементов.

  • Список проектов — отображает дерево проектов.
  • Список файлов проектов — отображает содержимое проектов, то есть файлы, входящие в состав проектов.
  • Поле для вывода итоговой информации по выполнению действий — отображает информацию о выполняемых действиях.
  • Меню — содержит команды на выполнение действий SourceSafe.
  • Панель инструментов проводника — содержит набор кнопок для выполнения команд по работе с проектами и файлами проектов.
  • Верхняя строка состояния — отображает текущий проект и рабочую библиотеку проекта.
  • Нижняя строка состояния — содержит имя текущего пользователя, режимы работы, количество файлов в списке.

Рис. 20.12. Окно проводника SourceSafe для работы пользователей

На панели инструментов окна Проводника представлены кнопки, назначение которых описано в табл. 20.1.

Таблица 20.1. Кнопки панели инструментов окна Проводника
Кнопка | Название | Назначение
 | Create Project (Создать проект) | Создает новый проект
 | Add Files (Добавить файлы) | Добавляет файлы в проект
 | Label Version (Метка версии) | Устанавливает метку версии проекта
 | Delete Files/Project (Удалить файл/проект) | Удаляет файл или проект
 | Get Latest Version (Получить последнюю версию) | Показывает последнюю версию файлов проекта
 | Check Out Files/Project (Заблокировать файлы/проект) | Блокирует файлы проекта и копирует их в указанное место для редактирования
 | Check In Files/Project (Освободить файлы/проект) | Освобождает блокированные файлы и снимает блокировку в базе данных
 | Undo Check Out (Снять блокировку) | Снимает блокировку файлов
 | Share Files (Доступность файлов) | Устанавливает совместный доступ к файлам проекта
 | View File (Просмотр файла) | Запускает среду проектирования и загружает в нее файл для просмотра
 | Edit File (Правка файла) | Запускает среду проектирования и загружает в нее файл для работы с ним. При этом выполняется Check Out (Блокировка) этого файла
 | File/Project Difference (Различия файла/проекта) | Выполняет сравнение файлов и выдает отчет о найденных различиях
 | Show Properties (Просмотр свойств) | Показывает свойства выбранного файла или проекта
 | Show History (Просмотр истории) | Показывает историю создания и работы над выбранным файлом или проектом
 | Find in Files (Поиск в файлах) | Поиск заданного текста в файлах
 | Set Working Folders (Установка рабочей папки) | Устанавливает рабочий каталог. При этом вызывается диалоговое окно установки рабочего каталога
 | Refresh File List (Обновление списка файлов) | Обновляет список файлов
 | Help (Справка) | Вызывает справочную систему SourceSafe

Набор кнопок, расположенных на панели инструментов по умолчанию, можно изменить, добавить требуемые кнопки, скрыть ненужные. Для этого используется диалоговое окно настройки панели инструментов (рис. 20.13), открываемое при выборе команды Customize Toolbar меню Tools. В диалоговом окне Настройка панели инструментов расположены два списка. Набор кнопок на панели инструментов задается списком Панель инструментов. В него можно добавить кнопки из списка доступных кнопок Имеющиеся кнопки. Для изменения порядка следования кнопок на панели инструментов предназначены кнопки Вверх и Вниз окна настройки.

Рис. 20.13. Диалоговое окно настройки панели инструментов окна Проводника SourceSafe

Иерархия в SourceSafe

В SourceSafe поддерживается строгая иерархия проектов и файлов проекта, образующая дерево проектов. Корнем всегда является папка с обозначением $/. Далее в иерархии следуют проекты и файлы проектов.

В иерархическом дереве поддерживается наследование прав доступа, то есть права доступа от вышестоящих уровней передаются нижестоящим. При этом права нижестоящих уровней можно изменить.

Работа с проектами

Как было сказано выше, все проекты отображаются в левом списке Про-водника SourceSafe. При работе с проектами можно выполнить все доступные для пользователя действия. Например, если пользователь имеет все права, то можно добавлять, удалять, редактировать проект.

Для создания нового проекта следует определить его место в дереве, для этого необходимо выбрать в дереве тот проект, внутри которого будет находиться новый проект. Если это проект первого уровня иерархии, выбирается корень дерева, то есть папка со значком $/ — самый верхний уровень иерархии. После этого следует выполнить команду Create Project (Создать проект) меню File (Файл). При этом вызывается окно Create Project in (Создать проект в) (рис. 20.14), в поля которого вводят наименование и примечания с кратким описанием проекта, используя поля Project (Проект) и Comment (Комментарий).

Рис. 20.14. Окно создания нового проекта в SourceSafe

После того как проект внесен в базу данных SourceSafe, можно работать с его файлами. Для начала необходимо добавить в проект все входящие в него файлы.

Работа с файлами проекта

Запись (добавление) файлов проекта в базу данных SourceSafe выполняется командой Add Files (Добавить файлы) меню File (Файл) или одноименной кнопкой на панели инструментов. При этом вызывается диалоговое окно Add File to (Добавить файл в) (рис. 20.15) с указанием проекта, в который добавляются файлы.

Замечание

Типы файлов в раскрывающемся списке List files of type (Список типов файлов) диалогового окна Add File to соответствуют настройке типов файлов по группам в режимах настройки SourceSafe на вкладке File Types (Типы файлов) диалогового окна SourceSafe Options.

Итак, все проекты внесены в базу данных программы SourceSafe, а все файлы проектов записаны в соответствующие им проекты базы. Что происходит потом?

Далее SourceSafe становится организатором работы над проектами. Пользователи копируют файлы из базы SourceSafe в свои рабочие папки. При этом такие файлы блокируются в базе данных, т. е. на файлы ставится метка, как показано на рис. 20.16. При этом другой пользователь не может скопировать блокированный файл для редактирования до тех пор, пока файл (его новая версия) не возвращен в базу SourceSafe и с него не снята блокировка.

Рис. 20.15. Окно для добавления файлов проекта в базу данных SourceSafe

Рис. 20.16. Блокировка файлов, скопированных для редактирования

Копирование файлов и их блокировка выполняются автоматически с помощью команды Check Out (Блокировка) меню SourceSafe или соответствующей кнопкой панели инструментов. Блокировку можно выполнить как для всех файлов проекта (при этом необходимо выбрать проект в дереве), так и для отдельных файлов проекта (для этого необходимо выбрать интересующий файл или группу файлов). Как видно из рисунка, система обеспечивает контроль даты и имени пользователя, выполнившего блокировку.

При выполнении блокировки вызывается диалоговое окно Check Out (Блокировка) (рис. 20.17) для выбора папки, в которую будет записана копия файла для редактирования. В этом же окне можно ввести небольшой комментарий о выполненных изменениях, о цели блокировки файла.

Рис. 20.17. Диалоговое окно Check Out блокировки файла

Необходимо отметить, что при отсоединении от базы данных SourceSafe все метки блокировки остаются и снять их может только тот пользователь, который взял файлы проектов на редактирование.

Если случайно блокирован не тот файл, который требуется, то исправить такую ошибку можно с помощью команды Undo Check Out (Отменить блокировку) меню SourceSafe.

После завершения работы с файлами проекта они возвращаются в базу данных SourceSafe командой Check In (Освобождение) из меню SourceSafe или с помощью одноименной кнопки на панели инструментов, и значок блокировки с них снимается.

Замечание

Аналогично блокировке, освобождение можно выполнить как сразу для всех файлов проекта, так и для одного или группы файлов.

При выполнении освобождения вызывается диалоговое окно Check In (Освобождение), в котором можно дополнительно пояснить внесенные изменения в файл (рис. 20.18). Если установить флажок Remove local copy (Удалить локальную копию) этого диалогового окна, то копия файла в рабочей папке проекта будет удалена. Флажок Keep checked out (Сохранить блокирование) выполняет возврат копии файла в базу с сохранением метки блокировки на нем.

Очень важно сохранить хронологию работы над проектом. Для просмотра этих сведений необходимо вызвать для выбранного проекта диалоговое окно History of Project (Хронология проекта) командой Show History (Показать хронологию) меню Tools (Сервис) или нажать одноименную кнопку на панели инструментов (рис. 20.20). При этом предварительно будет вызвано диалоговое окно Project History Options (Режимы хронологии проекта) настройки режима просмотра хронологии (рис. 20.19), в котором указываются режимы просмотра и, в частности, интервал дат для выборки хронологии.

Кроме того, что в окне History of Project отображается вся хронология работы над проектом, отсюда с помощью кнопки Check Out можно выбрать любую предыдущую версию файла.

Рис. 20.18. Диалоговое окно Check In освобождения файла

Рис. 20.19. Режимы просмотра хронологии проекта

Рис. 20.20. Хронология проекта в диалоговом окне History of Project

SourceSafe в среде Visual Basic 6

В среде проектирования Visual Basic 6 возможности для работы с SourceSafe представлены в меню Tools (Сервис) раскрывающимся меню SourceSafe. Это меню является контекстным, то есть его содержание зависит от состояния проекта в среде разработки. Первоначально, когда нет ни одного проекта, здесь можно выполнить следующие действия:

  • Создать проект из SourceSafe
  • Запустить SourceSafe для работы в базе данных
  • Выполнить настройку работы SourceSafe в среде Visual Basic 6

Для создания проекта необходимо в меню Tools выбрать команду SourceSafe, а затем значение Create Project from SourceSafe (Создать проект из SourceSafe). При этом вызывается окно Create local project from SourceSafe (Создать локальный проект из SourceSafe), в котором представлено дерево проектов (рис. 20.21). Предварительно откроется диалоговое окно для присоединения к базе данных SourceSafe. После выбора проекта в дереве будет создана копия этого проекта в рабочей папке проекта и затем эта копия будет загружена в среду проектирования.

Рис. 20.21. Диалоговое окно Create local project from SourceSafe для создания проекта

После зафузки проекта меню SourceSafe пополняется следующими командами:

  • Get Latest Version — получить последнюю версию
  • Check Out — выполнить блокировку файлов
  • Check In — выполнить освобождение файлов
  • Undo Check Out — снять блокировку
  • Show History — показать историю проекта
  • Show Differences — показать разницу версии
  • SourceSafe Property — свойства программы SourceSafe
  • Add Files to SourceSafe — добавить файлы в базу данных SourceSafe
  • Share Files — назначить совместное использование файлов
  • Refresh File Status — обновить состояние файлов

База данных SourceSafe запускается при помощи команды Run SourceSafe меню SourceSafe. После присоединения к базе можно работать как при обычном запуске базы данных.

Настройка совместной работы со средой проектирования выполняется в диалоговом окне Source Code Control Options (Параметры управления исходными кодами), показанном на рис. 20.22. Это окно открывается командой Options (Параметры) меню SourceSafe.

Рис. 20.22. Диалоговое окно Source Code Control Options управления режимами работы с исходными текстами

В этом окне расположено четыре раскрывающихся списка, имеющих следующее назначение:

  • Get latest checked-in versions of files when opening a VB project (Получать последнюю версию файлов при открытии проекта) — устанавливать возможность получения последней версии файлов проекта для открытия его в среде проектирования;
  • Check in files when closing VB project (Выполнять освобождение файлов при закрытии проекта) — освобождает файлы в базе данных при закрытии проекта в среде проектирования;
  • Add files to source control when adding them to a VB project (Добавлять файлы в базу SourceSafe при их добавлении в проект) — автоматически добавляет новые файлы проекта в базу SourceSafe;
  • Remove files from source control when deleting them from the VB project (Удалять файлы из базы SourceSafe при их удалении из проекта) — удаляет файлы из базы SourceSafe при удалении их из проекта.

В этих списках можно выбрать три значения:

  • Yes — подтверждение выполнения соответствующего действия всегда и без запроса;
  • Ask — предварительный запрос на выполнение действия;
  • No — отказ от соответствующего действия.

Таким образом, Visual Basic 6 совместно с SourceSafe позволяет организовать групповую работу и избежать практически всех конфликтных ситуации, возникающих при разработке больших проектов силами группы программистов, постановщиков и людей, тестирующих приложение.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 3 Создание простого приложения

Большинство приложений, созданных в Visual Basic, работают в интерактивном режиме. На экран выводится информация, предназначенная для пользователя программы, и ожидается его ответная реакция в виде ввода данных или команд. Интерактивное приложение в Visual Basic создается на базе формы, являющейся, как правило, основным окном интерфейса, с элементами управления, позволяющими осуществлять взаимодействие с пользователями.

В Visual Basic при создании форм разработчик может использовать шаблоны и мастера, применение которых описано в предыдущей главе, а также конструктор форм. Конструктор форм предназначен для самостоятельной разработки формы с заданными свойствами или для изменения формы, созданной с помощью мастера.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 3 Создание простого приложения

Большинство приложений, созданных в Visual Basic, работают в интерактивном режиме. На экран выводится информация, предназначенная для пользователя программы, и ожидается его ответная реакция в виде ввода данных или команд. Интерактивное приложение в Visual Basic создается на базе формы, являющейся, как правило, основным окном интерфейса, с элементами управления, позволяющими осуществлять взаимодействие с пользователями.

В Visual Basic при создании форм разработчик может использовать шаблоны и мастера, применение которых описано в предыдущей главе, а также конструктор форм. Конструктор форм предназначен для самостоятельной разработки формы с заданными свойствами или для изменения формы, созданной с помощью мастера.

Создание проекта

Создание любого приложения в Visual Basic начинается с создания проекта. Проектом является совокупность файлов, входящих в приложение и хранящих информацию о его компонентах. Чтобы создать свой новый проект, запустите программу Visual Basic. Появится диалоговое окно New Project (Новый проект), показанное на рис. 3.1. По умолчанию выбрана вкладка New (Новый) и выделен значок Standard EXE. Нажмите кнопку Открыть.

Замечание

Диалоговое окно New Project (рис. 3.1) можно также использовать для открытия ранее созданных проектов. Вкладка Existing (Существующий) имеет вид окна, позволяющего выбрать на диске требуемый проект. На вкладке Recent (Последний) диалогового окна содержится список проектов, которые вы открывали в последнее время.

Если при запуске программы Visual Basic не появляется диалоговое окно New Project, а это возможно из-за того, что в нем был установлен флажок Don't show this dialog in the future (He показывать это диалоговое окно в будущем), то для создания проекта выполните одно из следующих действий:

  • в меню File (Файл) выберите команду New Project (Новый проект);
  • нажмите комбинацию клавиш <Ctrl>+<N>.

Рис. 3.1. Диалоговое окно New Project, появляющееся при запуске программы Visual Basic

Откроется диалоговое окно New Project, представленное на рис. 3.2. Установите курсор на значок Standard ЕХЕ и нажмите кнопку ОК или дважды щелкните на этом значке.

Рис. 3.2. Диалоговое окно New Project

Помимо вышеперечисленных средств, для создания нового приложения можно также выполнить следующие действия:

  • нажать кнопку Add Standard EXE Project на стандартной панели инструментов;
  • нажать кнопку Add Form на стандартной панели инструментов. В открывшемся диалоговом окне Add Form (рис. 3.3) установите курсор на значок Form и нажмите кнопку Открыть или дважды щелкните на значке.

Рис. 3.3. Диалоговое окно Add Form

Рис. 3.4. Окно Project, предназначенное для разработки приложения

В результате открывается окно Project (рис. 3.4), содержащее новую форму, с которой можно начинать работать: изменять установленные по умолчанию свойства, помещать в нее элементы управления, используя для этого панель элементов управления, являющуюся основным рабочим инструментом при разработке форм приложения. В строке заголовка окна программы Visual Basic появляется слово design, указывающее, что программа находится в режиме разработки приложения.

Сохранение проекта

Вероятно, будет излишним напоминание о том, что проект необходимо в процессе работы периодически сохранять. Даже если вы не боитесь, что пропадет электричество, рано или поздно у вас возникнет необходимость в сохранении данных, чтобы продолжить работу над проектом на следующий день.

При сохранении проекта необходимо помнить, что проект состоит из входящих в него компонентов, таких как формы, модули кода, классы, элементы управления и т. д. Поэтому процесс сохранения проекта требует последовательного сохранения его компонентов. Рассмотрим сохранение нашего нового проекта, состоящего из одной пустой формы.

Для сохранения проекта выполните следующие действия:

1. В меню File (Файл) выберите команду Save Project (Сохранить проект) или нажмите кнопку Save Project на стандартной панели инструментов.

2. В открывшемся диалоговом окне Save File As (рис 3.5) список Тип файла содержит значение Form Files, указывая, что сохраняется входящая в приложение форма. Используя раскрывающийся список Папка, выберите папку, в которой будет сохранена форма, затем в поле Имя файла введите имя формы и нажмите кнопку Сохранить.

Рис. 3.5. Диалоговое окно Save File As для сохранения файлов приложения

3. Так как никаких компонентов, кроме формы, новое приложение не содержит, появляется диалоговое окно Save Project As (Сохранить проект как) для сохранения самого проекта. По умолчанию в списке Папка выбрана папка, в которой сохранили форму. Введите наименование проекта и нажмите кнопку Сохранить.

При последующем сохранении проекта Visual Basic по умолчанию сохраняет файлы под их именами. Если же в проект с момента последнего сохранения были добавлены новые компоненты, откроется диалоговое окно Save File As для присвоения им имен.

Совет

Для облегчения работы с проектом и входящими в его состав файлами, прежде чем сохранять проект, создайте отдельную папку, в которой затем и сохраните все файлы.

Открытие проекта

Открытие проекта может вызвать некоторые затруднения. Вроде бы делаете все правильно: в меню File (Файл) выбираете команду Open Project (Открыть проект), затем в открывшемся диалоговом окне Open Project находите на диске необходимый файл и нажимаете кнопку Открыть. Но где же проект? В окне программы Visual Basic его нигде не видно.

Для того чтобы получить доступ к компонентам, входящим в проект, выполните одно из следующих действий:

  • в меню View (Вид) выберите команду Project Explorer (Проводник проекта):
  • нажмите кнопку Project Explorer на стандартной панели инструментов;
  • нажмите комбинацию клавиш <Ctrl>+<R>.

Рис. 3.6. Окно проводника проекта содержит входящие в проект компоненты

Откроется окно проводника проекта (рис 3.6), содержащее список всех его компонентов. В верхней части окна размещено имя проекта project test, заданное нами при его сохранении. Ниже располагаются входящие в проект компоненты. Созданный нами проект содержит только форму, имеющую наименование Form_test и расположенную в группе Forms. Для открытия формы дважды щелкните на ее имени.

Выполнение приложения

Для выполнения созданного в Visual Basic приложения существует много способов. Воспользуйтесь любым из них:

  • выберите в меню Run команду Start (Выполнить);
  • нажмите кнопку Start на стандартной панели инструментов Visual Basic;
  • нажмите клавишу <F5>.

Создание формы

При использовании команд, создающих новый проект, Visual Basic создает проект и открывает новую форму (рис. 3.4), после чего вы можете приступать к созданию приложения.

Любая форма в Visual Basic состоит из объектов, называемых элементами управления, с помощью которых осуществляется взаимодействие с пользователями приложения, а также с другими программами. Все элементы управления имеют характерные для них свойства. Для любого объекта вы можете указать действия, выполняемые программой при наступлении определенных событий. Процесс создания формы в конструкторе форм состоит в размещении в форме объектов и определении свойств, а также связанных с ними событий и выполняемых действий. Для размещения в форме объектов используется панель элементов управления. Чтобы отобразить ее на экране, выполните одно из следующих действий:

  • выберите из меню View (Вид) команду Toolbox (Панель элементов управления);
  • нажмите кнопку Toolbox на стандартной панели инструментов.

На рис. 3.7 показана новая форма и панель элементов управления, используемая для размещения в форме объектов. Описание кнопок этой панели приведено в табл. 1.15 главы 1. Более подробно назначение кнопок рассматривается ниже.

Размещение элементов управления в форме осуществляется следующим образом:

Рис. 3.7. Окно конструктора форм

Рис. 3.8. Размещение в форме элемента управления

1. Нажмите кнопку Toolbox соответствующего элемента управления на панели элементов управления. Например, для размещения в форме текстовой информации необходимо щелкнуть кнопку Label.

2. Установите курсор, принявший вид перекрестия, в место предполагаемого размещения объекта в форме.

3. Нажмите кнопку мыши и, не отпуская ее, нарисуйте рамку требуемого размера. При этом рядом с курсором мыши появляются текущие размеры создаваемого объекта в твипах (рис. 3.8).

4. Отпустите кнопку мыши.

Замечание

Заданные при размещении размеры элемента управления вы можете позднее изменить, используя мышь или окно свойств объекта.

Свойства объектов формы

Все объекты Visual Basic, размещенные в форме (заголовок, поля, надписи, кнопки, линии и т. д.), а также сама форма характеризуются свойствами, которые вы можете настроить в соответствии со своими требованиями. Для просмотра и редактирования свойств объекта, размещенного в форме, выделите его, а затем выполните одно из следующих действий:

  • выберите команду Properties Window (Окно свойств) меню View (Вид);
  • нажмите правую кнопку мыши и выберите команду контекстного меню Properties (Свойства);
  • нажмите кнопку Properties Window (Окно свойств) на стандартной панели инструментов;
  • нажмите клавишу <F4>.

В результате откроется окно Properties со свойствами выделенного объекта (рис. 3.9).

Раскрывающийся список в верхней части окна Properties содержит перечень всех объектов формы. Его можно использовать для выбора объекта вместо выделения нужного объекта в форме.

Ниже списка объектов формы расположены две вкладки. Вкладка Alphabetic (По алфавиту) содержит расположенные по алфавиту названия свойств объектов, а вкладка Categorized (По категориям) — свойства объектов, сгруппированные по категориям.

В нижней части диалогового окна Properties содержится описание выбранного в списке свойства.

Рис. 3.9. Окно свойств Properties

Для изменения какого-либо свойства объекта необходимо открыть окно Properties и перейти на строку, содержащую данное свойство. Значение свойства отобразится в столбце, расположенном правее наименования свойства. При изменении значения свойства возможны варианты действий, описанные в табл. 3.1.

Таблица 3.1. Действия, выполняемые для изменения свойства
Тип свойства | Действие
Возможны два или более различных вариантов значений свойства | При выборе такого свойства в правом столбце появляется кнопка раскрытия списка, позволяя для ввода нового значения использовать элементы списка. Для циклического просмотра списка значений свойства можно использовать двойной щелчок на наименовании свойства. На рис. 3.10 показан список для изменения значения свойства Alignment (Выравнивание)
Возможно много различных вариантов значения свойства | При выборе такого свойства, предназначенного для цветовых настроек объекта, в правом столбце появляется кнопка раскрытия списка, при нажатии на которую открывается небольшое окно с двумя вкладками (рис. 3.11). Вкладка Palette содержит цветовую палитру, используемую для задания цвета. Вкладка System позволяет для задания цвета использовать цвета, примененные для окрашивания системных элементов окна программы Visual Basic
Возможен выбор свойств с помощью окна настройки | При выборе свойства в правом столбце появляется кнопка с тремя точками, при нажатии на которую открывается диалоговое окно, из которого выбираются необходимые значения. Например, при настройке свойства Font (Шрифт) открывается диалоговое окно Выбор шрифта
Значение свойства вводится с использованием клавиатуры | При редактировании такого свойства информация вводится в правый столбец выбранного свойства с помощью клавиатуры. Примером является свойство Caption (Надпись)

Вкладка Categorized (По категориям) окна свойств Properties (рис. 3.12) содержит свойства, разделенные на категории, представленные в табл. 3.2.

Таблица 3.2. Категории свойств
Категория | Описание
Appearance (Оформление) | В этой категории расположены свойства, определяющие внешний вид объекта. Например, свойство Caption формы позволяет задать текст, размещаемый в заголовке, а свойство BorderStyle определяет стиль рамки объекта. При установленном для данного свойства значения Sizable с помощью курсора можно изменять размер формы при выполнении
Behavior (Поведение) | Свойства этой категории определяют поведение объекта. Например, если для объекта свойство visible имеет значение False, то при выполнении он не будет виден. Аналогичное значение, установленное для свойства Locked, запрещает ввод информации в поле. Свойство ScrollBars объекта TextBox определяет, будут ли в поле размещены полосы прокрутки
Data (Данные) | Данная категория позволяет определить используемые данные. Так, например, свойство DataField позволяет указать имя поля данных, свойство DataFormat — формат данных
DDE (Динамический обмен данными) | Свойства этой категории используются при динамическом обмене данными с другими приложениями
Font (Шрифт) | Позволяет задать шрифт текста объекта
List (Список) | Свойства этой категории используются при определении объектов типа ListBox И ComboBox
Misc (Общие) | В эту категорию входят свойства общего характера. Например, Name задает имя объекта, по которому объект идентифицируется в форме и в тексте программы. Свойство ToolTipText позволяет задать текст подсказки, который будет появляться при установке курсора на объект
Position (Расположение) | Свойства этой категории позволяют задать положение объекта в форме относительно ее верхнего левого угла, а также его размеры. Если объектом является сама форма, то в этой категории расположены свойства Height, width, Left, Тор, определяющие размер формы и ее положение в режиме выполнения на экране. Кроме того, задать положение формы при выполнении можно, используя свойство StartUpPosition. Например, если вы установите значение CenterScreen, то в режиме выполнения форма будет размещена в центре экрана. Свойство Moveable определяет, можно ли перемещать форму по экрану при выполнении
Scale (Масштаб) | Свойства данной категории определяют масштаб объекта. Используя свойство ScaleMode, можно задать единицы измерения в терминах стандартного масштаба в твипах, пунктах, пикселах, символах и т. д. Свойства ScaleLeft и ScaleTop определяют координаты левого верхнего угла объекта, a ScaleWidth и ScaleHeight — единицы измерения на основе текущей ширины и высоты области рисования

Рис. 3.10. Выбор значения свойства объекта из списка

Рис. 3.11. Настройка свойства BackColor

Рис. 3.12. Окно свойств Properties с выбранной вкладкой Categorized

Замечание

Для удобства пользования вкладкой Categorized слева от наименования категорий расположены значки, содержащие изображение знаков плюс или минус. При установленном значке со знаком плюс свойства, входящие в текущую категорию, не видны, а в окне Properties отображается только название категории. Чтобы открыть список свойств, необходимо щелкнуть на значке плюс. Список свойств данной категории откроется, а знак плюс превратится в знак минус.

Общие для всех объектов свойства

Каждый из размещаемых в форме элементов управления определяется собственным набором свойств. Но есть свойства, присущие большинству объектов. Например, все без исключения объекты формы имеют свойство Name (Имя), используемое при написании программных кодов. Имя объекта должно быть уникальным в форме. Размеры объекта определяются свойствами Height (Высота) и width (Ширина). Для указания положения объекта в форме предназначены свойства Left (Слева) и тор (Сверху). Свойство Left определяет расстояние объекта от левого края формы, а свойство Top — расстояние от верхнего края формы.

События и методы

Visual Basic является объектно-ориентированным языком программирования. Помимо свойств, объект имеет методы, определяющие выполняемые им действия, например перемещение, изменение размеров. Используя предусмотренные для объектов методы, можно обойтись минимальным программированием приложения. Например, для печати образа формы достаточно вставить оператор следующего вида:

Form1.PrintForm

где Form1 — форма, а PrintForm — название метода.

Среди методов, которыми обладают все объекты, можно назвать Move, позволяющий перемещать объект; setFocus, активизирующий объект, чтобы иметь возможность с ним взаимодействовать.

Помимо свойств и методов, для объектов можно задать программные коды, написанные на языке Visual Basic и выполняемые при наступлении связанных с ними событий. Например, при нажатии кнопки происходит событие click (Нажатие кнопки мыши). Для обработки данного события при создании формы должна быть написана требуемая процедура. Чтобы открыть окно, предназначенное для ввода программного кода, выполните одно из следующих действий:

  • сделайте двойной щелчок на объекте, для которого хотите просмотреть или создать программный код;
  • установите курсор на объект и из меню View (Вид) выберите команду Code (Код);
  • выберите команду контекстного меню объекта View Code.

При выполнении любого из этих действий откроется окно Project, показанное на рис. 3.13.

Рис. 3.13. Окно Project для задания программного кода

В верхней части окна Project расположены два раскрывающихся списка Object и Procedure. Левый список Object содержит все объекты формы, включая и саму форму. В списке Procedure размещены события, для которых можно создать процедуру.

В области, предназначенной для написания кода, расположены следующие команды:

Private Sub Textl_Click()

End Sub

где Textl_click является именем процедуры. Оно состоит из имени объекта, для которого создается процедура, заданного свойством Name, и наименования события, в данном случае click (Щелчок кнопкой мыши). Текст процедуры помещается между операторами sub и End Sub.

Чтобы создать процедуру для обработки события, необходимо выполнить следующие действия:

1. Открыть окно процедур Project любым удобным способом.

2. Из раскрывающегося списка Object выбрать объект, для которого создается процедура.

3. Используя раскрывающийся список Procedure, выбрать обрабатываемое событие.

4. Между операторами Sub и End Sub поместить текст процедуры.

Для настройки окна процедур Project используется вкладка Editor (Редактор) диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис). При установке в этом окне флажка Default to Full Module View отображается список всех процедур. Для удобства просмотра процедур их можно разделить линиями, установив флажок Procedure Separator.

Совет

Для более быстрого перехода из режима просмотра в окне Project одной процедуры ко всем процедурам можно использовать кнопки Procedure View и Full Module View, расположенные в левом нижнем углу.

Действия, выполняемые с объектами формы

В процессе создания формы вы можете перемещать, удалять объекты или изменять их размеры и свойства.

Выделение объектов формы

Чтобы управлять объектом, вы сначала должны его выделить. Для выделения одного объекта достаточно щелкнуть на нем. Для выделения нескольких объектов выполните одно из следующих действий:

  • нажмите клавишу <Shift>. Удерживая ее в нажатом состоянии, щелкните поочередно все выделяемые объекты;
  • выберите на панели инструментов управления формы кнопку Pointer, предназначенную для позиционирования указателя мыши. Установите его в пределах формы. Не отпуская кнопку мыши, нарисуйте рамку выделения так, чтобы внутри нее оказались все необходимые объекты.

    Замечание

    Второй способ применим в том случае, если все выделяемые объекты размещены в форме компактной группы.

Для выделения всех объектов в форме можно воспользоваться командой Select All (Выделить все) меню Edit (Правка) или комбинацией клавиш

<Ctrl>+<A>. После того как объекты выделены, вы можете управлять ими как единым целым.

Отмена выделения с объектов

Если вы хотите отменить выделение со всех объектов формы, щелкните вне выделенных объектов. Для снятия выделения с отдельных объектов выполните следующие действия:

1. Нажмите и удерживайте клавишу <Shift>.

2. Выберите поочередно объекты, с которых хотите снять выделение.

Перемещение объектов в форме

Visual Basic позволяет перемещать один или несколько объектов формы одновременно как с помощью мыши, так и посредством клавиш со стрелками при нажатой клавише <Ctrl>. Использование клавиш-стрелок применяется, когда требуется точное позиционирование, так как одно нажатие клавиши приводит к перемещению объекта на расстояние, задаваемое размерами ячейки линий сетки формы.

Замечание

Для задания размера сетки предназначены поля Width и Height, определяющие ширину и высоту ячейки, вкладки General диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).

Если требуется переместить объекты на большое расстояние, можно комбинировать оба этих способа: сначала вы перемещаете объекты с помощью мыши, а затем, нажав клавишу <Ctrl>, посредством клавиш-стрелок задаете их точное расположение.

Удаление объектов из формы

Для удаления из формы выделенных объектов выполните одно из следующих действий:

  • в меню Edit (Правка) выберите команду Cut (Вырезать);
  • нажмите клавишу <Del>;
  • нажмите комбинацию клавиш <Ctrl>+<X>.

Изменение размеров объектов

Для изменения размера одного выделенного в форме объекта можно использовать маркеры управления, представляющие собой черные квадратики по углам и сторонам, или клавиши-стрелки при нажатой клавише <Shift>. При этом изменение размера объекта осуществляется в соответствии с размерами ячейки сетки, заданными на вкладке General диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).

Если требуется установить точные размеры объекта, лучше использовать свойства Height и width, определяющие его высоту и ширину, соответственно. Для этого откройте окно свойств объекта Properties и с помощью клавиатуры введите необходимые значения в поля свойств.

Выравнивание объектов формы

Для улучшения внешнего вида размещенные в форме объекты выравнивают относительно друг друга и сетки формы. Для выравнивания можно использовать команду Align (Выровнять) меню Format (Формат), содержащую команды, приведенные в табл. 3.3.

Таблица 3.3. Команды выравнивания объектов
Команда | Назначение
Lefts (По левому краю) | Выравнивает выбранные объекты по левому краю самого левого объекта
Centers (По центру) | Выравнивает выбранные объекты относительно вертикальной оси
Rights (По правому краю) | Выравнивает выбранные объекты по правому краю самого правого объекта
Tops (По верхнему краю) | Выравнивает выбранные объекты по верхнему краю самого верхнего объекта
Middles (Посередине) | Центрирует выбранные объекты относительно горизонтальной оси
Bottoms (По нижнему краю) | Выравнивает выбранные объекты по нижнему краю самого нижнего объекта
to Grid (По сетке) | Выравнивает выбранные объекты по линиям сетки

Меню Format (Формат) содержит команду Make Same Size (Устанавливать одинаковые размеры), опции которой Width, Height и Both позволяют для выбранных объектов установить одинаковую ширину, высоту или оба размера сразу.

Для управления расстоянием между выбранными объектами в горизонтальном и вертикальном направлениях используются дополнительные опции команд Horizontal Spacing (Расстояние по горизонтали) и Vertical Spacing (Расстояние по вертикали), представленные в табл. 3.4.

Таблица 3.4. Команды, изменяющие расстояние между объектами
Опция | Действие
Make Equal (Одинаковое расстояние) | Устанавливает одинаковое расстояние между выбранными объектами
Increase (Увеличить) | Увеличивает расстояние между выбранными объектами
Decrease (Уменьшить) | Уменьшает расстояние между выбранными объектами
Remove (Удалить) | Удаляет промежуток между выбранными объектами

Команда Center in Form (По центру формы) меню Format (Формат) содержит опции Horizontally и Vertically, позволяющие центрировать выделенные объекты относительно горизонтальной и вертикальной линий, проходящих через центр формы.

В контекстном меню объектов также содержатся команды, управляющие отображением объекта в форме.

Команда | Действие
Bring to Front (Позади) | Направляет выбранный объект на самый нижний слой формы
Send to Back (Поверх) | Направляет выбранный объект на самый верхний слой формы

Помимо вышеперечисленных команд, в меню Format, а также в контекстном меню объектов формы содержится команда Size To Grid (Размер по сетке), позволяющая привести размер объекта в соответствие с размером ячейки сетки.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание проекта

Создание любого приложения в Visual Basic начинается с создания проекта. Проектом является совокупность файлов, входящих в приложение и хранящих информацию о его компонентах. Чтобы создать свой новый проект, запустите программу Visual Basic. Появится диалоговое окно New Project (Новый проект), показанное на рис. 3.1. По умолчанию выбрана вкладка New (Новый) и выделен значок Standard EXE. Нажмите кнопку Открыть.

Замечание

Диалоговое окно New Project (рис. 3.1) можно также использовать для открытия ранее созданных проектов. Вкладка Existing (Существующий) имеет вид окна, позволяющего выбрать на диске требуемый проект. На вкладке Recent (Последний) диалогового окна содержится список проектов, которые вы открывали в последнее время.

Если при запуске программы Visual Basic не появляется диалоговое окно New Project, а это возможно из-за того, что в нем был установлен флажок Don't show this dialog in the future (He показывать это диалоговое окно в будущем), то для создания проекта выполните одно из следующих действий:

  • в меню File (Файл) выберите команду New Project (Новый проект);
  • нажмите комбинацию клавиш <Ctrl>+<N>.

Рис. 3.1. Диалоговое окно New Project, появляющееся при запуске программы Visual Basic

Откроется диалоговое окно New Project, представленное на рис. 3.2. Установите курсор на значок Standard ЕХЕ и нажмите кнопку ОК или дважды щелкните на этом значке.

Рис. 3.2. Диалоговое окно New Project

Помимо вышеперечисленных средств, для создания нового приложения можно также выполнить следующие действия:

  • нажать кнопку Add Standard EXE Project на стандартной панели инструментов;
  • нажать кнопку Add Form на стандартной панели инструментов. В открывшемся диалоговом окне Add Form (рис. 3.3) установите курсор на значок Form и нажмите кнопку Открыть или дважды щелкните на значке.

Рис. 3.3. Диалоговое окно Add Form

Рис. 3.4. Окно Project, предназначенное для разработки приложения

В результате открывается окно Project (рис. 3.4), содержащее новую форму, с которой можно начинать работать: изменять установленные по умолчанию свойства, помещать в нее элементы управления, используя для этого панель элементов управления, являющуюся основным рабочим инструментом при разработке форм приложения. В строке заголовка окна программы Visual Basic появляется слово design, указывающее, что программа находится в режиме разработки приложения.

.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Линии сетки

Для точного позиционирования объектов в форме удобно использовать сетку, для отображения которой на экране выполните следующие действия:

1. В меню Tools (Сервис) выберите команду Options (Параметры).

2. Перейдите на вкладку General (рис. 3.14).

3. Установите флажок Show Grid (Показывать сетку).

4. Под флажком расположено поле Grid Units, указывающее, что размер задается в твипах (twips). Размер ячейки сетки в горизонтальном и вертикальном направлениях устанавливается с помощью двух полей ввода Width (Ширина) и Height (Высота). Введите в поля числа в диапазоне от 24 до 1188 включительно.

5. Нажмите кнопку ОК для закрытия диалогового окна.

При установленном в окне Options флажке Align Controls to Grid (Выровнять элементы управления по сетке) вы не можете расположить объект в произвольном месте формы. Все операции размещения объектов, их перемещения и изменения размеров будут выполняться с учетом размера ячейки сетки.

Замечание

Линии сетки, установленные в форме с помощью диалогового окна Options, не видны при выполнении формы.

Рис. 3.14. Вкладка General диалогового окна Options используется для настройки параметров сетки

Порядок обхода объектов формы

При вводе информации в поля формы переход от одного поля к другому осуществляется с помощью клавиши <ТаЬ> в соответствии с заданным в форме порядком объектов. Он может отличаться от реального расположения объектов.

Каждому новому добавляемому в форму объекту присваивается номер, не связанный с его реальным расположением в форме и определяющий лишь очередность размещения объекта в форме. Он на единицу больше максимального номера объектов формы. Необходимо учитывать, что нумерация объектов в форме начинается с 0.

Для того чтобы посмотреть и изменить порядковый номер объекта, откройте окно свойств и выберите свойство Tabindex (Порядок объектов). Для изменения установленного значения введите требуемое значение с помощью клавиатуры.

Настройка параметров формы

Процесс создания формы можно разделить на три этапа:

  • Настройка параметров формы
  • Размещение в форме объектов: текста, полей различных типов, линий, рисунков, кнопок управления
  • Настройка свойств размещенных в форме объектов

Форма, как и все располагаемые в ней объекты, имеет свойства, используя которые можно задать ее размер, координаты верхнего левого угла, стиль рамки обрамления, заголовок, цвет и т. д. Помимо этого, форма характеризуется событиями и методами.

Настройка свойств формы осуществляется в окне Properties (Свойства), для открытия которого установите курсор на свободную от объектов поверхность формы и выберите команду Properties Window (Окно свойств) меню View (Вид) или нажмите клавишу <F4>.

При сохранении формы создается файл с расширением frm, в котором хранится информация о форме, ее свойствах, о размещенных в ней объектах и их свойствах, а также заданный программный код. На рис. 3.15 показан этот файл в окне программы Notepad. Помимо файла с расширением frm для форм, содержащих графические и другие бинарные объекты, создается также файл с расширением frx.

Рис. 3.15. Просмотр файла с расширением frm программой Notepad

Расположение формы и ее размеры

Расположение формы на экране при выполнении определяется свойствами Left (Левый) и тор (Верхний), указывающими расстояние от левого и верхнего края, соответственно. Помимо этого, для задания расположения формы во время выполнения используется свойство StartUpPosition, которое может принимать значения, содержащиеся в табл. 3.5.

Таблица 3.5. Значения свойства startUpPosition
Значение свойства | Расположение формы
Manual | Положение формы задается свойствами Left и Тор
CenterOwner | Форма располагается в центре рабочего стола Windows. Дочерняя форма — в центре родительского окна
CenterScreen | Форма располагается в центре экрана
WindowsDefault | Положение формы задается системой Windows исходя из количества открытых окон и их расположения

Для изменения размера формы служат свойства Height (Высота) и widht (Ширина), определяющие высоту и ширину формы, а также мышь и клавиши-стрелки. При использовании мыши для изменения одновременно высоты и ширины формы установите курсор в ее нижний правый угол. Когда он примет вид двунаправленной стрелки, нажмите кнопку мыши и, удерживая ее, измените размер формы. Установив требуемый размер, отпустите кнопку мыши. Для изменения одного из размеров формы необходимо использовать соответствующий боковой маркер.

При изменении размера формы с помощью клавиш-стрелок надо удерживать в нажатом состоянии клавишу <Shift>.

Заголовок формы

Для задания текста заголовка, располагающегося в верхней части формы, предназначено свойство caption (Надпись) окна свойств. Чтобы отредактировать заголовок, откройте окно Properties, выделите свойство caption и введите в правом столбце свойства заголовок формы.

Если вы не хотите, чтобы форма вообще содержала заголовок, удалите информацию из правого столбца.

Форма, как и основное окно программы Visual Basic, может содержать с правой стороны заголовка кнопки управления с ее размерами. Их отображением управляют свойства MaxButton и MinButton. Свойство MaxButton определяет, будет ли кнопка максимизации активна при запуске формы на выполнение, а свойство MinButton, соответственно, определяет активность кнопки минимизации формы. Свойство ControlBox формы определяет, будет ли во время выполнения формы в строке заголовка располагаться кнопка вызова системного меню, в котором присутствуют команды перемещения, изменения размера, закрытия формы.

Стиль обрамления формы

Стиль обрамления формы задается с помощью свойства BorderStyle (Стиль рамки) и может принимать значения, приведенные в табл. 3.6.

Таблица 3.6. Значения свойства BorderStyle
Значение | Описание
0-Non (Нет рамки) | Форма не имеет рамки, области заголовка, кнопки вызова системного меню, кнопок управления окном
1-Fixed Single (Одинарная рамка) | Неизменяемая одинарная рамка. В области заголовка размещена кнопка вызова системного меню в виде значка, заголовок формы и кнопка для ее закрытия
2-Sizable (Изменяемая) | Изменяемая рамка (размеры формы можно изменять при выполнении). В области заголовка размещена кнопка вызова системного меню, заголовок формы, кнопки управления окном
3-Fixed Dialog (Двойная рамка) | Неизменяемая двойная рамка. В области заголовка размещена кнопка вызова системного меню, заголовок формы и кнопка для ее закрытия
4-Fixed ToolWindow (Неизменяемая рамка рабочего окна Windows) | Неизменяемая одинарная рамка. В области заголовка размещен заголовок формы и кнопка для ее закрытия
5-Sizable ToolWindow (Изменяемая рамка рабочего окна Windows) | Изменяемая одинарная рамка. В области заголовка размещен заголовок формы и кнопка для ее закрытия

По умолчанию свойство BorderStyle имеет значение Sizable, позволяя пользователю во время выполнения изменять размеры формы.

Замечание

Значения свойства BorderStyle определяют, будут ли в строке заголовка формы присутствовать кнопки управления окном и кнопка вызова системного меню. Устанавливая дополнительно свойства MaxButton, MinButton и controlBox, вы можете управлять присутствием в форме отдельных элементов управления.

Свойство BackColor (Цвет фона) позволяет задать цвет фона формы.

Свойство windowState (Состояние окна) определяет размер формы при ее запуске на выполнение и может принимать одно из следующих значений:

Значение | Описание
Normal (Обычное) | Форма имеет размеры, определенные его свойствами
Minimized (Минимизированное) | Форма сворачивается в значок
Maximized (Максимизированное) | Форма распахивается на весь экран

Для задания значка, размещаемого в строке заголовка формы и в виде которого представляется форма при запуске, если в свойстве windowState установлено значение Minimized, используется свойство icon. При выборе данного свойства в правом столбце появляется кнопка с тремя точками, нажатие на которую открывает диалоговое окно Load Icon (рис. 3.16). С помощью этого окна можно подобрать соответствующий значок для формы, чтобы он отображал ее назначение.

Рис. 3.16. Диалоговое окно Load Icon, позволяющее выбрать значок для формы

События формы

Формы, как и входящие в них объекты, могут выполнять методы и отвечать на возникающие события. Приведем несколько примеров событий формы:

Событие | Возникает
Activate (Активизировать) | Когда форма становится активной, т. е. отображается на экране
Deactivate (Активизировать) | Когда форма становится неактивной. Например, при активизации на экране другой формы
Initialize (Инициализация) | При создании объекта типа форма
Load (Загрузка) | В момент загрузки формы в память
Resize (Изменить размер) | При изменении размера формы
Terminate (Завершение) | В момент удаления формы
Unload (Выгрузка) | В момент выгрузки формы из памяти

Элементы управления формы

Наиболее часто используемыми элементами управления формы являются текстовая информация, текстовые поля и кнопки управления. Рассмотрим их назначение.

Текстовая информация

Размещение в форме текста (заголовков, надписей к полям, поясняющей информации) осуществляется с помощью кнопки Label (Метка), находящейся на панели элементов управления формы.

Для размещения в форме текстовой информации нажмите кнопку Label на панели инструментов. Если данная панель отсутствует на экране, для ее отображения выберите в меню View команду Toolbox или нажмите кнопку Toolbox на стандартной панели инструментов. Затем установите указатель мыши на место предполагаемого расположения текстового объекта и нарисуйте рамку требуемого размера. В форме появляется объект, в названии которого содержится слово Label.

Откройте окно свойств созданного объекта properties. Для этого выделите его и выбегите в контекстном меню команду Properties (Свойства). Посмотрите свойства, которыми объект данного типа характеризуется.

Текст метки задается свойством caption. Выделите данное свойство, после чего в правый столбец свойства введите нужную текстовую информацию.

Текст, задаваемый объектом Label, не может быть изменен пользователем приложения. Но это не значит, что его нельзя изменить при выполнении приложения. Изменить текст можно программно. Рассмотрим небольшой пример. Создадим приложение, в котором форма содержит текстовую надпись. Установив курсор на данной надписи и нажав кнопку мыши текст будет заменен новой надписью, а двойное нажатие кнопки мыши позволит восстановить исходное значение.

1. Для создания нового приложения в меню File (Файл) выберите команду New Project (Новый проект). Откроется окно Project с расположенной в нем новой формой.

2. Чтобы разместить в форме текстовую информацию, нажмите кнопку Label на панели элементов управления. Затем установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера.

3. Откройте окно свойств. Для этого установите курсор на созданном объекте и щелкните правой кнопкой мыши, а затем выберите из контекстного меню команду Properties.

4. Выделите свойство Caption (Надпись) и введите в правом столбце текст заголовка, например, Текст, отображаемый при загрузке формы.

5. Для свойства AutoSize надписи установите значение True. В этом случае размер надписи будет зависеть от отображаемого в ней текста таким образом, чтобы он весь поместился в одну строку. Более подробно о свойстве AutoSize описано в главе 8.

6. Так как требуется, чтобы при выборе текстового объекта с помощью мыши он замещался другой текстовой информацией, необходимо создать процедуру обработки данного события. Для открытия окна редактора кода дважды щелкните на объекте Label.

7. В окне редактора кода из списка Object выбрано значение Label 1, указывающее имя текстового объекта, а из правого списка Procedure значение Click, позволяющее задать процедуру обработки события нажатия кнопки мыши.

8. В области создания процедуры между операторами private Sub Labell_click() и End Sub расположите следующую команду:

Labell.Caption = "Текст, отображаемый в форме при нажатии кнопки мыши"

При вводе команд в окне редактора кода, после того как введено имя объекта и поставлена точка, открывается список свойств и методов объекта (рис. 3.17), который можно использовать для ввода информации. Выберите из списка свойство caption, дважды щелкнув кнопкой мыши, и оно будет вставлено в процедуру.

Рис. 3.17. Visual Basic при вводе процедуры в окне редактора кода открывает список свойств и методов объекта

9. Для задания процедуры, выполняемой при установке курсора на текстовом объекте и двойном нажатии кнопки мыши, необходимо запомнить значение, которое имела метка при загрузке формы на выполнение. Для этого из списка Object выберите значение Form, а из списка Procedure — событие Load, возникающее при загрузке формы, и создайте следующую процедуру:

Private Sub Form Load()

Labell.Tag = Labell.Caption

End Sub

10. В окне редактора кода из списка. Procedure выберите значение DblClick и сформируйте следующую процедуру.

Private Sub Labell_DblClick()

Labell.Caption = Labell.Tag

End Sub

На рис. 3.18 показано окно редактора кода со всеми сформированными процедурами.

11. После ввода текста процедуры закройте окно редактора кода, выбрав команду Close системного меню окна или нажав кнопку Закрыть, расположенную в верхнем правом углу заголовка окна.

Рис. 3.18. Окно редактора кода с подготовленными процедурами

12. Запустите программу на выполнение, выбрав в меню Run команду Start или нажав клавишу <F5>. Появляется форма, содержащая текстовую надпись. Установите курсор на надпись и нажмите кнопку мыши. Ее текст изменится. При двойном нажатии кнопки мыши исходная надпись будет восстановлена.

Текстовое поле

Для отображения информации и ввода данных в форме предназначен объект типа поле, для создания которого используется кнопка TextBox (Текстовое поле) на панели элементов управления.

Информация, выводимая в текстовом поле, определяется свойством Text и может задаваться следующим способом:

  • в диалоговом окне Properties;
  • в процессе выполнения программного кода;
  • при вводе данных в поле пользователем. В этом случае свойство Locked не должно иметь значение True, так как данные, отображаемые в поле, можно только просматривать, но нельзя редактировать.

Текстовые поля — это наиболее часто встречающийся тип элементов управления, т. к. их можно использовать не только для просмотра информации, как с помощью рассмотренных ранее элементов управления типа Label, но и для ввода информации пользователями приложения.

Разместим в форме текстовое поле и посмотрим, как, вводя в него информацию, можно изменять значение расположенной в форме надписи.

1. Откройте окно для создания нового приложения.

2. Для размещения в форме текстового поля нажмите кнопку TextBox (Текстовое поле) на панели элементов управления. Затем установите курсор в форме и нарисуйте рамку требуемого размера.

3. Откройте окно свойств для созданного элемента управления.

4. Информация, отображаемая в текстовом поле, задается свойством Text. Чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение Text1.

5. Разместите в форме надпись к текстовому полю. Для этого нажмите кнопку Label на панели элементов управления, установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера. Затем в окне Properties выделите свойство caption (Надпись) и введите в правом столбце текст надписи, например. Текстовые поля позволяют пользователю вводить информацию.

6. Чтобы вводимая в текстовое поле информация отображалась в надписи, расположенной над полем, необходимо создать процедуру. Щелкните мышью, установив курсор на текстовом поле. В открывшемся окне редактора кода из списка Object выбрано значение Text1, указывающее наименование элемента управления TextBox, а из правого списка Procedure значение Change, позволяющее задать процедуру обработки события, возникающего при изменении значения. Создайте процедуру следующего вида (рис 3.19):

Private Sub Textl_Change ()

Label 1.Caption = Textl.Text

End Sub

Рис. 3.19. Процедура, позволяющая отображать в метке вводимую пользователем информацию

Рис. 3.20. Информация, вводимая пользователем в текстовое поле, отображается в метке.

7. Закройте окно редактора кода.

8. Запустите программу на выполнение. Появляется форма, содержащая надпись и текстовое поле. Введите произвольную фразу в текстовое поле. Обратите внимание, что по мере ввода информации надпись, расположенная над полем, также отображает вводимый вами текст (рис. 3.20).

Кнопка

Важную роль в форме имеет объект, называемый элементом управления command Button (Кнопка управления).. Нажатие кнопки, размещенной в форме, позволяет выполнить процедуру обработки события click.

Для размещения в форме элемента управления Command Button используется кнопка CommandButton на панели элементов управления. Надпись, размещаемая на кнопке, задается свойством Caption и может содержать не более 255 символов. Если длина надписи больше ширины кнопки, автоматически осуществляется перенос надписи на следующую строку. В случае, если размер кнопки не позволяет поместить всю надпись, не поместившаяся часть надписи отбрасывается.

Кнопки, размещаемые в форме, используются для выполнения определенной процедуры, связанной с обработкой события click. Это может быть, например, печать данных или проведение определенных вычислений. После того как кнопка размещена в форме и задано ее название, необходимо определить действия, выполняемые при нажатии на эту кнопку. Для этого дважды щелкните на кнопке и в открывшемся окне редактора кода задайте необходимую процедуру.

Рассмотрим небольшой пример определения процедуры, связанной с обработкой события click. Разместим в форме текстовое поле и две кнопки, нажатие которых будет изменять отображаемую в текстовом поле информацию:

1. Откройте новый проект для создания приложения.

2. Используя кнопку ТехВох на панели элементов управления, создайте в форме текстовое поле.

3. Разместите в форме две кнопки управления, используя для этого кнопку CommandButton на панели элементов управления.

4. Используя свойство Caption кнопки, задайте ее название.

5. Для изменения шрифта и начертания надписи, воспользуйтесь диалоговым окном Выбор шрифта свойства Font.

6. Чтобы задать процедуру обработки события click, дважды щелкните на кнопке и в открывшемся окне редактора кода создайте процедуру следующего вида:

Private Sub Command1 Click()

Text1.Text = "Текст, задаваемый нажатием кнопки 1"

End Sub

7. Выполняя пункты с 3 по 6, создайте и разместите в форме еще одну кнопку управления. При определении процедуры измените текст, отображаемый в текстовом поле при нажатии второй кнопки.

Запустите форму на выполнение. Нажимая поочередно размещенные в ней кнопки управления, вы можете наблюдать изменение отображаемой в текстовом поле информации (рис. 3.21).

Рис. 3.21. Информация в текстовом поле меняется при нажатии кнопок

Флажок

Для размещения в форме данных, которые могут иметь только одно из двух допустимых значений, используются объекты типа checkBox, называемые флажками. Их размещение в форме осуществляется с помощью кнопки CheckBox на панели элементов управления. Флажки позволяют пользователю дать ответ на поставленный вопрос. В случае положительного ответа пользователь устанавливает флажок, и он приобретает вид квадрата, в котором размещена галочка В. При не установленном флажке он имеет вид пустого квадрата D, обозначая отрицательный ответ на поставленный вопрос. Возможно еще одно состояние флажка, при котором он недоступен. В этом состоянии он имеет вид галочки на сером фоне.

Флажки могут использоваться в форме по одному или группами.

Чтобы установить или сбросить флажок, можно использовать быстрые клавиши. Для их назначения необходимо вставить символ амперсанда (&) перед соответствующей буквой в свойстве caption флажка.

Внешним видом размещенного в форме флажка управляет свойство style. Оно содержит два значения. По умолчанию установлено значение Standard, предполагающее, что флажок будет иметь вид, описанный выше. При установке значения Graphical флажок будет иметь вид утопленной или приподнятой кнопки в зависимости от того, установлен или сброшен флажок (рис. 3.22).

Рис. 3.22. Графические флажки имеют вид утопленной или приподнятой кнопки

Для задания графического изображения, размещаемого на кнопке, изображающей флажок, используется свойство picture. Свойство Downpicture позволяет задать графическое изображение, отображаемое на кнопке при ее нажатии.

Исходя из состояния, в котором находится флажок, его свойство value (Значение) может иметь следующие значения:

Состояние | Значение свойства value
Unchecked (Сброшен) | 0(vbUnchecked)
Checked (Установлен) | 1(vbChecked)
Grayed (Недоступен) | 2 (vbGrayed)

Совет

Константы vbUnchecked, vbChecked, и vbGrayed можно использовать для присвоения свойству Value нужного значения, устанавливая тем самым необходимые флажки в процедурах, выполняемых при загрузке формы.

Переключатель

Объекты типа OptionButton называются переключателями, так как, располагаемые в группах, они позволяют выбрать одно из нескольких значений. Установка одного переключателя в группе (присвоение его свойству value значения True) автоматически сбрасывает другие переключатели, присваивая аналогичным свойствам значения False.

При размещении в форме нескольких групп переключателей каждая логическая группа должна помещаться в объект-контейнер, например. Frame или pictureBox (рис. 3.23). В этом случае, для создания в форме группы переключателей необходимо сначала поместить в форму рамку, а затем разместить в ней поочередно необходимое количество переключателей, используя для этого кнопку OptionButton на панели элементов управления.

Рис. 3.23. Переключатель, помещенный в объект-контейнер

Предупреждение

При создании группы переключателей необходимо придерживаться вышеназванного порядка размещения элементов, т. к. только в этом случае элементы будут являться группой.

При запуске приложения на выполнение, содержащего группу переключателей, первый из них устанавливается по умолчанию. Вы можете во время разработки любой переключатель группы сделать используемым по умолчанию. Для этого выделите требуемый переключатель и в окне Properties присвойте свойству value значение False.

Вы можете переключатель сделать недоступным. Для этого необходимо значение свойства Enabled (Доступный) установить в False. В этом случае переключатель выделяется серым цветом.

Чтобы выбрать переключатель в группе, можно:

  • установить курсор на требуемом переключателе и щелкнуть кнопкой мыши;
  • переместить фокус на группу переключателей, используя для этого клавишу <ТаЬ>. Затем с помощью клавиш-стрелок выбрать необходимый переключатель;
  • установить в программном коде для свойства value требуемого переключателя значение True;
  • нажать клавишу быстрого доступа для соответствующего переключателя.

    Замечание

    Назначение быстрой клавиши переключателю осуществляется аналогично тому, как это делается для флажка — размещением символа амперсанда (&) перед соответствующей буквой в его свойстве Caption.

Списки

Списки, размещаемые в формах Visual Basic, позволяют пользователю выбрать один из возможных вариантов ответа. Для создания списков используются две кнопки на панели элементов управления:

Кнопка | Название | Назначение
 | ListBox | Создает в форме список, в котором элементы расположены в одну или несколько колонок. В случае, если элементы списка не помещаются в созданном объекте ListBox, то в нем появляются полосы прокрутки, располагаемые снизу и/или с правой стороны
 | ComboBox | Создает в форме раскрывающийся список, представляющий собой объект типа ComboBox. Этот тип списка позволяет пользователю осуществлять выбор значения, вводимого в размещаемое сверху поле ввода, или выбирать значение из списка, открываемого нажатием кнопки со стрелкой, размещаемой с правой стороны. Список данного типа удобно использовать в том случае, если вводимых значений много, а места в форме для расположения обычного списка не хватает

На рис. 3.24 показаны списки, представляющие собой элементы управления ListBox И ComboBox.

Рис. 3.24. Два типа списков, используемых в формах

Для списков существуют встроенные методы, позволяющие во время выполнения приложения добавлять (Additem), удалять (Removeitem) и получать из списка значения. Чтобы разместить значения в списке во время разработки, выполните следующие действия:

1. Выделите свойство List (Список).

2. В правом столбце свойства появится кнопка, содержащая направленную вниз стрелку. Нажмите эту кнопку. Откроется список, позволяющий вводить значения.

3. Введите первое значение списка.

4. Для перехода на новую строку списка нажмите комбинацию клавиш <Ctrl>+<Enter>.

5. Введите следующее значение списка.

6. Повторяя пункты 4 и 5, сформируйте весь список.

Иногда для удобства пользователей требуется, чтобы при появлении формы на экране в списке по умолчанию было выделено наиболее часто выбираемое из него значение. Для установки значения, выбираемого по умолчанию, используется свойство Listindex. Например, вы хотите, чтобы при загрузке формы в списке, имеющем имя List1, выделялся четвертый элемент. В этом случае вам необходимо поместить в окно редактора кода следующее:

Private Sub Form Load()

List1.Listindex = 3

End Sub

Замечание

В коде вместо цифры 4, указывающей номер выделяемого элемента, содержится цифра 3, т. к. нумерация элементов списка начинается с 0.

Свойство Listindex применимо для списков обоих типов: обычных и раскрывающихся. Если для раскрывающегося списка не установлено используемое по умолчанию значение, то при появлении его на экране в поле, предназначенном для ввода значения списка, отображается текст Combol, задаваемый свойством Text и представляющий собой имя объекта. Если вы хотите, чтобы это поле при появлении списка на экране было пустым или содержало заданный вами текст, выделите свойство Text и в правом столбце удалите информацию, оставив поле пустым, или введите необходимый текст, соответственно.

Пример создания приложения

В этой главе мы рассмотрели наиболее часто встречающиеся при создании приложения элементы управления. Более подробно свойства этих объектов описываются в главе 8. Сейчас рассмотрим создание простого приложения, состоящего из формы, представленной на рис. 3.25. Это приложение позволяет на основе введенных данных (длина и ширина дома, количество этажей, материал, из которого будет строиться дачный дом, и материал, используемый для крыши, сведения о том, будет ли у дома мансарда) произвести оценочную стоимость строящегося дачного домика.

Как видно из рисунка, форма содержит:

  • текстовую информацию пояснительного характера;
  • текстовые поля для ввода длины, ширины дома и количества этажей;
  • флажок, используемый для указания, будет ли дом содержать мансарду;
  • список, позволяющий выбрать используемый кровельный материал;
  • раскрывающийся список для выбора материала, из которого будут строиться стены;
  • кнопка, при нажатии на которую будут производиться расчеты стоимости дачного дома;
  • поле, размещенное в нижней части формы с правой стороны кнопки, предназначено для отображения вычисленной стоимости.

Рис. 3.25. Пример приложения, позволяющего производить вычисления на основе введенных данных

Для создания приложения, представленного на рис. 3.25, выполните следующие действия:

1. Чтобы создать новое приложение, в меню File (Файл) выберите команду New Project (Новый проект). Откроется окно Project с расположенной в нем новой формой.

2. Увеличьте размер формы, чтобы в ней поместились все элементы управления. Для этого установите курсор в нижний правый угол и, когда он примет вид двунаправленной стрелки, перемещайте его вниз и вправо до получения необходимого размера.

3. Для ввода заголовка формы, размещаемого в строке заголовка, откройте окно свойств. Затем выделите свойство Caption (Надпись) и введите в правом столбце вместо Form1 следующий текст: Расчет стоимости дачного домика.

4. Можно приступать к размещению в форме элементов управления. Сначала создадим заголовок, располагаемый в верхней части формы. Нажмите кнопку Label на панели элементов управления, установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера. Скорректируйте свойство caption созданного объекта, введя Размер дачного домика.

5. Для размещения в форме текстового поля, предназначенного для ввода длины дачного домика, нажмите кнопку TextBox (Текстовое поле) на панели элементов управления. Затем установите курсор в форму и нарисуйте рамку требуемого размера.

• Используя свойство Name, введите имя поля, например, txtLength. Оно будет использоваться при проведении расчетов стоимости домика.

Совет Всем элементам управления, размещенным в форме, желательно присвоить осмысленные имена. Тогда при работе в окне свойств, окне редактора кода при написании процедур у вас не будет путаницы с именами объектов.

• Информация, отображаемая в текстовом поле, задается свойством Text. Если вы хотите, чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение Text1. Можно также ввести в это свойство числовое значение наиболее вероятной длины домика.

6. Аналогичным образом разместите в форме поля, предназначенные для ввода ширины домика и количества этажей.

7. Для указания, будет ли дачный домик содержать мансарду, разместим в форме флажок. Нажмите кнопку CheckBox на панели элементов управления, установите курсор в форме и нарисуйте рамку требуемого размера. После этого настройте следующие свойства:

  • скорректируйте свойство Caption, введя в его правом столбце Мансарда,
  • если вы хотите, чтобы флажок по умолчанию был установлен, задайте для свойства value значение Checked.

8. Выбор кровельного материала будет осуществляться из обычного списка. Для его размещения в форме нажмите кнопку ListBox на панели элементов управления, установите курсор в форму и нарисуйте рамку необходимого размера. Чтобы сформировать список материалов, воспользуйтесь свойством List. Для этого нажмите кнопку со стрелкой, расположенную в правом столбце свойства, и введите весь список. Для перехода на следующую строку списка используйте комбинацию клавиш <Ctrl>+<Enter>.

9. Для выбора материала, из которого будут строиться стены садового домика, создадим в форме раскрывающийся список. Списком данного типа удобно воспользоваться, т. к. перечень материалов займет слишком много места в форме. Чтобы создать в форме раскрывающийся список, нажмите кнопку ComboBox на панели элементов управления, установите курсор в форме и нарисуйте рамку необходимого размера. Для ввода списка воспользуйтесь также свойством List, как и для обычного списка.

10. Создайте для всех размещенных в форме элементов управления надписи, воспользовавшись для этого кнопкой Label на панели инструментов.

11. Все элементы управления, предназначающиеся для ввода информации, находятся в форме. Теперь осталось создать кнопку и текстовое поле для отображения расчетных данных. Сначала создайте текстовое поле и надпись к нему. Для поля задайте следующие свойства:

  • используя свойство Name, введите имя поля, например, txtSum,
  • информация, отображаемая в текстовом поле, задается свойством Text. Чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение;
  • поле предназначено только для просмотра информации, поэтому для свойства Locked установите значение True.

12. Для создания кнопки воспользуйтесь инструментом Command Button на панели элементов управления:

  • используя свойство caption, введите название кнопки Расчет стоимости;
  • для изменения шрифта и начертания надписи, воспользуйтесь диалоговым окном Выбор шрифта свойства Font;
  • чтобы задать процедуру обработки события click, дважды щелкните на кнопке и в открывшемся окне редактора кода создайте процедуру вычисления стоимости дачного домика в зависимости от введенных параметров. Присвойте полученное значение свойству Text объекта txtSum.

13. Создание приложения завершено. Запустите его на выполнение, нажав клавишу <F5> или выбрав команду Start из меню Run.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Сохранение проекта

Вероятно, будет излишним напоминание о том, что проект необходимо в процессе работы периодически сохранять. Даже если вы не боитесь, что пропадет электричество, рано или поздно у вас возникнет необходимость в сохранении данных, чтобы продолжить работу над проектом на следующий день.

При сохранении проекта необходимо помнить, что проект состоит из входящих в него компонентов, таких как формы, модули кода, классы, элементы управления и т. д. Поэтому процесс сохранения проекта требует последовательного сохранения его компонентов. Рассмотрим сохранение нашего нового проекта, состоящего из одной пустой формы.

Для сохранения проекта выполните следующие действия:

1. В меню File (Файл) выберите команду Save Project (Сохранить проект) или нажмите кнопку Save Project на стандартной панели инструментов.

2. В открывшемся диалоговом окне Save File As (рис 3.5) список Тип файла содержит значение Form Files, указывая, что сохраняется входящая в приложение форма. Используя раскрывающийся список Папка, выберите папку, в которой будет сохранена форма, затем в поле Имя файла введите имя формы и нажмите кнопку Сохранить.

Рис. 3.5. Диалоговое окно Save File As для сохранения файлов приложения

3. Так как никаких компонентов, кроме формы, новое приложение не содержит, появляется диалоговое окно Save Project As (Сохранить проект как) для сохранения самого проекта. По умолчанию в списке Папка выбрана папка, в которой сохранили форму. Введите наименование проекта и нажмите кнопку Сохранить.

При последующем сохранении проекта Visual Basic по умолчанию сохраняет файлы под их именами. Если же в проект с момента последнего сохранения были добавлены новые компоненты, откроется диалоговое окно Save File As для присвоения им имен.

Совет

Для облегчения работы с проектом и входящими в его состав файлами, прежде чем сохранять проект, создайте отдельную папку, в которой затем и сохраните все файлы.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Открытие проекта

Открытие проекта может вызвать некоторые затруднения. Вроде бы делаете все правильно: в меню File (Файл) выбираете команду Open Project (Открыть проект), затем в открывшемся диалоговом окне Open Project находите на диске необходимый файл и нажимаете кнопку Открыть. Но где же проект? В окне программы Visual Basic его нигде не видно.

Для того чтобы получить доступ к компонентам, входящим в проект, выполните одно из следующих действий:

  • в меню View (Вид) выберите команду Project Explorer (Проводник проекта):
  • нажмите кнопку Project Explorer на стандартной панели инструментов;
  • нажмите комбинацию клавиш <Ctrl>+<R>.

Рис. 3.6. Окно проводника проекта содержит входящие в проект компоненты

Откроется окно проводника проекта (рис 3.6), содержащее список всех его компонентов. В верхней части окна размещено имя проекта project test, заданное нами при его сохранении. Ниже располагаются входящие в проект компоненты. Созданный нами проект содержит только форму, имеющую наименование Form_test и расположенную в группе Forms. Для открытия формы дважды щелкните на ее имени.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Выполнение приложения

Для выполнения созданного в Visual Basic приложения существует много способов. Воспользуйтесь любым из них:

  • выберите в меню Run команду Start (Выполнить);
  • нажмите кнопку Start на стандартной панели инструментов Visual Basic;
  • нажмите клавишу <F5>.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание формы

При использовании команд, создающих новый проект, Visual Basic создает проект и открывает новую форму (рис. 3.4), после чего вы можете приступать к созданию приложения.

Любая форма в Visual Basic состоит из объектов, называемых элементами управления, с помощью которых осуществляется взаимодействие с пользователями приложения, а также с другими программами. Все элементы управления имеют характерные для них свойства. Для любого объекта вы можете указать действия, выполняемые программой при наступлении определенных событий. Процесс создания формы в конструкторе форм состоит в размещении в форме объектов и определении свойств, а также связанных с ними событий и выполняемых действий. Для размещения в форме объектов используется панель элементов управления. Чтобы отобразить ее на экране, выполните одно из следующих действий:

  • выберите из меню View (Вид) команду Toolbox (Панель элементов управления);
  • нажмите кнопку Toolbox на стандартной панели инструментов.

На рис. 3.7 показана новая форма и панель элементов управления, используемая для размещения в форме объектов. Описание кнопок этой панели приведено в табл. 1.15 главы 1. Более подробно назначение кнопок рассматривается ниже.

Размещение элементов управления в форме осуществляется следующим образом:

Рис. 3.7. Окно конструктора форм

Рис. 3.8. Размещение в форме элемента управления

1. Нажмите кнопку Toolbox соответствующего элемента управления на панели элементов управления. Например, для размещения в форме текстовой информации необходимо щелкнуть кнопку Label.

2. Установите курсор, принявший вид перекрестия, в место предполагаемого размещения объекта в форме.

3. Нажмите кнопку мыши и, не отпуская ее, нарисуйте рамку требуемого размера. При этом рядом с курсором мыши появляются текущие размеры создаваемого объекта в твипах (рис. 3.8).

4. Отпустите кнопку мыши.

Замечание

Заданные при размещении размеры элемента управления вы можете позднее изменить, используя мышь или окно свойств объекта.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства объектов формы

Все объекты Visual Basic, размещенные в форме (заголовок, поля, надписи, кнопки, линии и т. д.), а также сама форма характеризуются свойствами, которые вы можете настроить в соответствии со своими требованиями. Для просмотра и редактирования свойств объекта, размещенного в форме, выделите его, а затем выполните одно из следующих действий:

  • выберите команду Properties Window (Окно свойств) меню View (Вид);
  • нажмите правую кнопку мыши и выберите команду контекстного меню Properties (Свойства);
  • нажмите кнопку Properties Window (Окно свойств) на стандартной панели инструментов;
  • нажмите клавишу <F4>.

В результате откроется окно Properties со свойствами выделенного объекта (рис. 3.9).

Раскрывающийся список в верхней части окна Properties содержит перечень всех объектов формы. Его можно использовать для выбора объекта вместо выделения нужного объекта в форме.

Ниже списка объектов формы расположены две вкладки. Вкладка Alphabetic (По алфавиту) содержит расположенные по алфавиту названия свойств объектов, а вкладка Categorized (По категориям) — свойства объектов, сгруппированные по категориям.

В нижней части диалогового окна Properties содержится описание выбранного в списке свойства.

Рис. 3.9. Окно свойств Properties

Для изменения какого-либо свойства объекта необходимо открыть окно Properties и перейти на строку, содержащую данное свойство. Значение свойства отобразится в столбце, расположенном правее наименования свойства. При изменении значения свойства возможны варианты действий, описанные в табл. 3.1.

Таблица 3.1. Действия, выполняемые для изменения свойства
Тип свойства | Действие
Возможны два или более различных вариантов значений свойства | При выборе такого свойства в правом столбце появляется кнопка раскрытия списка, позволяя для ввода нового значения использовать элементы списка. Для циклического просмотра списка значений свойства можно использовать двойной щелчок на наименовании свойства. На рис. 3.10 показан список для изменения значения свойства Alignment (Выравнивание)
Возможно много различных вариантов значения свойства | При выборе такого свойства, предназначенного для цветовых настроек объекта, в правом столбце появляется кнопка раскрытия списка, при нажатии на которую открывается небольшое окно с двумя вкладками (рис. 3.11). Вкладка Palette содержит цветовую палитру, используемую для задания цвета. Вкладка System позволяет для задания цвета использовать цвета, примененные для окрашивания системных элементов окна программы Visual Basic
Возможен выбор свойств с помощью окна настройки | При выборе свойства в правом столбце появляется кнопка с тремя точками, при нажатии на которую открывается диалоговое окно, из которого выбираются необходимые значения. Например, при настройке свойства Font (Шрифт) открывается диалоговое окно Выбор шрифта
Значение свойства вводится с использованием клавиатуры | При редактировании такого свойства информация вводится в правый столбец выбранного свойства с помощью клавиатуры. Примером является свойство Caption (Надпись)

Вкладка Categorized (По категориям) окна свойств Properties (рис. 3.12) содержит свойства, разделенные на категории, представленные в табл. 3.2.

Таблица 3.2. Категории свойств
Категория | Описание
Appearance (Оформление) | В этой категории расположены свойства, определяющие внешний вид объекта. Например, свойство Caption формы позволяет задать текст, размещаемый в заголовке, а свойство BorderStyle определяет стиль рамки объекта. При установленном для данного свойства значения Sizable с помощью курсора можно изменять размер формы при выполнении
Behavior (Поведение) | Свойства этой категории определяют поведение объекта. Например, если для объекта свойство visible имеет значение False, то при выполнении он не будет виден. Аналогичное значение, установленное для свойства Locked, запрещает ввод информации в поле. Свойство ScrollBars объекта TextBox определяет, будут ли в поле размещены полосы прокрутки
Data (Данные) | Данная категория позволяет определить используемые данные. Так, например, свойство DataField позволяет указать имя поля данных, свойство DataFormat — формат данных
DDE (Динамический обмен данными) | Свойства этой категории используются при динамическом обмене данными с другими приложениями
Font (Шрифт) | Позволяет задать шрифт текста объекта
List (Список) | Свойства этой категории используются при определении объектов типа ListBox И ComboBox
Misc (Общие) | В эту категорию входят свойства общего характера. Например, Name задает имя объекта, по которому объект идентифицируется в форме и в тексте программы. Свойство ToolTipText позволяет задать текст подсказки, который будет появляться при установке курсора на объект
Position (Расположение) | Свойства этой категории позволяют задать положение объекта в форме относительно ее верхнего левого угла, а также его размеры. Если объектом является сама форма, то в этой категории расположены свойства Height, width, Left, Тор, определяющие размер формы и ее положение в режиме выполнения на экране. Кроме того, задать положение формы при выполнении можно, используя свойство StartUpPosition. Например, если вы установите значение CenterScreen, то в режиме выполнения форма будет размещена в центре экрана. Свойство Moveable определяет, можно ли перемещать форму по экрану при выполнении
Scale (Масштаб) | Свойства данной категории определяют масштаб объекта. Используя свойство ScaleMode, можно задать единицы измерения в терминах стандартного масштаба в твипах, пунктах, пикселах, символах и т. д. Свойства ScaleLeft и ScaleTop определяют координаты левого верхнего угла объекта, a ScaleWidth и ScaleHeight — единицы измерения на основе текущей ширины и высоты области рисования

Рис. 3.10. Выбор значения свойства объекта из списка

Рис. 3.11. Настройка свойства BackColor

Рис. 3.12. Окно свойств Properties с выбранной вкладкой Categorized

Замечание

Для удобства пользования вкладкой Categorized слева от наименования категорий расположены значки, содержащие изображение знаков плюс или минус. При установленном значке со знаком плюс свойства, входящие в текущую категорию, не видны, а в окне Properties отображается только название категории. Чтобы открыть список свойств, необходимо щелкнуть на значке плюс. Список свойств данной категории откроется, а знак плюс превратится в знак минус.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Общие для всех объектов свойства

Каждый из размещаемых в форме элементов управления определяется собственным набором свойств. Но есть свойства, присущие большинству объектов. Например, все без исключения объекты формы имеют свойство Name (Имя), используемое при написании программных кодов. Имя объекта должно быть уникальным в форме. Размеры объекта определяются свойствами Height (Высота) и width (Ширина). Для указания положения объекта в форме предназначены свойства Left (Слева) и тор (Сверху). Свойство Left определяет расстояние объекта от левого края формы, а свойство Top — расстояние от верхнего края формы.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

События и методы

Visual Basic является объектно-ориентированным языком программирования. Помимо свойств, объект имеет методы, определяющие выполняемые им действия, например перемещение, изменение размеров. Используя предусмотренные для объектов методы, можно обойтись минимальным программированием приложения. Например, для печати образа формы достаточно вставить оператор следующего вида:

Form1.PrintForm

где Form1 — форма, а PrintForm — название метода.

Среди методов, которыми обладают все объекты, можно назвать Move, позволяющий перемещать объект; setFocus, активизирующий объект, чтобы иметь возможность с ним взаимодействовать.

Помимо свойств и методов, для объектов можно задать программные коды, написанные на языке Visual Basic и выполняемые при наступлении связанных с ними событий. Например, при нажатии кнопки происходит событие click (Нажатие кнопки мыши). Для обработки данного события при создании формы должна быть написана требуемая процедура. Чтобы открыть окно, предназначенное для ввода программного кода, выполните одно из следующих действий:

  • сделайте двойной щелчок на объекте, для которого хотите просмотреть или создать программный код;
  • установите курсор на объект и из меню View (Вид) выберите команду Code (Код);
  • выберите команду контекстного меню объекта View Code.

При выполнении любого из этих действий откроется окно Project, показанное на рис. 3.13.

Рис. 3.13. Окно Project для задания программного кода

В верхней части окна Project расположены два раскрывающихся списка Object и Procedure. Левый список Object содержит все объекты формы, включая и саму форму. В списке Procedure размещены события, для которых можно создать процедуру.

В области, предназначенной для написания кода, расположены следующие команды:

Private Sub Textl_Click()

End Sub

где Textl_click является именем процедуры. Оно состоит из имени объекта, для которого создается процедура, заданного свойством Name, и наименования события, в данном случае click (Щелчок кнопкой мыши). Текст процедуры помещается между операторами sub и End Sub.

Чтобы создать процедуру для обработки события, необходимо выполнить следующие действия:

1. Открыть окно процедур Project любым удобным способом.

2. Из раскрывающегося списка Object выбрать объект, для которого создается процедура.

3. Используя раскрывающийся список Procedure, выбрать обрабатываемое событие.

4. Между операторами Sub и End Sub поместить текст процедуры.

Для настройки окна процедур Project используется вкладка Editor (Редактор) диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис). При установке в этом окне флажка Default to Full Module View отображается список всех процедур. Для удобства просмотра процедур их можно разделить линиями, установив флажок Procedure Separator.

Совет

Для более быстрого перехода из режима просмотра в окне Project одной процедуры ко всем процедурам можно использовать кнопки Procedure View и Full Module View, расположенные в левом нижнем углу.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Действия, выполняемые с объектами формы

В процессе создания формы вы можете перемещать, удалять объекты или изменять их размеры и свойства.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Выделение объектов формы

Чтобы управлять объектом, вы сначала должны его выделить. Для выделения одного объекта достаточно щелкнуть на нем. Для выделения нескольких объектов выполните одно из следующих действий:

  • нажмите клавишу <Shift>. Удерживая ее в нажатом состоянии, щелкните поочередно все выделяемые объекты;
  • выберите на панели инструментов управления формы кнопку Pointer, предназначенную для позиционирования указателя мыши. Установите его в пределах формы. Не отпуская кнопку мыши, нарисуйте рамку выделения так, чтобы внутри нее оказались все необходимые объекты.

    Замечание

    Второй способ применим в том случае, если все выделяемые объекты размещены в форме компактной группы.

Для выделения всех объектов в форме можно воспользоваться командой Select All (Выделить все) меню Edit (Правка) или комбинацией клавиш

<Ctrl>+<A>. После того как объекты выделены, вы можете управлять ими как единым целым.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Отмена выделения с объектов

Если вы хотите отменить выделение со всех объектов формы, щелкните вне выделенных объектов. Для снятия выделения с отдельных объектов выполните следующие действия:

1. Нажмите и удерживайте клавишу <Shift>.

2. Выберите поочередно объекты, с которых хотите снять выделение.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Перемещение объектов в форме

Visual Basic позволяет перемещать один или несколько объектов формы одновременно как с помощью мыши, так и посредством клавиш со стрелками при нажатой клавише <Ctrl>. Использование клавиш-стрелок применяется, когда требуется точное позиционирование, так как одно нажатие клавиши приводит к перемещению объекта на расстояние, задаваемое размерами ячейки линий сетки формы.

Замечание

Для задания размера сетки предназначены поля Width и Height, определяющие ширину и высоту ячейки, вкладки General диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).

Если требуется переместить объекты на большое расстояние, можно комбинировать оба этих способа: сначала вы перемещаете объекты с помощью мыши, а затем, нажав клавишу <Ctrl>, посредством клавиш-стрелок задаете их точное расположение.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление объектов из формы

Для удаления из формы выделенных объектов выполните одно из следующих действий:

  • в меню Edit (Правка) выберите команду Cut (Вырезать);
  • нажмите клавишу <Del>;
  • нажмите комбинацию клавиш <Ctrl>+<X>.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Изменение размеров объектов

Для изменения размера одного выделенного в форме объекта можно использовать маркеры управления, представляющие собой черные квадратики по углам и сторонам, или клавиши-стрелки при нажатой клавише <Shift>. При этом изменение размера объекта осуществляется в соответствии с размерами ячейки сетки, заданными на вкладке General диалогового окна Options, открываемого командой Options (Параметры) меню Tools (Сервис).

Если требуется установить точные размеры объекта, лучше использовать свойства Height и width, определяющие его высоту и ширину, соответственно. Для этого откройте окно свойств объекта Properties и с помощью клавиатуры введите необходимые значения в поля свойств.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Выравнивание объектов формы

Для улучшения внешнего вида размещенные в форме объекты выравнивают относительно друг друга и сетки формы. Для выравнивания можно использовать команду Align (Выровнять) меню Format (Формат), содержащую команды, приведенные в табл. 3.3.

Таблица 3.3. Команды выравнивания объектов
Команда | Назначение
Lefts (По левому краю) | Выравнивает выбранные объекты по левому краю самого левого объекта
Centers (По центру) | Выравнивает выбранные объекты относительно вертикальной оси
Rights (По правому краю) | Выравнивает выбранные объекты по правому краю самого правого объекта
Tops (По верхнему краю) | Выравнивает выбранные объекты по верхнему краю самого верхнего объекта
Middles (Посередине) | Центрирует выбранные объекты относительно горизонтальной оси
Bottoms (По нижнему краю) | Выравнивает выбранные объекты по нижнему краю самого нижнего объекта
to Grid (По сетке) | Выравнивает выбранные объекты по линиям сетки

Меню Format (Формат) содержит команду Make Same Size (Устанавливать одинаковые размеры), опции которой Width, Height и Both позволяют для выбранных объектов установить одинаковую ширину, высоту или оба размера сразу.

Для управления расстоянием между выбранными объектами в горизонтальном и вертикальном направлениях используются дополнительные опции команд Horizontal Spacing (Расстояние по горизонтали) и Vertical Spacing (Расстояние по вертикали), представленные в табл. 3.4.

Таблица 3.4. Команды, изменяющие расстояние между объектами
Опция | Действие
Make Equal (Одинаковое расстояние) | Устанавливает одинаковое расстояние между выбранными объектами
Increase (Увеличить) | Увеличивает расстояние между выбранными объектами
Decrease (Уменьшить) | Уменьшает расстояние между выбранными объектами
Remove (Удалить) | Удаляет промежуток между выбранными объектами

Команда Center in Form (По центру формы) меню Format (Формат) содержит опции Horizontally и Vertically, позволяющие центрировать выделенные объекты относительно горизонтальной и вертикальной линий, проходящих через центр формы.

В контекстном меню объектов также содержатся команды, управляющие отображением объекта в форме.

Команда | Действие
Bring to Front (Позади) | Направляет выбранный объект на самый нижний слой формы
Send to Back (Поверх) | Направляет выбранный объект на самый верхний слой формы

Помимо вышеперечисленных команд, в меню Format, а также в контекстном меню объектов формы содержится команда Size To Grid (Размер по сетке), позволяющая привести размер объекта в соответствие с размером ячейки сетки.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Линии сетки

Для точного позиционирования объектов в форме удобно использовать сетку, для отображения которой на экране выполните следующие действия:

1. В меню Tools (Сервис) выберите команду Options (Параметры).

2. Перейдите на вкладку General (рис. 3.14).

3. Установите флажок Show Grid (Показывать сетку).

4. Под флажком расположено поле Grid Units, указывающее, что размер задается в твипах (twips). Размер ячейки сетки в горизонтальном и вертикальном направлениях устанавливается с помощью двух полей ввода Width (Ширина) и Height (Высота). Введите в поля числа в диапазоне от 24 до 1188 включительно.

5. Нажмите кнопку ОК для закрытия диалогового окна.

При установленном в окне Options флажке Align Controls to Grid (Выровнять элементы управления по сетке) вы не можете расположить объект в произвольном месте формы. Все операции размещения объектов, их перемещения и изменения размеров будут выполняться с учетом размера ячейки сетки.

Замечание

Линии сетки, установленные в форме с помощью диалогового окна Options, не видны при выполнении формы.

Рис. 3.14. Вкладка General диалогового окна Options используется для настройки параметров сетки


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Порядок обхода объектов формы

При вводе информации в поля формы переход от одного поля к другому осуществляется с помощью клавиши <ТаЬ> в соответствии с заданным в форме порядком объектов. Он может отличаться от реального расположения объектов.

Каждому новому добавляемому в форму объекту присваивается номер, не связанный с его реальным расположением в форме и определяющий лишь очередность размещения объекта в форме. Он на единицу больше максимального номера объектов формы. Необходимо учитывать, что нумерация объектов в форме начинается с 0.

Для того чтобы посмотреть и изменить порядковый номер объекта, откройте окно свойств и выберите свойство Tabindex (Порядок объектов). Для изменения установленного значения введите требуемое значение с помощью клавиатуры.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка параметров формы

Процесс создания формы можно разделить на три этапа:

  • Настройка параметров формы
  • Размещение в форме объектов: текста, полей различных типов, линий, рисунков, кнопок управления
  • Настройка свойств размещенных в форме объектов

Форма, как и все располагаемые в ней объекты, имеет свойства, используя которые можно задать ее размер, координаты верхнего левого угла, стиль рамки обрамления, заголовок, цвет и т. д. Помимо этого, форма характеризуется событиями и методами.

Настройка свойств формы осуществляется в окне Properties (Свойства), для открытия которого установите курсор на свободную от объектов поверхность формы и выберите команду Properties Window (Окно свойств) меню View (Вид) или нажмите клавишу <F4>.

При сохранении формы создается файл с расширением frm, в котором хранится информация о форме, ее свойствах, о размещенных в ней объектах и их свойствах, а также заданный программный код. На рис. 3.15 показан этот файл в окне программы Notepad. Помимо файла с расширением frm для форм, содержащих графические и другие бинарные объекты, создается также файл с расширением frx.

Рис. 3.15. Просмотр файла с расширением frm программой Notepad


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Расположение формы и ее размеры

Расположение формы на экране при выполнении определяется свойствами Left (Левый) и тор (Верхний), указывающими расстояние от левого и верхнего края, соответственно. Помимо этого, для задания расположения формы во время выполнения используется свойство StartUpPosition, которое может принимать значения, содержащиеся в табл. 3.5.

Таблица 3.5. Значения свойства startUpPosition
Значение свойства | Расположение формы
Manual | Положение формы задается свойствами Left и Тор
CenterOwner | Форма располагается в центре рабочего стола Windows. Дочерняя форма — в центре родительского окна
CenterScreen | Форма располагается в центре экрана
WindowsDefault | Положение формы задается системой Windows исходя из количества открытых окон и их расположения

Для изменения размера формы служат свойства Height (Высота) и widht (Ширина), определяющие высоту и ширину формы, а также мышь и клавиши-стрелки. При использовании мыши для изменения одновременно высоты и ширины формы установите курсор в ее нижний правый угол. Когда он примет вид двунаправленной стрелки, нажмите кнопку мыши и, удерживая ее, измените размер формы. Установив требуемый размер, отпустите кнопку мыши. Для изменения одного из размеров формы необходимо использовать соответствующий боковой маркер.

При изменении размера формы с помощью клавиш-стрелок надо удерживать в нажатом состоянии клавишу <Shift>.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Заголовок формы

Для задания текста заголовка, располагающегося в верхней части формы, предназначено свойство caption (Надпись) окна свойств. Чтобы отредактировать заголовок, откройте окно Properties, выделите свойство caption и введите в правом столбце свойства заголовок формы.

Если вы не хотите, чтобы форма вообще содержала заголовок, удалите информацию из правого столбца.

Форма, как и основное окно программы Visual Basic, может содержать с правой стороны заголовка кнопки управления с ее размерами. Их отображением управляют свойства MaxButton и MinButton. Свойство MaxButton определяет, будет ли кнопка максимизации активна при запуске формы на выполнение, а свойство MinButton, соответственно, определяет активность кнопки минимизации формы. Свойство ControlBox формы определяет, будет ли во время выполнения формы в строке заголовка располагаться кнопка вызова системного меню, в котором присутствуют команды перемещения, изменения размера, закрытия формы.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стиль обрамления формы

Стиль обрамления формы задается с помощью свойства BorderStyle (Стиль рамки) и может принимать значения, приведенные в табл. 3.6.

Таблица 3.6. Значения свойства BorderStyle
Значение | Описание
0-Non (Нет рамки) | Форма не имеет рамки, области заголовка, кнопки вызова системного меню, кнопок управления окном
1-Fixed Single (Одинарная рамка) | Неизменяемая одинарная рамка. В области заголовка размещена кнопка вызова системного меню в виде значка, заголовок формы и кнопка для ее закрытия
2-Sizable (Изменяемая) | Изменяемая рамка (размеры формы можно изменять при выполнении). В области заголовка размещена кнопка вызова системного меню, заголовок формы, кнопки управления окном
3-Fixed Dialog (Двойная рамка) | Неизменяемая двойная рамка. В области заголовка размещена кнопка вызова системного меню, заголовок формы и кнопка для ее закрытия
4-Fixed ToolWindow (Неизменяемая рамка рабочего окна Windows) | Неизменяемая одинарная рамка. В области заголовка размещен заголовок формы и кнопка для ее закрытия
5-Sizable ToolWindow (Изменяемая рамка рабочего окна Windows) | Изменяемая одинарная рамка. В области заголовка размещен заголовок формы и кнопка для ее закрытия

По умолчанию свойство BorderStyle имеет значение Sizable, позволяя пользователю во время выполнения изменять размеры формы.

Замечание

Значения свойства BorderStyle определяют, будут ли в строке заголовка формы присутствовать кнопки управления окном и кнопка вызова системного меню. Устанавливая дополнительно свойства MaxButton, MinButton и controlBox, вы можете управлять присутствием в форме отдельных элементов управления.

Свойство BackColor (Цвет фона) позволяет задать цвет фона формы.

Свойство windowState (Состояние окна) определяет размер формы при ее запуске на выполнение и может принимать одно из следующих значений:

Значение | Описание
Normal (Обычное) | Форма имеет размеры, определенные его свойствами
Minimized (Минимизированное) | Форма сворачивается в значок
Maximized (Максимизированное) | Форма распахивается на весь экран

Для задания значка, размещаемого в строке заголовка формы и в виде которого представляется форма при запуске, если в свойстве windowState установлено значение Minimized, используется свойство icon. При выборе данного свойства в правом столбце появляется кнопка с тремя точками, нажатие на которую открывает диалоговое окно Load Icon (рис. 3.16). С помощью этого окна можно подобрать соответствующий значок для формы, чтобы он отображал ее назначение.

Рис. 3.16. Диалоговое окно Load Icon, позволяющее выбрать значок для формы


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

События формы

Формы, как и входящие в них объекты, могут выполнять методы и отвечать на возникающие события. Приведем несколько примеров событий формы:

Событие | Возникает
Activate (Активизировать) | Когда форма становится активной, т. е. отображается на экране
Deactivate (Активизировать) | Когда форма становится неактивной. Например, при активизации на экране другой формы
Initialize (Инициализация) | При создании объекта типа форма
Load (Загрузка) | В момент загрузки формы в память
Resize (Изменить размер) | При изменении размера формы
Terminate (Завершение) | В момент удаления формы
Unload (Выгрузка) | В момент выгрузки формы из памяти


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элементы управления формы

Наиболее часто используемыми элементами управления формы являются текстовая информация, текстовые поля и кнопки управления. Рассмотрим их назначение.

Текстовая информация

Размещение в форме текста (заголовков, надписей к полям, поясняющей информации) осуществляется с помощью кнопки Label (Метка), находящейся на панели элементов управления формы.

Для размещения в форме текстовой информации нажмите кнопку Label на панели инструментов. Если данная панель отсутствует на экране, для ее отображения выберите в меню View команду Toolbox или нажмите кнопку Toolbox на стандартной панели инструментов. Затем установите указатель мыши на место предполагаемого расположения текстового объекта и нарисуйте рамку требуемого размера. В форме появляется объект, в названии которого содержится слово Label.

Откройте окно свойств созданного объекта properties. Для этого выделите его и выбегите в контекстном меню команду Properties (Свойства). Посмотрите свойства, которыми объект данного типа характеризуется.

Текст метки задается свойством caption. Выделите данное свойство, после чего в правый столбец свойства введите нужную текстовую информацию.

Текст, задаваемый объектом Label, не может быть изменен пользователем приложения. Но это не значит, что его нельзя изменить при выполнении приложения. Изменить текст можно программно. Рассмотрим небольшой пример. Создадим приложение, в котором форма содержит текстовую надпись. Установив курсор на данной надписи и нажав кнопку мыши текст будет заменен новой надписью, а двойное нажатие кнопки мыши позволит восстановить исходное значение.

1. Для создания нового приложения в меню File (Файл) выберите команду New Project (Новый проект). Откроется окно Project с расположенной в нем новой формой.

2. Чтобы разместить в форме текстовую информацию, нажмите кнопку Label на панели элементов управления. Затем установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера.

3. Откройте окно свойств. Для этого установите курсор на созданном объекте и щелкните правой кнопкой мыши, а затем выберите из контекстного меню команду Properties.

4. Выделите свойство Caption (Надпись) и введите в правом столбце текст заголовка, например, Текст, отображаемый при загрузке формы.

5. Для свойства AutoSize надписи установите значение True. В этом случае размер надписи будет зависеть от отображаемого в ней текста таким образом, чтобы он весь поместился в одну строку. Более подробно о свойстве AutoSize описано в главе 8.

6. Так как требуется, чтобы при выборе текстового объекта с помощью мыши он замещался другой текстовой информацией, необходимо создать процедуру обработки данного события. Для открытия окна редактора кода дважды щелкните на объекте Label.

7. В окне редактора кода из списка Object выбрано значение Label 1, указывающее имя текстового объекта, а из правого списка Procedure значение Click, позволяющее задать процедуру обработки события нажатия кнопки мыши.

8. В области создания процедуры между операторами private Sub Labell_click() и End Sub расположите следующую команду:

Labell.Caption = "Текст, отображаемый в форме при нажатии кнопки мыши"

При вводе команд в окне редактора кода, после того как введено имя объекта и поставлена точка, открывается список свойств и методов объекта (рис. 3.17), который можно использовать для ввода информации. Выберите из списка свойство caption, дважды щелкнув кнопкой мыши, и оно будет вставлено в процедуру.

Рис. 3.17. Visual Basic при вводе процедуры в окне редактора кода открывает список свойств и методов объекта

9. Для задания процедуры, выполняемой при установке курсора на текстовом объекте и двойном нажатии кнопки мыши, необходимо запомнить значение, которое имела метка при загрузке формы на выполнение. Для этого из списка Object выберите значение Form, а из списка Procedure — событие Load, возникающее при загрузке формы, и создайте следующую процедуру:

Private Sub Form Load()

Labell.Tag = Labell.Caption

End Sub

10. В окне редактора кода из списка. Procedure выберите значение DblClick и сформируйте следующую процедуру.

Private Sub Labell_DblClick()

Labell.Caption = Labell.Tag

End Sub

На рис. 3.18 показано окно редактора кода со всеми сформированными процедурами.

11. После ввода текста процедуры закройте окно редактора кода, выбрав команду Close системного меню окна или нажав кнопку Закрыть, расположенную в верхнем правом углу заголовка окна.

Рис. 3.18. Окно редактора кода с подготовленными процедурами

12. Запустите программу на выполнение, выбрав в меню Run команду Start или нажав клавишу <F5>. Появляется форма, содержащая текстовую надпись. Установите курсор на надпись и нажмите кнопку мыши. Ее текст изменится. При двойном нажатии кнопки мыши исходная надпись будет восстановлена.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Текстовое поле

Для отображения информации и ввода данных в форме предназначен объект типа поле, для создания которого используется кнопка TextBox (Текстовое поле) на панели элементов управления.

Информация, выводимая в текстовом поле, определяется свойством Text и может задаваться следующим способом:

  • в диалоговом окне Properties;
  • в процессе выполнения программного кода;
  • при вводе данных в поле пользователем. В этом случае свойство Locked не должно иметь значение True, так как данные, отображаемые в поле, можно только просматривать, но нельзя редактировать.

Текстовые поля — это наиболее часто встречающийся тип элементов управления, т. к. их можно использовать не только для просмотра информации, как с помощью рассмотренных ранее элементов управления типа Label, но и для ввода информации пользователями приложения.

Разместим в форме текстовое поле и посмотрим, как, вводя в него информацию, можно изменять значение расположенной в форме надписи.

1. Откройте окно для создания нового приложения.

2. Для размещения в форме текстового поля нажмите кнопку TextBox (Текстовое поле) на панели элементов управления. Затем установите курсор в форме и нарисуйте рамку требуемого размера.

3. Откройте окно свойств для созданного элемента управления.

4. Информация, отображаемая в текстовом поле, задается свойством Text. Чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение Text1.

5. Разместите в форме надпись к текстовому полю. Для этого нажмите кнопку Label на панели элементов управления, установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера. Затем в окне Properties выделите свойство caption (Надпись) и введите в правом столбце текст надписи, например. Текстовые поля позволяют пользователю вводить информацию.

6. Чтобы вводимая в текстовое поле информация отображалась в надписи, расположенной над полем, необходимо создать процедуру. Щелкните мышью, установив курсор на текстовом поле. В открывшемся окне редактора кода из списка Object выбрано значение Text1, указывающее наименование элемента управления TextBox, а из правого списка Procedure значение Change, позволяющее задать процедуру обработки события, возникающего при изменении значения. Создайте процедуру следующего вида (рис 3.19):

Private Sub Textl_Change ()

Label 1.Caption = Textl.Text

End Sub

Рис. 3.19. Процедура, позволяющая отображать в метке вводимую пользователем информацию

Рис. 3.20. Информация, вводимая пользователем в текстовое поле, отображается в метке.

7. Закройте окно редактора кода.

8. Запустите программу на выполнение. Появляется форма, содержащая надпись и текстовое поле. Введите произвольную фразу в текстовое поле. Обратите внимание, что по мере ввода информации надпись, расположенная над полем, также отображает вводимый вами текст (рис. 3.20).


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Кнопка

Важную роль в форме имеет объект, называемый элементом управления command Button (Кнопка управления).. Нажатие кнопки, размещенной в форме, позволяет выполнить процедуру обработки события click.

Для размещения в форме элемента управления Command Button используется кнопка CommandButton на панели элементов управления. Надпись, размещаемая на кнопке, задается свойством Caption и может содержать не более 255 символов. Если длина надписи больше ширины кнопки, автоматически осуществляется перенос надписи на следующую строку. В случае, если размер кнопки не позволяет поместить всю надпись, не поместившаяся часть надписи отбрасывается.

Кнопки, размещаемые в форме, используются для выполнения определенной процедуры, связанной с обработкой события click. Это может быть, например, печать данных или проведение определенных вычислений. После того как кнопка размещена в форме и задано ее название, необходимо определить действия, выполняемые при нажатии на эту кнопку. Для этого дважды щелкните на кнопке и в открывшемся окне редактора кода задайте необходимую процедуру.

Рассмотрим небольшой пример определения процедуры, связанной с обработкой события click. Разместим в форме текстовое поле и две кнопки, нажатие которых будет изменять отображаемую в текстовом поле информацию:

1. Откройте новый проект для создания приложения.

2. Используя кнопку ТехВох на панели элементов управления, создайте в форме текстовое поле.

3. Разместите в форме две кнопки управления, используя для этого кнопку CommandButton на панели элементов управления.

4. Используя свойство Caption кнопки, задайте ее название.

5. Для изменения шрифта и начертания надписи, воспользуйтесь диалоговым окном Выбор шрифта свойства Font.

6. Чтобы задать процедуру обработки события click, дважды щелкните на кнопке и в открывшемся окне редактора кода создайте процедуру следующего вида:

Private Sub Command1 Click()

Text1.Text = "Текст, задаваемый нажатием кнопки 1"

End Sub

7. Выполняя пункты с 3 по 6, создайте и разместите в форме еще одну кнопку управления. При определении процедуры измените текст, отображаемый в текстовом поле при нажатии второй кнопки.

Запустите форму на выполнение. Нажимая поочередно размещенные в ней кнопки управления, вы можете наблюдать изменение отображаемой в текстовом поле информации (рис. 3.21).

Рис. 3.21. Информация в текстовом поле меняется при нажатии кнопок


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Флажок

Для размещения в форме данных, которые могут иметь только одно из двух допустимых значений, используются объекты типа checkBox, называемые флажками. Их размещение в форме осуществляется с помощью кнопки CheckBox на панели элементов управления. Флажки позволяют пользователю дать ответ на поставленный вопрос. В случае положительного ответа пользователь устанавливает флажок, и он приобретает вид квадрата, в котором размещена галочка В. При не установленном флажке он имеет вид пустого квадрата D, обозначая отрицательный ответ на поставленный вопрос. Возможно еще одно состояние флажка, при котором он недоступен. В этом состоянии он имеет вид галочки на сером фоне.

Флажки могут использоваться в форме по одному или группами.

Чтобы установить или сбросить флажок, можно использовать быстрые клавиши. Для их назначения необходимо вставить символ амперсанда (&) перед соответствующей буквой в свойстве caption флажка.

Внешним видом размещенного в форме флажка управляет свойство style. Оно содержит два значения. По умолчанию установлено значение Standard, предполагающее, что флажок будет иметь вид, описанный выше. При установке значения Graphical флажок будет иметь вид утопленной или приподнятой кнопки в зависимости от того, установлен или сброшен флажок (рис. 3.22).

Рис. 3.22. Графические флажки имеют вид утопленной или приподнятой кнопки

Для задания графического изображения, размещаемого на кнопке, изображающей флажок, используется свойство picture. Свойство Downpicture позволяет задать графическое изображение, отображаемое на кнопке при ее нажатии.

Исходя из состояния, в котором находится флажок, его свойство value (Значение) может иметь следующие значения:

Состояние | Значение свойства value
Unchecked (Сброшен) | 0(vbUnchecked)
Checked (Установлен) | 1(vbChecked)
Grayed (Недоступен) | 2 (vbGrayed)

Совет

Константы vbUnchecked, vbChecked, и vbGrayed можно использовать для присвоения свойству Value нужного значения, устанавливая тем самым необходимые флажки в процедурах, выполняемых при загрузке формы.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переключатель

Объекты типа OptionButton называются переключателями, так как, располагаемые в группах, они позволяют выбрать одно из нескольких значений. Установка одного переключателя в группе (присвоение его свойству value значения True) автоматически сбрасывает другие переключатели, присваивая аналогичным свойствам значения False.

При размещении в форме нескольких групп переключателей каждая логическая группа должна помещаться в объект-контейнер, например. Frame или pictureBox (рис. 3.23). В этом случае, для создания в форме группы переключателей необходимо сначала поместить в форму рамку, а затем разместить в ней поочередно необходимое количество переключателей, используя для этого кнопку OptionButton на панели элементов управления.

Рис. 3.23. Переключатель, помещенный в объект-контейнер

Предупреждение

При создании группы переключателей необходимо придерживаться вышеназванного порядка размещения элементов, т. к. только в этом случае элементы будут являться группой.

При запуске приложения на выполнение, содержащего группу переключателей, первый из них устанавливается по умолчанию. Вы можете во время разработки любой переключатель группы сделать используемым по умолчанию. Для этого выделите требуемый переключатель и в окне Properties присвойте свойству value значение False.

Вы можете переключатель сделать недоступным. Для этого необходимо значение свойства Enabled (Доступный) установить в False. В этом случае переключатель выделяется серым цветом.

Чтобы выбрать переключатель в группе, можно:

  • установить курсор на требуемом переключателе и щелкнуть кнопкой мыши;
  • переместить фокус на группу переключателей, используя для этого клавишу <ТаЬ>. Затем с помощью клавиш-стрелок выбрать необходимый переключатель;
  • установить в программном коде для свойства value требуемого переключателя значение True;
  • нажать клавишу быстрого доступа для соответствующего переключателя.

    Замечание

    Назначение быстрой клавиши переключателю осуществляется аналогично тому, как это делается для флажка — размещением символа амперсанда (&) перед соответствующей буквой в его свойстве Caption.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Списки

Списки, размещаемые в формах Visual Basic, позволяют пользователю выбрать один из возможных вариантов ответа. Для создания списков используются две кнопки на панели элементов управления:

Кнопка | Название | Назначение
 | ListBox | Создает в форме список, в котором элементы расположены в одну или несколько колонок. В случае, если элементы списка не помещаются в созданном объекте ListBox, то в нем появляются полосы прокрутки, располагаемые снизу и/или с правой стороны
 | ComboBox | Создает в форме раскрывающийся список, представляющий собой объект типа ComboBox. Этот тип списка позволяет пользователю осуществлять выбор значения, вводимого в размещаемое сверху поле ввода, или выбирать значение из списка, открываемого нажатием кнопки со стрелкой, размещаемой с правой стороны. Список данного типа удобно использовать в том случае, если вводимых значений много, а места в форме для расположения обычного списка не хватает

На рис. 3.24 показаны списки, представляющие собой элементы управления ListBox И ComboBox.

Рис. 3.24. Два типа списков, используемых в формах

Для списков существуют встроенные методы, позволяющие во время выполнения приложения добавлять (Additem), удалять (Removeitem) и получать из списка значения. Чтобы разместить значения в списке во время разработки, выполните следующие действия:

1. Выделите свойство List (Список).

2. В правом столбце свойства появится кнопка, содержащая направленную вниз стрелку. Нажмите эту кнопку. Откроется список, позволяющий вводить значения.

3. Введите первое значение списка.

4. Для перехода на новую строку списка нажмите комбинацию клавиш <Ctrl>+<Enter>.

5. Введите следующее значение списка.

6. Повторяя пункты 4 и 5, сформируйте весь список.

Иногда для удобства пользователей требуется, чтобы при появлении формы на экране в списке по умолчанию было выделено наиболее часто выбираемое из него значение. Для установки значения, выбираемого по умолчанию, используется свойство Listindex. Например, вы хотите, чтобы при загрузке формы в списке, имеющем имя List1, выделялся четвертый элемент. В этом случае вам необходимо поместить в окно редактора кода следующее:

Private Sub Form Load()

List1.Listindex = 3

End Sub

Замечание

В коде вместо цифры 4, указывающей номер выделяемого элемента, содержится цифра 3, т. к. нумерация элементов списка начинается с 0.

Свойство Listindex применимо для списков обоих типов: обычных и раскрывающихся. Если для раскрывающегося списка не установлено используемое по умолчанию значение, то при появлении его на экране в поле, предназначенном для ввода значения списка, отображается текст Combol, задаваемый свойством Text и представляющий собой имя объекта. Если вы хотите, чтобы это поле при появлении списка на экране было пустым или содержало заданный вами текст, выделите свойство Text и в правом столбце удалите информацию, оставив поле пустым, или введите необходимый текст, соответственно.


Ch 3.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Пример создания приложения

В этой главе мы рассмотрели наиболее часто встречающиеся при создании приложения элементы управления. Более подробно свойства этих объектов описываются в главе 8. Сейчас рассмотрим создание простого приложения, состоящего из формы, представленной на рис. 3.25. Это приложение позволяет на основе введенных данных (длина и ширина дома, количество этажей, материал, из которого будет строиться дачный дом, и материал, используемый для крыши, сведения о том, будет ли у дома мансарда) произвести оценочную стоимость строящегося дачного домика.

Как видно из рисунка, форма содержит:

  • текстовую информацию пояснительного характера;
  • текстовые поля для ввода длины, ширины дома и количества этажей;
  • флажок, используемый для указания, будет ли дом содержать мансарду;
  • список, позволяющий выбрать используемый кровельный материал;
  • раскрывающийся список для выбора материала, из которого будут строиться стены;
  • кнопка, при нажатии на которую будут производиться расчеты стоимости дачного дома;
  • поле, размещенное в нижней части формы с правой стороны кнопки, предназначено для отображения вычисленной стоимости.

Рис. 3.25. Пример приложения, позволяющего производить вычисления на основе введенных данных

Для создания приложения, представленного на рис. 3.25, выполните следующие действия:

1. Чтобы создать новое приложение, в меню File (Файл) выберите команду New Project (Новый проект). Откроется окно Project с расположенной в нем новой формой.

2. Увеличьте размер формы, чтобы в ней поместились все элементы управления. Для этого установите курсор в нижний правый угол и, когда он примет вид двунаправленной стрелки, перемещайте его вниз и вправо до получения необходимого размера.

3. Для ввода заголовка формы, размещаемого в строке заголовка, откройте окно свойств. Затем выделите свойство Caption (Надпись) и введите в правом столбце вместо Form1 следующий текст: Расчет стоимости дачного домика.

4. Можно приступать к размещению в форме элементов управления. Сначала создадим заголовок, располагаемый в верхней части формы. Нажмите кнопку Label на панели элементов управления, установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера. Скорректируйте свойство caption созданного объекта, введя Размер дачного домика.

5. Для размещения в форме текстового поля, предназначенного для ввода длины дачного домика, нажмите кнопку TextBox (Текстовое поле) на панели элементов управления. Затем установите курсор в форму и нарисуйте рамку требуемого размера.

• Используя свойство Name, введите имя поля, например, txtLength. Оно будет использоваться при проведении расчетов стоимости домика.

Совет Всем элементам управления, размещенным в форме, желательно присвоить осмысленные имена. Тогда при работе в окне свойств, окне редактора кода при написании процедур у вас не будет путаницы с именами объектов.

• Информация, отображаемая в текстовом поле, задается свойством Text. Если вы хотите, чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение Text1. Можно также ввести в это свойство числовое значение наиболее вероятной длины домика.

6. Аналогичным образом разместите в форме поля, предназначенные для ввода ширины домика и количества этажей.

7. Для указания, будет ли дачный домик содержать мансарду, разместим в форме флажок. Нажмите кнопку CheckBox на панели элементов управления, установите курсор в форме и нарисуйте рамку требуемого размера. После этого настройте следующие свойства:

  • скорректируйте свойство Caption, введя в его правом столбце Мансарда,
  • если вы хотите, чтобы флажок по умолчанию был установлен, задайте для свойства value значение Checked.

8. Выбор кровельного материала будет осуществляться из обычного списка. Для его размещения в форме нажмите кнопку ListBox на панели элементов управления, установите курсор в форму и нарисуйте рамку необходимого размера. Чтобы сформировать список материалов, воспользуйтесь свойством List. Для этого нажмите кнопку со стрелкой, расположенную в правом столбце свойства, и введите весь список. Для перехода на следующую строку списка используйте комбинацию клавиш <Ctrl>+<Enter>.

9. Для выбора материала, из которого будут строиться стены садового домика, создадим в форме раскрывающийся список. Списком данного типа удобно воспользоваться, т. к. перечень материалов займет слишком много места в форме. Чтобы создать в форме раскрывающийся список, нажмите кнопку ComboBox на панели элементов управления, установите курсор в форме и нарисуйте рамку необходимого размера. Для ввода списка воспользуйтесь также свойством List, как и для обычного списка.

10. Создайте для всех размещенных в форме элементов управления надписи, воспользовавшись для этого кнопкой Label на панели инструментов.

11. Все элементы управления, предназначающиеся для ввода информации, находятся в форме. Теперь осталось создать кнопку и текстовое поле для отображения расчетных данных. Сначала создайте текстовое поле и надпись к нему. Для поля задайте следующие свойства:

  • используя свойство Name, введите имя поля, например, txtSum,
  • информация, отображаемая в текстовом поле, задается свойством Text. Чтобы при запуске формы на выполнение поле было пустым, удалите из правого столбца данного свойства находящееся там по умолчанию значение;
  • поле предназначено только для просмотра информации, поэтому для свойства Locked установите значение True.

12. Для создания кнопки воспользуйтесь инструментом Command Button на панели элементов управления:

  • используя свойство caption, введите название кнопки Расчет стоимости;
  • для изменения шрифта и начертания надписи, воспользуйтесь диалоговым окном Выбор шрифта свойства Font;
  • чтобы задать процедуру обработки события click, дважды щелкните на кнопке и в открывшемся окне редактора кода создайте процедуру вычисления стоимости дачного домика в зависимости от введенных параметров. Присвойте полученное значение свойству Text объекта txtSum.

13. Создание приложения завершено. Запустите его на выполнение, нажав клавишу <F5> или выбрав команду Start из меню Run.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 4 Управление проектом

Основным понятием для Visual Basic 6 при разработке приложении является проект. Все приложения создаются как проекты и хранятся в файлах с расширением vbp. Создавая любое приложение, даже самое простое, вы всегда работаете с проектом Visual Basic.

В Visual Basic проект — это контейнер, в котором находятся все требуемые формы приложения и другие визуальные элементы вместе с программным кодом. Таким образом можно сказать, что проект является средством интеграции визуальных и программных компонентов приложения. Кроме этого, к проекту можно подключить библиотеки DLL, компоненты сторонних разработчиков с помощью окон ссылок References (Ссылки) и компонентов Components (Компоненты).

В Visual Basic 6 вы можете работать с группой проектов, что расширяет возможности работы с ними. Группа проектов — это файл с расширением vbg, аналог проекта проектов, в котором собраны вместе несколько проектов. Это полезное свойство Visual Basic 6 на практике может служить для разделения проекта на отдельные варианты. Например, один проект группы можно использовать как основной рабочий проект, поставляемый пользователям. Для этого проекта создается исполняемый файл очередной версии приложения. Второй проект может быть предназначен для тестирования и отладки приложения. После накопления изменений в приложении, предназначенном для отладки, они переносятся в основной проект, поставляемый заказчику. Третий проект группы может служить для экспериментов по повышению производительности приложения и так далее. В слаженной группе программистов работу над каждым из таких проектов вполне реально разделить между несколькими разработчиками для повышения эффективности работы над проектом. Однако в этой главе все внимание будет уделено проекту, а о группе проектов лишь скажем, что такая возможность в Visual Basic есть и ее можно использовать.

Все элементы проекта — формы, диалоговые окна, программные модули, относящиеся к одному проекту, рекомендуется хранить в отдельной папке, созданной специально для этого проекта. Это самый простой, но не самый лучший способ организации работы с проектом. В Visual Basic 6 есть более сложные, но надежные и правильно организованные способы работы с проектом. В том числе и инструменты для групповой работы над сложными проектами. Более современный и правильный подход к хранению и организации работы с проектами состоит в использовании специальных инструментальных средств управления проектами, например, SourceSafe. Эти средства обеспечивают надежное хранение проектов в специальном хранилище проектов, называемым репозитарием, возможность групповой работы над одним проектом, автоматически поддерживают актуальность версий проекта и его элементов, исключают возможность дублирования работы в группе программистов.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Структура проекта

Проект обеспечивает взаимодействие всех элементов приложения и поэтому, как всякий организованный определенным образом объект, имеет свою внутреннюю структуру. Ниже приведен пример структуры проекта:

Project: MyProject

Module: MyMain

Form: Customer

Control LabelCustomerName

Control LabelOutstandingBalance

Control TextCustomerName

Control TextOutstandingBalance

Form: Invoice

Control LabelCustomerName

Control LabelInvoiceDate

Control LabelPastDueCharges

Control LabelCurrentCharges

Control LabelTotalCharges

Control TextCustomerName

Control TextInvoiceDate

Control TeApastDueCharges

Control TextCurrentCharges

Control TextTotalCharges

Control FrameInvoiceCopies

Control: CheckboxAccountSupervisor

Control: CheckboxRegionalCreditDept

Control: CheckboxCollectionsDept

Control: CommandPrintInvoice

Control: CommandSaveWithoutPrint

Control: CommandCancelInvoice

В данном случае проект состоит из программного модуля и двух форм с элементами управления. Элементы управления, в соответствии со структурой проекта, тоже могут быть вложенными.

Из текста примера хорошо видно, что структура проекта представляет собой иерархическое дерево, корнем которого является сам проект. Ветвями дерева являются такие элементы проекта, как формы, диалоговые окна, программные модули и другие файлы. Листьями, входящими в ветви, являются элементы управления и другие объекты форм и элементов проекта уровня форм.

Для работы со структурой проекта в среде проектирования Visual Basic 6 имеются специальные инструментальные средства, в которых она наглядно представлена: проводник проекта и браузер объектов. Структура проекта содержит ссылки на его элементы, а именно:

  • файлы форм, имеющие расширение frm. Для каждой формы создается отдельный файл. При этом необходимо помнить, что для проекта в стиле MDI можно подключать только одну форму типа MDI-окна;
  • двоичные файлы свойств элементов управления для каждой формы, имеющие расширение frx. Такие файлы создаются автоматически для форм, содержащих элементы управления, характеризующиеся свойствами picture (Изображение) и icon (Значок);
  • файлы для каждого модуля классов, имеющие расширение els;
  • файлы для каждого программного модуля с расширением bas;
  • файлы элементов управления ActiveX, имеющие расширение осх;
  • файл ресурсов с расширением res;
  • библиотечные файлы;
  • файлы компонентов.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проводник проекта

При работе с проектом удобнее всего работать в проводнике проекта. В этом окне наглядно видна структура проекта со всеми элементами разрабатываемого приложения (рис. 4.1).

Рис. 4.1. Проводник проекта

В окне проводника проекта можно выполнять все действия, необходимые при проектировании приложении с файлами элементов проекта:

  • добавлять файлы элементов проекта: формы, модули, классы модулей и т. д.;
  • исключать элементы из проекта;
  • редактировать;
  • сохранять элементы проекта.

Чтобы добавить в проект форму, модуль, файл и другие элементы, необходимо выполнить следующие действия:

  1. Выбрать команду Add (Добавить) с указанием соответствующего типа файла из меню Project (Проект). Например, для формы это команда Add Form (Добавить форму), для программного модуля — Add Module (Добавить модуль).
  2. В появившемся диалоговом окне выбрать требуемый элемент. После этого элемент проекта появляется в проводнике проекта.

Для исключения элемента из проекта достаточно просто выделить в проводнике требуемый элемент и выполнить команду Remove (Исключить) меню Project (Проект) или выбрать одноименную команду из контекстною меню, появляющегося при установке курсора на данном элементе и нажатии правой кнопки мыши.

Для редактирования элемента проекта необходимо выделить его в окне проводника и выполнить команду Object (Объект) меню View (Вид) или нажать правую кнопку мыши и выбрать из появившегося контекстного меню команду View Object. Но самый простой способ — дважды щелкнуть на объекте. При этом будет вызван соответствующий инструмент среды разработки с выбранным элементом для внесения изменений. Для форм и диалоговых окон это конструктор форм, для программных модулей — редактор. Для редактирования программного кода визуальных объектов можно использовать команду Code (Код) из меню View (Вид) или команду View Code контекстного меню.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование браузера объектов для просмотра структуры проекта

В Visual Basic 6 проводник проекта не является единственным средством работы со структурой проекта. Удобным дополнительным инструментом является Object Browser (Браузер объектов). Для просмотра структуры проекта в окне браузера объектов из списка, расположенного в верхнем левом углу, выберите имя открытого проекта (рис. 4.2).

Рис. 4.2. Браузер проекта

Браузер объектов предоставляет доступ к свойствам, методам и событиям объектов, входящих в проект. В этом окне можно выполнять текстовый поиск заданного значения в пределах всего проекта.

Для запуска браузера можно воспользоваться одним из следующих способов:

  • выполнить команду Object Browser (Браузер объектов) меню View (Вид);
  • нажать кнопку Object Browser на стандартной панели инструментов;
  • нажать клавишу <F2>. Браузер содержит элементы управления, которые перечислены в табл. 4.1.

Таблица 4.1. Элементы управления object Browser
Элемент | Назначение
Project/Library (Проект/Библиотека) | Список выбора библиотеки или проекта. Предоставляет возможность выбора интересующей темы из списка библиотек или проекта
Search Text (Значение для поиска) | Список значений для текстового поиска. Позволяет совместно с кнопкой поиска и кнопкой показа/подавления результатов поиска найти объекты, в которых встречается заданное значение
 | Кнопка Go Back (Назад). Перемещает указатель активной строки на предыдущую выбранную позицию в списках Classes (Классы) и Members (Состав)
 | Кнопка Go Forward (Вперед). Перемещает указатель активной строки на следующую позицию из выбранных ранее в списках Classes и Members
 | Кнопка Copy to Clipboard (Копировать в буфер). Копирует выделенный объект списка Members в буфер обмена Windows
 | Кнопка View Definition (Показать код). Открывает окно редактирования кода выбранного в списках Classes и Members объекта
 | Кнопка Help (Справка). Открывает тему справочной системы Visual Basic 6 для выбранного объекта
 | Кнопка Search (Поиск). Запускает поиск текста, введенного в списке поиска, и открывает после выполнения поиска список итогов поиска Search Results (Итоги поиска)
 | Кнопка Show/Hide Search Results (Показать/Скрыть результаты поиска). Открывает и скрывает список Search Results результатов поиска
Список Classes | Показывает элементы проекта и библиотек
Список Members | Показывает объекты, процедуры, события, константы элементов проекта и библиотек
Список Search Results | Выводит результаты проведенного текстового поиска в проекте или библиотеках
Область описания | Отображает краткое описание выбранного объекта

В поле списка, предназначенного для текстового поиска, текст вводится вручную с клавиатуры. При этом необходимо иметь в виду, что в этом списке хранятся тексты четырех последних поисков.

После выполнения поиска появляется дополнительный список итогов поиска Search Results (Итоги поиска), в котором отображаются все объекты, соответствующие искомому тексту (рис. 4.3).

Рис. 4.3. Браузер проекта с результатом проведенного поиска

Кнопка Help (Справка) позволяет получить результат только для тех объектов и элементов этих объектов, описание которых есть в справочной системе. Для разработанных при проектировании форм, конечно, никакого обращения к справочной системе не будет. Но если выбрать свойство или метод этой формы, то будет вызвана справочная система с соответствующей справкой по выбранному свойству, методу или другой теме, которая есть в справочной системе.

Окно браузера и окно проводника при работе над проектом дополняют друг друга. В проводнике более наглядна иерархия проекта и из него запускается визуальное проектирование объектов, а в браузере подробно представлен состав элементов проекта, библиотек, классов. В окне Object Browser удобно работать с объектами более низкого уровня, чем формы, диалоговые окна, файлы проекта. Из окна браузера запускается редактор кода объектов, запуск визуального проектирования здесь недоступен.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 4 Управление проектом

Основным понятием для Visual Basic 6 при разработке приложении является проект. Все приложения создаются как проекты и хранятся в файлах с расширением vbp. Создавая любое приложение, даже самое простое, вы всегда работаете с проектом Visual Basic.

В Visual Basic проект — это контейнер, в котором находятся все требуемые формы приложения и другие визуальные элементы вместе с программным кодом. Таким образом можно сказать, что проект является средством интеграции визуальных и программных компонентов приложения. Кроме этого, к проекту можно подключить библиотеки DLL, компоненты сторонних разработчиков с помощью окон ссылок References (Ссылки) и компонентов Components (Компоненты).

В Visual Basic 6 вы можете работать с группой проектов, что расширяет возможности работы с ними. Группа проектов — это файл с расширением vbg, аналог проекта проектов, в котором собраны вместе несколько проектов. Это полезное свойство Visual Basic 6 на практике может служить для разделения проекта на отдельные варианты. Например, один проект группы можно использовать как основной рабочий проект, поставляемый пользователям. Для этого проекта создается исполняемый файл очередной версии приложения. Второй проект может быть предназначен для тестирования и отладки приложения. После накопления изменений в приложении, предназначенном для отладки, они переносятся в основной проект, поставляемый заказчику. Третий проект группы может служить для экспериментов по повышению производительности приложения и так далее. В слаженной группе программистов работу над каждым из таких проектов вполне реально разделить между несколькими разработчиками для повышения эффективности работы над проектом. Однако в этой главе все внимание будет уделено проекту, а о группе проектов лишь скажем, что такая возможность в Visual Basic есть и ее можно использовать.

Все элементы проекта — формы, диалоговые окна, программные модули, относящиеся к одному проекту, рекомендуется хранить в отдельной папке, созданной специально для этого проекта. Это самый простой, но не самый лучший способ организации работы с проектом. В Visual Basic 6 есть более сложные, но надежные и правильно организованные способы работы с проектом. В том числе и инструменты для групповой работы над сложными проектами. Более современный и правильный подход к хранению и организации работы с проектами состоит в использовании специальных инструментальных средств управления проектами, например, SourceSafe. Эти средства обеспечивают надежное хранение проектов в специальном хранилище проектов, называемым репозитарием, возможность групповой работы над одним проектом, автоматически поддерживают актуальность версий проекта и его элементов, исключают возможность дублирования работы в группе программистов.

Структура проекта

Проект обеспечивает взаимодействие всех элементов приложения и поэтому, как всякий организованный определенным образом объект, имеет свою внутреннюю структуру. Ниже приведен пример структуры проекта:

Project: MyProject

Module: MyMain

Form: Customer

Control LabelCustomerName

Control LabelOutstandingBalance

Control TextCustomerName

Control TextOutstandingBalance

Form: Invoice

Control LabelCustomerName

Control LabelInvoiceDate

Control LabelPastDueCharges

Control LabelCurrentCharges

Control LabelTotalCharges

Control TextCustomerName

Control TextInvoiceDate

Control TeApastDueCharges

Control TextCurrentCharges

Control TextTotalCharges

Control FrameInvoiceCopies

Control: CheckboxAccountSupervisor

Control: CheckboxRegionalCreditDept

Control: CheckboxCollectionsDept

Control: CommandPrintInvoice

Control: CommandSaveWithoutPrint

Control: CommandCancelInvoice

В данном случае проект состоит из программного модуля и двух форм с элементами управления. Элементы управления, в соответствии со структурой проекта, тоже могут быть вложенными.

Из текста примера хорошо видно, что структура проекта представляет собой иерархическое дерево, корнем которого является сам проект. Ветвями дерева являются такие элементы проекта, как формы, диалоговые окна, программные модули и другие файлы. Листьями, входящими в ветви, являются элементы управления и другие объекты форм и элементов проекта уровня форм.

Для работы со структурой проекта в среде проектирования Visual Basic 6 имеются специальные инструментальные средства, в которых она наглядно представлена: проводник проекта и браузер объектов. Структура проекта содержит ссылки на его элементы, а именно:

  • файлы форм, имеющие расширение frm. Для каждой формы создается отдельный файл. При этом необходимо помнить, что для проекта в стиле MDI можно подключать только одну форму типа MDI-окна;
  • двоичные файлы свойств элементов управления для каждой формы, имеющие расширение frx. Такие файлы создаются автоматически для форм, содержащих элементы управления, характеризующиеся свойствами picture (Изображение) и icon (Значок);
  • файлы для каждого модуля классов, имеющие расширение els;
  • файлы для каждого программного модуля с расширением bas;
  • файлы элементов управления ActiveX, имеющие расширение осх;
  • файл ресурсов с расширением res;
  • библиотечные файлы;
  • файлы компонентов.

Проводник проекта

При работе с проектом удобнее всего работать в проводнике проекта. В этом окне наглядно видна структура проекта со всеми элементами разрабатываемого приложения (рис. 4.1).

Рис. 4.1. Проводник проекта

В окне проводника проекта можно выполнять все действия, необходимые при проектировании приложении с файлами элементов проекта:

  • добавлять файлы элементов проекта: формы, модули, классы модулей и т. д.;
  • исключать элементы из проекта;
  • редактировать;
  • сохранять элементы проекта.

Чтобы добавить в проект форму, модуль, файл и другие элементы, необходимо выполнить следующие действия:

  1. Выбрать команду Add (Добавить) с указанием соответствующего типа файла из меню Project (Проект). Например, для формы это команда Add Form (Добавить форму), для программного модуля — Add Module (Добавить модуль).
  2. В появившемся диалоговом окне выбрать требуемый элемент. После этого элемент проекта появляется в проводнике проекта.

Для исключения элемента из проекта достаточно просто выделить в проводнике требуемый элемент и выполнить команду Remove (Исключить) меню Project (Проект) или выбрать одноименную команду из контекстною меню, появляющегося при установке курсора на данном элементе и нажатии правой кнопки мыши.

Для редактирования элемента проекта необходимо выделить его в окне проводника и выполнить команду Object (Объект) меню View (Вид) или нажать правую кнопку мыши и выбрать из появившегося контекстного меню команду View Object. Но самый простой способ — дважды щелкнуть на объекте. При этом будет вызван соответствующий инструмент среды разработки с выбранным элементом для внесения изменений. Для форм и диалоговых окон это конструктор форм, для программных модулей — редактор. Для редактирования программного кода визуальных объектов можно использовать команду Code (Код) из меню View (Вид) или команду View Code контекстного меню.

Использование браузера объектов для просмотра структуры проекта

В Visual Basic 6 проводник проекта не является единственным средством работы со структурой проекта. Удобным дополнительным инструментом является Object Browser (Браузер объектов). Для просмотра структуры проекта в окне браузера объектов из списка, расположенного в верхнем левом углу, выберите имя открытого проекта (рис. 4.2).

Рис. 4.2. Браузер проекта

Браузер объектов предоставляет доступ к свойствам, методам и событиям объектов, входящих в проект. В этом окне можно выполнять текстовый поиск заданного значения в пределах всего проекта.

Для запуска браузера можно воспользоваться одним из следующих способов:

  • выполнить команду Object Browser (Браузер объектов) меню View (Вид);
  • нажать кнопку Object Browser на стандартной панели инструментов;
  • нажать клавишу <F2>. Браузер содержит элементы управления, которые перечислены в табл. 4.1.

Таблица 4.1. Элементы управления object Browser
Элемент | Назначение
Project/Library (Проект/Библиотека) | Список выбора библиотеки или проекта. Предоставляет возможность выбора интересующей темы из списка библиотек или проекта
Search Text (Значение для поиска) | Список значений для текстового поиска. Позволяет совместно с кнопкой поиска и кнопкой показа/подавления результатов поиска найти объекты, в которых встречается заданное значение
 | Кнопка Go Back (Назад). Перемещает указатель активной строки на предыдущую выбранную позицию в списках Classes (Классы) и Members (Состав)
 | Кнопка Go Forward (Вперед). Перемещает указатель активной строки на следующую позицию из выбранных ранее в списках Classes и Members
 | Кнопка Copy to Clipboard (Копировать в буфер). Копирует выделенный объект списка Members в буфер обмена Windows
 | Кнопка View Definition (Показать код). Открывает окно редактирования кода выбранного в списках Classes и Members объекта
 | Кнопка Help (Справка). Открывает тему справочной системы Visual Basic 6 для выбранного объекта
 | Кнопка Search (Поиск). Запускает поиск текста, введенного в списке поиска, и открывает после выполнения поиска список итогов поиска Search Results (Итоги поиска)
 | Кнопка Show/Hide Search Results (Показать/Скрыть результаты поиска). Открывает и скрывает список Search Results результатов поиска
Список Classes | Показывает элементы проекта и библиотек
Список Members | Показывает объекты, процедуры, события, константы элементов проекта и библиотек
Список Search Results | Выводит результаты проведенного текстового поиска в проекте или библиотеках
Область описания | Отображает краткое описание выбранного объекта

В поле списка, предназначенного для текстового поиска, текст вводится вручную с клавиатуры. При этом необходимо иметь в виду, что в этом списке хранятся тексты четырех последних поисков.

После выполнения поиска появляется дополнительный список итогов поиска Search Results (Итоги поиска), в котором отображаются все объекты, соответствующие искомому тексту (рис. 4.3).

Рис. 4.3. Браузер проекта с результатом проведенного поиска

Кнопка Help (Справка) позволяет получить результат только для тех объектов и элементов этих объектов, описание которых есть в справочной системе. Для разработанных при проектировании форм, конечно, никакого обращения к справочной системе не будет. Но если выбрать свойство или метод этой формы, то будет вызвана справочная система с соответствующей справкой по выбранному свойству, методу или другой теме, которая есть в справочной системе.

Окно браузера и окно проводника при работе над проектом дополняют друг друга. В проводнике более наглядна иерархия проекта и из него запускается визуальное проектирование объектов, а в браузере подробно представлен состав элементов проекта, библиотек, классов. В окне Object Browser удобно работать с объектами более низкого уровня, чем формы, диалоговые окна, файлы проекта. Из окна браузера запускается редактор кода объектов, запуск визуального проектирования здесь недоступен.

Свойства проекта

Visual Basic 6 предоставляет возможность редактировать свойства проекта с помощью диалогового окна свойств проекта Project Properties (рис. 4.4). Для открытия этого окна необходимо в меню Project (Проект) выбрать команду <Имя проекта> Properties (Свойства проекта).

Рис. 4.4. Вкладка General окна свойств проекта

Диалоговое окно Project Properties состоит из пяти вкладок (рис. 4.4):

  • General (Основные) — основные свойства;
  • Make (Создать) — свойства создаваемого приложения;
  • Compile (Компиляция) — условия компиляции проекта;
  • Component (Компоненты) — параметры компонентов ActiveX проекта;
  • Debugging (Отладка) — параметры отладки проекта.

Вкладка General

Вкладка General диалогового окна Project Properties позволяет задать основные свойства проекта. На этой вкладке можно указать тип проекта, выбрав требуемое значение из раскрывающегося списка Project Type (Тип проекта). В этом списке содержатся следующие типы проектов:

  • Standard EXE — стандартный выполняемый файл приложения;
  • ActiveX EXE — выполняемый файл ActiveX;
  • ActiveX DLL — библиотека ActiveX;
  • ActiveX Component — компонент ActiveX.

В раскрывающемся списке Startup Object (Объект запуска) можно выбрать объект проекта, который будет выполняться при запуске приложения первым. По умолчанию Visual Basic запускает первое созданное окно проекта. Однако это не всегда подходит и порой требуется первым запустить другое окно или предварительно выполнить некоторую процедуру. Для указания первого выполняемого объекта используется раскрывающийся список Startup Object, в котором указаны все формы и диалоговые окна проекта. Используя значение Sub Main этого списка, можно назначить выполнение процедуры до загрузки диалоговых окон и форм. При этом работа приложения начнется с процедуры Main. Понятно, что в этом случае такая процедура должна быть создана и находиться в проекте.

В поле Project Name (Имя проекта) вкладки General можно ввести полное имя проекта. Дополнительные примечания или пояснения к проекту вводятся в поле примечаний или пояснений к проекту Project Description (Описание проекта).

Обязательной частью любого коммерческого приложения является справочная система. Разработка справочной системы выполняется с помощью специальных программ, и ее создание рассматривается в отдельной главе книги. Для подключения справочной системы к проекту используется поле Help File Name (Имя файла справки). Имя справочной системы можно ввести вручную или вызвать окно выбора и найти требуемый файл справочной системы. При этом в поле Project Help Context ID (Идентификатор содержания справки) необходимо ввести идентификатор содержания справки.

Для параметров компонентов ActiveX используется область Threading Model (Подпроцессы модели). Здесь можно задать дополнительные настройки, касающиеся работы компонентов ActiveX.

Вкладка Make

На вкладке Make (Создать) диалогового окна Project Properties задаются атрибуты создаваемого приложения (рис. 4.5). В области Version Number (Номер версии) можно задать номер версии приложения, состоящий из трех частей, используя для этого поля Major (Основной), Minor (Дополнительный) и Revision (Номер сборки приложения, номер релиза). Обычно номер приложения начинается с 1.0.0 и далее увеличивается, начиная с номера сборки приложения. Интервал значений всех трех полей от 0 до 9999. Здесь же можно установить признак автоматического увеличения номера версии, используя флажок Auto Increment (Автоувеличение). В этом случае номер сборки будет автоматически увеличиваться при каждой компиляции проекта.

Рис. 4.5. Вкладка Make окна свойств проекта

Совет

Желательно поддерживать нумерацию версий проекта. Это существенно облегчает техническую поддержку приложения и при соответствующем документировании изменений от версии к версии поможет отслеживать наличие у пользователей последней версии вашего приложения.

В области Application (Приложение) вкладки Make задаются внешние атрибуты приложения. В поле Title (Заголовок) — имя проекта приложения. В поле Icon (Значок) выбирается значок для приложения.

Кроме номера версии и номера сборки, на вкладке Make можно указать более подробные сведения о версии в области Version Information (Информация о версии). Для этого в списке Type (Тип) выбирается параметр, а в поле Value (Значение) задается его значение.

Список Type содержит следующие параметры:

  • Comments (Комментарии) — примечания и пояснения к приложению;
  • Company Name (Наименование предприятия) — название фирмы или организации, которой принадлежат права на приложение;
  • File Description (Описание файла) — описание приложения;
  • Legal Copyright (Авторские права) — авторские права на приложения, которые оформляются, как правило, в общепринятой для программ форме. Например, MyOraDataApp Версия 3.2.7 Copyright 1999 Иванов И. И. Все права защищены;
  • Legal Trademark (Торговая марка) — информация о торговой марке организации или разработчика;
  • Product Name (Наименование продукта) — полное имя приложения. Например, краткое имя проекта MyOraDataApp можно здесь расшифровать как My Database Application for Oracle.

Часто возникает необходимость запускать приложение с некоторыми параметрами по аналогии с запуском исполняемого файла в DOS или в диалоговом окне Запуск программы системы Windows, открываемом при выборе команды Выполнить меню Пуск:

MyOraDataApp.exe dbname,username,password.

Для этого служит поле Command Line Arguments (Параметры строки команд). В нем можно ввести любое, ограниченное только размером поля, количество параметров, передаваемых приложению при запуске. Полю Command Line Arguments соответствует системная переменная command$ и при запуске приложения содержимое поля передается в эту переменную. Проанализировав в программе переменную command$ и используя условные конструкции, можно выполнить автоматический выбор действий приложения в зависимости от параметров запуска. В данном случае при запуске файла MyOraDataApp.exe можно сразу подключаться к требуемой базе данных без открытия диалогового окна, содержащего запрос на присоединение. Строку dbname, username, password можно проанализировать, выделить имена базы данных, пользователя и пароль и выполнить соединение с базой данных. Соответственно, если параметров не будет, то есть строка Command Line Arguments, а значит, и переменная Command$ не будут содержать значений, можно вызывать диалоговое окно ввода имени базы данных, пользователя и пароля доступа к базе данных.

Поле Conditional Compilation Arguments позволяет организовать условную компиляцию приложения. Имеется в виду следующее. Например, необходимо, чтобы приложение MyOraDataApp работало не только с базами данных Oracle, но и с Microsoft SQL. Для этого можно использовать команды препроцессора для организации условной компиляции: #If ... #Then ... #Else ... #End. Например:

# If DBPlatforma = 0

DBType = 'ORACLE'

#Else

DBType = 'MS_SQL'

#End If

Если в поле Conditional Compilation Arguments ввести значение ' DBPlatforma = 0', то при компиляции приложения переменной DBType будет присвоено значение 'ORACLE' и приложение будет скомпилировано для работы с базами Oracle. Для этого, конечно, уже в исходном коде приложения необходимо выполнить соответствующий анализ переменной DBType. При вводе в поле Conditional Compilation Arguments значения 'DBPlatforma = 1' компилируется приложение для работы с базами данных Microsoft SQL.

Замечание

Фактически, содержимое поля Conditional Compilation Arguments (Дополнительные параметры компиляции) соответствует команде препроцессора #Const, которая объявляет переменную и присваивает ей значение.

Вкладка Compile

Вкладка Compile (Компиляция) диалогового окна Project Properties (рис. 4.6) позволяет установить один из двух возможных вариантов компиляции приложения: в Р-код или во внутренний код исполняемого файла (с расширением ехе) приложения. В первом случае необходимо выбрать опцию Compile to P-Code (Компиляция в Р-код), во втором, соответственно, опцию Compile to Native Code (Компиляция во внутренний код). При выборе второго варианта становятся доступными флажки и опции режимов компиляции во внутренний код компьютера.

Рис. 4.6. Вкладка Compile окна свойств проекта

Приложение в Р-коде не является полностью скомпилированным в настоящем понимании компиляции. Р-код — это псевдокод, который распознает интерпретатор реального времени Visual Basic VBRUN300.DLL, VBRUN500.DLL или VBRUN600.DLL. Приложение при этом может работать только при поддержке этих интерпретаторов, то есть без среды разработки, но не самостоятельно, как исполняемый файл.

Замечание

Приложение, скомпилированное в Р-код, работает медленнее выполняемого файла, поскольку при работе приложения сначала происходит интерпретация команды и лишь затем ее выполнение. Однако Р-код имеет и одно неплохое преимущество. Компиляция занимает Гораздо меньше времени, поэтому можно чаще проверять реальную работу приложения, что очень удобно при разработке и отладке приложения.

При компиляции в машинный код создается файл приложения, для работы которого не требуется среда Visual Basic б и интерпретаторы реального времени. На вкладке Compile для компиляции в машинный код можно настроить дополнительные параметры компиляции:

  • Optimize to Fast Code (Оптимизация на скорость) — увеличивается скорость работы исполняемого файла. При установке этой опции программа работает быстрее, но файл занимает больше места на диске;
  • Optimize to Small Code (Оптимизация размера кода) — уменьшается размер исполняемого файла приложения за счет уменьшения скорости работы;
  • Favor Pentium Pro (tm) (Оптимизировано для Pentium Pro) — оптимизация исполняемого файла под возможности процессора Pentium Pro. Данная опция используется в том случае, если заранее известно, что версия приложения будет работать на процессоре данного типа;
  • Create Symbolic Debug Info (Создание информации для отладки) — создание одновременно с исполняемым файлом специального текстового отладочного файла с расширением pdb. Формат этого файла понимают некоторые другие компиляторы (например, Visual C++);
  • No Optimization (Нет оптимизации) — компиляция без оптимизации.

Дополнительно можно назначить расширенную оптимизацию компиляции приложения. Для этого необходимо воспользоваться кнопкой Advanced Optimization (Расширенная оптимизация). При этом вызывается одноименное диалоговое окно (рис. 4.7).

В диалоговом окне Advanced Optimizations можно настроить дополнительные параметры оптимизации, используя следующие флажки:

  • Assume No Aliasing (He использовать псевдонимы) — установка этого флажка сообщает компилятору, что в программе не используются псевдонимы. В этом случае компилятор может хранить переменные в регистрах и выполнить оптимизацию циклов;
  • Remove Array Bounds Checks (He проверять размеры массивов) — при установке флажка не осуществляется проверка размеров массивов;
  • Remove Integer Overflow Checks (He проводить проверку переполнения целых чисел) — при установке флажка не проводится проверка переполнения целочисленных переменных;
  • Remove Floating Point Error Checks (He проводить проверку операций с плавающей точкой) — при установке флажка Visual Basic не проводит проверки ошибок, связанных с нарушением правильности представления чисел с плавающей точкой;
  • Allow Unrounded Floating Point Operations (Применять операции с плавающей точкой без округления) — при установке флажка выполнение операций с плавающей точкой осуществляется без округления;
  • Remove Safe Pentium(tm) FDIV Checks (He проверять безопасность Pentium FDIV) — при установке флажка не проводится проверка безопасного деления с плавающей точкой на процессоре Pentium.

Рис. 4.7. Диалоговое окно Advanced Optimizations для настройки параметров расширенной оптимизации

Вкладка Component

Вкладка Component (Компоненты) диалогового окна Project Properties предназначена, в основном, для работы с приложениями, в которых используются компоненты ActiveX (рис. 4.8).

Замечание

Настройки вкладки Component становятся доступными при создании приложений с компонентами ActiveX. Для таких приложений на вкладке General (Основная) диалогового окна Project Properties из списка Project Type (Тип проекта) должно быть выбрано значение ActiveX.EXE, ActiveX.DLL или ActiveX Control.

Рис. 4.8. Вкладка Component окна свойств проекта

В области Start Mode (Режим запуска) вкладки можно указать режим запуска приложения, установив одну из следующих опций:

  • Standalone (Стандартное) — приложение запускается как стандартный исполняемый файл;
  • ActiveX Component (Компонент ActiveX) — приложение запускается как сервер ActiveX.

Флажок Remote Server Files (Удаленный сервер файлов) задает параметры для удаленного запуска приложения в реестре Windows. При установке этого флажка создается файл с расширением vbr для хранения информации реестра и DLL-файл. Оба этих файла необходимы для запуска сервера ActiveX удаленного компьютера. Этот флажок доступен только в Visual Basic 6 (Enterprise Edition).

Опции области Version Compatibility (Совместимость версий) дают возможность обеспечить совместимость разрабатываемых компонентов ActiveX с версиями приложения. Область содержит следующие опции:

  • No Compatibility (Без совместимости) — совместимость не поддерживается;
  • Project Compatibility (Совместимость проекта) — совместимость на уровне проекта. При установке этой опции становится доступным поле, предназначенное для указания расположения и имени совместимого файла;
  • Binary Compatibility (Двоичная совместимость) — совместимость проектов, использующих разработанные ActiveX-компоненты, на уровне двоичных файлов.

Вкладка Debugging

Вкладка Debugging (Отладка) диалогового окна Project Properties предоставляет возможность задать некоторые параметры среды IDE для отладки приложения в режиме запуска (рис. 4.9). Параметры этой вкладки предназначены также для разработки приложений, использующих компоненты ActiveX. Для приложений типа Standard EXE настройки этой вкладки недоступны.

Рис. 4.9. Вкладка Debugging окна свойств проекта

На вкладке расположена одна область When this project starts (При запуске проекта), в составе которой следующие параметры:

  • Wait for components to be created (Ожидание для компонентов) — в режиме выполнения от среды разработки не требуется никаких действий;
  • Start component (Запустить компоненты) — необходимо предварительно запустить выбранные компоненты;
  • Start program (Запустить программу) — необходимо предварительно запустить выбранную программу;
  • Start browser with URL (Запустить браузер с адресом) — необходимо запустить браузер Internet и открыть указанную в поле Web-страницу;
  • Use existing browser (Использовать браузер) — при отладке будет использоваться имеющийся браузер.

Использование в проекте внешних библиотек объектов

Для быстрой разработки приложения важно уметь использовать готовые разработки других программистов вашей фирмы или разработки сторонних фирм, подключая требуемые объекты к разрабатываемому приложению. Такая возможность предоставляется диалоговым окном References (Ссылки), содержащим ссылки на библиотеки объектов (рис. 4.10).

Рис. 4.10. Окно ссылок проекта для присоединения библиотек

Для открытия диалогового окна References необходимо выполнить команду References (Ссылки) меню Project (Проект).

Подключение библиотеки при помощи этого диалогового окна выполняется достаточно просто. Необходимо в списке доступных библиотек Available References (Доступные ссылки) установить флажки рядом с именами требуемых библиотек. Для отключения ненужной библиотеки следует снять флажок, переместив курсор к установленному флажку рядом с именем библиотеки и щелкнув кнопкой мыши.

Совет

При отключении библиотеки необходимо предварительно удалить из программного кода приложения все ссылки на процедуры и функции удаляемой библиотеки, а также все используемые из удаляемой библиотеки элементы управления.

Поскольку список подключаемых библиотек достаточно длинный, имеет смысл наиболее часто используемые библиотеки расположить в верхних строчках этого списка. Для изменения порядка следования библиотек служат кнопки, расположенные справа от списка Available References. Чтобы переместить имя библиотеки на позицию вверх, необходимо его выделить и нажать кнопку со стрелкой вверх. Для перемещения имени библиотеки вниз по списку предназначена кнопка с направленной вниз стрелкой.

Для добавления в список Available References дополнительной библиотеки необходимо воспользоваться кнопкой Browse (Просмотр). При этом открывается диалоговое окно добавления ссылок, в котором можно найти требуемую библиотеку и нажатием кнопки Открыть переместить в список.

Использование в проекте внешних компонентов

Аналогично присоединению библиотек, в Visual Basic 6 имеется средство для присоединения компонентов (элементов управления). Это — диалоговое окно Components (Компоненты), содержащее список доступных компонентов (рис. 4.11). Часть из этих компонентов — стандартные, уже присутствует на панели элементов управления среды проектирования.

Рис. 4.11. Окно стандартных компонентов и компонентов независимых разработчиков

Для вызова окна Components необходимо выполнить команду Components меню Project. Подключаются компоненты аналогично внешним ссылкам установкой флажка справа от выбранного компонента.

Для фильтрации компонентов по признаку "выбранные/невыбранные" можно использовать флажок Selected Items Only (Только выбранные пункты). Если флажок установлен, в окне будут только отмеченные компоненты.

Файл ресурсов

Файл ресурсов проекта приложения имеет расширение res и служит для хранения информации (текста, значков, растровых изображений), изменение которой не требует редактирования кода. Возможность работы с файлом ресурсов — это одна из новинок Visual Basic 6. В предыдущих версиях приходилось использовать для этого Visual C++. Очень удобно, что все эти данные находятся в одном файле. Это обеспечивает дополнительные возможности для гибкой локализации приложения, совместимости версий приложения, хранения параметров конфигурации версий приложения.

Замечание

Необходимо иметь в виду, что для приложения может быть только один файл ресурсов.

Рис. 4.12. Окно редактора файла ресурсов

Любой ресурс можно добавить в файл ресурсов, удалить из него или отредактировать его. Для этого предназначен редактор ресурсов Resource Editor (Редактор ресурсов) инструментальной среды проектирования (рис. 4.12). Для вызова редактора можно воспользоваться одним из следующих способов:

  • выбрать в меню Tools (Сервис) команду Resource Editor (Редактор ресурсов):
  • нажать кнопку Resource Editor на стандартной панели инструментов.

    Совет

    Если на панели инструментов нет соответствующего значка или в меню нет команды, их можно подключить с помощью диалогового окна Add-In Manager (Управление надстройками), вызываемого из главного меню одноименной командой. В этом окне необходимо для элемента VB 6 Resource Editor списка надстроек установить флажок Loaded/Unloaded. Следует заметить, что все это можно сделать, если редактор ресурсов Resource Editor установлен при инсталляции Visual Basic 6.

С помощью Resource Editor можно выполнить следующие действия:

  • добавить файл ресурсов в проект. Для этого достаточно в редакторе ресурсов создать новый или открыть существующий файл ресурсов. В проводнике проекта ресурсы при этом будут автоматически подключены к группе Related Documents (Связанные документы);
  • добавить новую таблицу, курсор, растровое графическое изображение, значок, пользовательский ресурс в открытый файл ресурсов;
  • изменить свойства ресурсов внутри файла;
  • удалить ресурс из файла ресурсов.

В Visual Basic можно работать с файлом ресурсов в исходном коде программы, используя следующие функции:

Функция | Назначение
LoadResString | Возвращает текстовые строки
LoadResPicture | Возвращает объекты типа ярлыков, значков или курсоров
LoadResData | Возвращает массив данных

Из рисунков с окнами редактирования ресурсов (рис. 4.13 и 4.14) наглядно видно, что по коду (идентификатору) ресурса при помощи указанных функций можно выбрать любое строковое значение, изображение или другой ресурс из файла ресурсов в качестве параметра настройки приложения. Используя такой подход, можно организовать гибкую настройку приложения.

Рис. 4.13. Диалоговое окно редактирования ярлыка из файла ресурсов

Рис. 4.14. Диалоговое окно редактирования текстовой таблицы из файла ресурсов

Создание исполняемого файла проекта

После завершения проектирования проекта, тестирования и отладки его в среде Visual Basic наступает завершающий этап — компиляция, то есть создание независимого от среды исполняемого файла (с расширением ехе), библиотеки динамической компоновки (с расширением dll) или компонента ActiveX (с расширением осх).

Для запуска процесса компиляции и создания исполняемого файла проекта приложения необходимо выполнить следующие действия:

1. Настроить параметры компиляции на вкладках Make (Создать) и Compile (Компиляция) диалогового окна Project Properties свойств проекта.

2. Выполнить команду Make <имя проекта>.ехе меню File (Файл). При этом появляется диалоговое окно Make Project (рис. 4.15).

3. В поле Имя файла диалогового окна Make Project (Создать проект) ввести имя исполняемого файла или оставить имя, предлагаемое Visual Basic по умолчанию исходя из имени проекта.

4. Нажать кнопку Options (Параметры) и в открывшемся диалоговом окне Project Properties свойств проекта ввести номер версии исполняемого файла.

5. Нажатием кнопки ОК запустить процесс компиляции.

Рис. 4.15. Диалоговое окно Make Project

После успешного завершения процесса компиляции проект готов к независимой работе без среды Visual Basic 6.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства проекта

Visual Basic 6 предоставляет возможность редактировать свойства проекта с помощью диалогового окна свойств проекта Project Properties (рис. 4.4). Для открытия этого окна необходимо в меню Project (Проект) выбрать команду <Имя проекта> Properties (Свойства проекта).

Рис. 4.4. Вкладка General окна свойств проекта

Диалоговое окно Project Properties состоит из пяти вкладок (рис. 4.4):

  • General (Основные) — основные свойства;
  • Make (Создать) — свойства создаваемого приложения;
  • Compile (Компиляция) — условия компиляции проекта;
  • Component (Компоненты) — параметры компонентов ActiveX проекта;
  • Debugging (Отладка) — параметры отладки проекта.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка General

Вкладка General диалогового окна Project Properties позволяет задать основные свойства проекта. На этой вкладке можно указать тип проекта, выбрав требуемое значение из раскрывающегося списка Project Type (Тип проекта). В этом списке содержатся следующие типы проектов:

  • Standard EXE — стандартный выполняемый файл приложения;
  • ActiveX EXE — выполняемый файл ActiveX;
  • ActiveX DLL — библиотека ActiveX;
  • ActiveX Component — компонент ActiveX.

В раскрывающемся списке Startup Object (Объект запуска) можно выбрать объект проекта, который будет выполняться при запуске приложения первым. По умолчанию Visual Basic запускает первое созданное окно проекта. Однако это не всегда подходит и порой требуется первым запустить другое окно или предварительно выполнить некоторую процедуру. Для указания первого выполняемого объекта используется раскрывающийся список Startup Object, в котором указаны все формы и диалоговые окна проекта. Используя значение Sub Main этого списка, можно назначить выполнение процедуры до загрузки диалоговых окон и форм. При этом работа приложения начнется с процедуры Main. Понятно, что в этом случае такая процедура должна быть создана и находиться в проекте.

В поле Project Name (Имя проекта) вкладки General можно ввести полное имя проекта. Дополнительные примечания или пояснения к проекту вводятся в поле примечаний или пояснений к проекту Project Description (Описание проекта).

Обязательной частью любого коммерческого приложения является справочная система. Разработка справочной системы выполняется с помощью специальных программ, и ее создание рассматривается в отдельной главе книги. Для подключения справочной системы к проекту используется поле Help File Name (Имя файла справки). Имя справочной системы можно ввести вручную или вызвать окно выбора и найти требуемый файл справочной системы. При этом в поле Project Help Context ID (Идентификатор содержания справки) необходимо ввести идентификатор содержания справки.

Для параметров компонентов ActiveX используется область Threading Model (Подпроцессы модели). Здесь можно задать дополнительные настройки, касающиеся работы компонентов ActiveX.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Make

На вкладке Make (Создать) диалогового окна Project Properties задаются атрибуты создаваемого приложения (рис. 4.5). В области Version Number (Номер версии) можно задать номер версии приложения, состоящий из трех частей, используя для этого поля Major (Основной), Minor (Дополнительный) и Revision (Номер сборки приложения, номер релиза). Обычно номер приложения начинается с 1.0.0 и далее увеличивается, начиная с номера сборки приложения. Интервал значений всех трех полей от 0 до 9999. Здесь же можно установить признак автоматического увеличения номера версии, используя флажок Auto Increment (Автоувеличение). В этом случае номер сборки будет автоматически увеличиваться при каждой компиляции проекта.

Рис. 4.5. Вкладка Make окна свойств проекта

Совет

Желательно поддерживать нумерацию версий проекта. Это существенно облегчает техническую поддержку приложения и при соответствующем документировании изменений от версии к версии поможет отслеживать наличие у пользователей последней версии вашего приложения.

В области Application (Приложение) вкладки Make задаются внешние атрибуты приложения. В поле Title (Заголовок) — имя проекта приложения. В поле Icon (Значок) выбирается значок для приложения.

Кроме номера версии и номера сборки, на вкладке Make можно указать более подробные сведения о версии в области Version Information (Информация о версии). Для этого в списке Type (Тип) выбирается параметр, а в поле Value (Значение) задается его значение.

Список Type содержит следующие параметры:

  • Comments (Комментарии) — примечания и пояснения к приложению;
  • Company Name (Наименование предприятия) — название фирмы или организации, которой принадлежат права на приложение;
  • File Description (Описание файла) — описание приложения;
  • Legal Copyright (Авторские права) — авторские права на приложения, которые оформляются, как правило, в общепринятой для программ форме. Например, MyOraDataApp Версия 3.2.7 Copyright 1999 Иванов И. И. Все права защищены;
  • Legal Trademark (Торговая марка) — информация о торговой марке организации или разработчика;
  • Product Name (Наименование продукта) — полное имя приложения. Например, краткое имя проекта MyOraDataApp можно здесь расшифровать как My Database Application for Oracle.

Часто возникает необходимость запускать приложение с некоторыми параметрами по аналогии с запуском исполняемого файла в DOS или в диалоговом окне Запуск программы системы Windows, открываемом при выборе команды Выполнить меню Пуск:

MyOraDataApp.exe dbname,username,password.

Для этого служит поле Command Line Arguments (Параметры строки команд). В нем можно ввести любое, ограниченное только размером поля, количество параметров, передаваемых приложению при запуске. Полю Command Line Arguments соответствует системная переменная command$ и при запуске приложения содержимое поля передается в эту переменную. Проанализировав в программе переменную command$ и используя условные конструкции, можно выполнить автоматический выбор действий приложения в зависимости от параметров запуска. В данном случае при запуске файла MyOraDataApp.exe можно сразу подключаться к требуемой базе данных без открытия диалогового окна, содержащего запрос на присоединение. Строку dbname, username, password можно проанализировать, выделить имена базы данных, пользователя и пароль и выполнить соединение с базой данных. Соответственно, если параметров не будет, то есть строка Command Line Arguments, а значит, и переменная Command$ не будут содержать значений, можно вызывать диалоговое окно ввода имени базы данных, пользователя и пароля доступа к базе данных.

Поле Conditional Compilation Arguments позволяет организовать условную компиляцию приложения. Имеется в виду следующее. Например, необходимо, чтобы приложение MyOraDataApp работало не только с базами данных Oracle, но и с Microsoft SQL. Для этого можно использовать команды препроцессора для организации условной компиляции: #If ... #Then ... #Else ... #End. Например:

# If DBPlatforma = 0

DBType = 'ORACLE'

#Else

DBType = 'MS_SQL'

#End If

Если в поле Conditional Compilation Arguments ввести значение ' DBPlatforma = 0', то при компиляции приложения переменной DBType будет присвоено значение 'ORACLE' и приложение будет скомпилировано для работы с базами Oracle. Для этого, конечно, уже в исходном коде приложения необходимо выполнить соответствующий анализ переменной DBType. При вводе в поле Conditional Compilation Arguments значения 'DBPlatforma = 1' компилируется приложение для работы с базами данных Microsoft SQL.

Замечание

Фактически, содержимое поля Conditional Compilation Arguments (Дополнительные параметры компиляции) соответствует команде препроцессора #Const, которая объявляет переменную и присваивает ей значение.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Compile

Вкладка Compile (Компиляция) диалогового окна Project Properties (рис. 4.6) позволяет установить один из двух возможных вариантов компиляции приложения: в Р-код или во внутренний код исполняемого файла (с расширением ехе) приложения. В первом случае необходимо выбрать опцию Compile to P-Code (Компиляция в Р-код), во втором, соответственно, опцию Compile to Native Code (Компиляция во внутренний код). При выборе второго варианта становятся доступными флажки и опции режимов компиляции во внутренний код компьютера.

Рис. 4.6. Вкладка Compile окна свойств проекта

Приложение в Р-коде не является полностью скомпилированным в настоящем понимании компиляции. Р-код — это псевдокод, который распознает интерпретатор реального времени Visual Basic VBRUN300.DLL, VBRUN500.DLL или VBRUN600.DLL. Приложение при этом может работать только при поддержке этих интерпретаторов, то есть без среды разработки, но не самостоятельно, как исполняемый файл.

Замечание

Приложение, скомпилированное в Р-код, работает медленнее выполняемого файла, поскольку при работе приложения сначала происходит интерпретация команды и лишь затем ее выполнение. Однако Р-код имеет и одно неплохое преимущество. Компиляция занимает Гораздо меньше времени, поэтому можно чаще проверять реальную работу приложения, что очень удобно при разработке и отладке приложения.

При компиляции в машинный код создается файл приложения, для работы которого не требуется среда Visual Basic б и интерпретаторы реального времени. На вкладке Compile для компиляции в машинный код можно настроить дополнительные параметры компиляции:

  • Optimize to Fast Code (Оптимизация на скорость) — увеличивается скорость работы исполняемого файла. При установке этой опции программа работает быстрее, но файл занимает больше места на диске;
  • Optimize to Small Code (Оптимизация размера кода) — уменьшается размер исполняемого файла приложения за счет уменьшения скорости работы;
  • Favor Pentium Pro (tm) (Оптимизировано для Pentium Pro) — оптимизация исполняемого файла под возможности процессора Pentium Pro. Данная опция используется в том случае, если заранее известно, что версия приложения будет работать на процессоре данного типа;
  • Create Symbolic Debug Info (Создание информации для отладки) — создание одновременно с исполняемым файлом специального текстового отладочного файла с расширением pdb. Формат этого файла понимают некоторые другие компиляторы (например, Visual C++);
  • No Optimization (Нет оптимизации) — компиляция без оптимизации.

Дополнительно можно назначить расширенную оптимизацию компиляции приложения. Для этого необходимо воспользоваться кнопкой Advanced Optimization (Расширенная оптимизация). При этом вызывается одноименное диалоговое окно (рис. 4.7).

В диалоговом окне Advanced Optimizations можно настроить дополнительные параметры оптимизации, используя следующие флажки:

  • Assume No Aliasing (He использовать псевдонимы) — установка этого флажка сообщает компилятору, что в программе не используются псевдонимы. В этом случае компилятор может хранить переменные в регистрах и выполнить оптимизацию циклов;
  • Remove Array Bounds Checks (He проверять размеры массивов) — при установке флажка не осуществляется проверка размеров массивов;
  • Remove Integer Overflow Checks (He проводить проверку переполнения целых чисел) — при установке флажка не проводится проверка переполнения целочисленных переменных;
  • Remove Floating Point Error Checks (He проводить проверку операций с плавающей точкой) — при установке флажка Visual Basic не проводит проверки ошибок, связанных с нарушением правильности представления чисел с плавающей точкой;
  • Allow Unrounded Floating Point Operations (Применять операции с плавающей точкой без округления) — при установке флажка выполнение операций с плавающей точкой осуществляется без округления;
  • Remove Safe Pentium(tm) FDIV Checks (He проверять безопасность Pentium FDIV) — при установке флажка не проводится проверка безопасного деления с плавающей точкой на процессоре Pentium.

Рис. 4.7. Диалоговое окно Advanced Optimizations для настройки параметров расширенной оптимизации


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Component

Вкладка Component (Компоненты) диалогового окна Project Properties предназначена, в основном, для работы с приложениями, в которых используются компоненты ActiveX (рис. 4.8).

Замечание

Настройки вкладки Component становятся доступными при создании приложений с компонентами ActiveX. Для таких приложений на вкладке General (Основная) диалогового окна Project Properties из списка Project Type (Тип проекта) должно быть выбрано значение ActiveX.EXE, ActiveX.DLL или ActiveX Control.

Рис. 4.8. Вкладка Component окна свойств проекта

В области Start Mode (Режим запуска) вкладки можно указать режим запуска приложения, установив одну из следующих опций:

  • Standalone (Стандартное) — приложение запускается как стандартный исполняемый файл;
  • ActiveX Component (Компонент ActiveX) — приложение запускается как сервер ActiveX.

Флажок Remote Server Files (Удаленный сервер файлов) задает параметры для удаленного запуска приложения в реестре Windows. При установке этого флажка создается файл с расширением vbr для хранения информации реестра и DLL-файл. Оба этих файла необходимы для запуска сервера ActiveX удаленного компьютера. Этот флажок доступен только в Visual Basic 6 (Enterprise Edition).

Опции области Version Compatibility (Совместимость версий) дают возможность обеспечить совместимость разрабатываемых компонентов ActiveX с версиями приложения. Область содержит следующие опции:

  • No Compatibility (Без совместимости) — совместимость не поддерживается;
  • Project Compatibility (Совместимость проекта) — совместимость на уровне проекта. При установке этой опции становится доступным поле, предназначенное для указания расположения и имени совместимого файла;
  • Binary Compatibility (Двоичная совместимость) — совместимость проектов, использующих разработанные ActiveX-компоненты, на уровне двоичных файлов.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вкладка Debugging

Вкладка Debugging (Отладка) диалогового окна Project Properties предоставляет возможность задать некоторые параметры среды IDE для отладки приложения в режиме запуска (рис. 4.9). Параметры этой вкладки предназначены также для разработки приложений, использующих компоненты ActiveX. Для приложений типа Standard EXE настройки этой вкладки недоступны.

Рис. 4.9. Вкладка Debugging окна свойств проекта

На вкладке расположена одна область When this project starts (При запуске проекта), в составе которой следующие параметры:

  • Wait for components to be created (Ожидание для компонентов) — в режиме выполнения от среды разработки не требуется никаких действий;
  • Start component (Запустить компоненты) — необходимо предварительно запустить выбранные компоненты;
  • Start program (Запустить программу) — необходимо предварительно запустить выбранную программу;
  • Start browser with URL (Запустить браузер с адресом) — необходимо запустить браузер Internet и открыть указанную в поле Web-страницу;
  • Use existing browser (Использовать браузер) — при отладке будет использоваться имеющийся браузер.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование в проекте внешних библиотек объектов

Для быстрой разработки приложения важно уметь использовать готовые разработки других программистов вашей фирмы или разработки сторонних фирм, подключая требуемые объекты к разрабатываемому приложению. Такая возможность предоставляется диалоговым окном References (Ссылки), содержащим ссылки на библиотеки объектов (рис. 4.10).

Рис. 4.10. Окно ссылок проекта для присоединения библиотек

Для открытия диалогового окна References необходимо выполнить команду References (Ссылки) меню Project (Проект).

Подключение библиотеки при помощи этого диалогового окна выполняется достаточно просто. Необходимо в списке доступных библиотек Available References (Доступные ссылки) установить флажки рядом с именами требуемых библиотек. Для отключения ненужной библиотеки следует снять флажок, переместив курсор к установленному флажку рядом с именем библиотеки и щелкнув кнопкой мыши.

Совет

При отключении библиотеки необходимо предварительно удалить из программного кода приложения все ссылки на процедуры и функции удаляемой библиотеки, а также все используемые из удаляемой библиотеки элементы управления.

Поскольку список подключаемых библиотек достаточно длинный, имеет смысл наиболее часто используемые библиотеки расположить в верхних строчках этого списка. Для изменения порядка следования библиотек служат кнопки, расположенные справа от списка Available References. Чтобы переместить имя библиотеки на позицию вверх, необходимо его выделить и нажать кнопку со стрелкой вверх. Для перемещения имени библиотеки вниз по списку предназначена кнопка с направленной вниз стрелкой.

Для добавления в список Available References дополнительной библиотеки необходимо воспользоваться кнопкой Browse (Просмотр). При этом открывается диалоговое окно добавления ссылок, в котором можно найти требуемую библиотеку и нажатием кнопки Открыть переместить в список.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование в проекте внешних компонентов

Аналогично присоединению библиотек, в Visual Basic 6 имеется средство для присоединения компонентов (элементов управления). Это — диалоговое окно Components (Компоненты), содержащее список доступных компонентов (рис. 4.11). Часть из этих компонентов — стандартные, уже присутствует на панели элементов управления среды проектирования.

Рис. 4.11. Окно стандартных компонентов и компонентов независимых разработчиков

Для вызова окна Components необходимо выполнить команду Components меню Project. Подключаются компоненты аналогично внешним ссылкам установкой флажка справа от выбранного компонента.

Для фильтрации компонентов по признаку "выбранные/невыбранные" можно использовать флажок Selected Items Only (Только выбранные пункты). Если флажок установлен, в окне будут только отмеченные компоненты.


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Файл ресурсов

Файл ресурсов проекта приложения имеет расширение res и служит для хранения информации (текста, значков, растровых изображений), изменение которой не требует редактирования кода. Возможность работы с файлом ресурсов — это одна из новинок Visual Basic 6. В предыдущих версиях приходилось использовать для этого Visual C++. Очень удобно, что все эти данные находятся в одном файле. Это обеспечивает дополнительные возможности для гибкой локализации приложения, совместимости версий приложения, хранения параметров конфигурации версий приложения.

Замечание

Необходимо иметь в виду, что для приложения может быть только один файл ресурсов.

Рис. 4.12. Окно редактора файла ресурсов

Любой ресурс можно добавить в файл ресурсов, удалить из него или отредактировать его. Для этого предназначен редактор ресурсов Resource Editor (Редактор ресурсов) инструментальной среды проектирования (рис. 4.12). Для вызова редактора можно воспользоваться одним из следующих способов:

  • выбрать в меню Tools (Сервис) команду Resource Editor (Редактор ресурсов):
  • нажать кнопку Resource Editor на стандартной панели инструментов.

    Совет

    Если на панели инструментов нет соответствующего значка или в меню нет команды, их можно подключить с помощью диалогового окна Add-In Manager (Управление надстройками), вызываемого из главного меню одноименной командой. В этом окне необходимо для элемента VB 6 Resource Editor списка надстроек установить флажок Loaded/Unloaded. Следует заметить, что все это можно сделать, если редактор ресурсов Resource Editor установлен при инсталляции Visual Basic 6.

С помощью Resource Editor можно выполнить следующие действия:

  • добавить файл ресурсов в проект. Для этого достаточно в редакторе ресурсов создать новый или открыть существующий файл ресурсов. В проводнике проекта ресурсы при этом будут автоматически подключены к группе Related Documents (Связанные документы);
  • добавить новую таблицу, курсор, растровое графическое изображение, значок, пользовательский ресурс в открытый файл ресурсов;
  • изменить свойства ресурсов внутри файла;
  • удалить ресурс из файла ресурсов.

В Visual Basic можно работать с файлом ресурсов в исходном коде программы, используя следующие функции:

Функция | Назначение
LoadResString | Возвращает текстовые строки
LoadResPicture | Возвращает объекты типа ярлыков, значков или курсоров
LoadResData | Возвращает массив данных

Из рисунков с окнами редактирования ресурсов (рис. 4.13 и 4.14) наглядно видно, что по коду (идентификатору) ресурса при помощи указанных функций можно выбрать любое строковое значение, изображение или другой ресурс из файла ресурсов в качестве параметра настройки приложения. Используя такой подход, можно организовать гибкую настройку приложения.

Рис. 4.13. Диалоговое окно редактирования ярлыка из файла ресурсов

Рис. 4.14. Диалоговое окно редактирования текстовой таблицы из файла ресурсов


ch4.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание исполняемого файла проекта

После завершения проектирования проекта, тестирования и отладки его в среде Visual Basic наступает завершающий этап — компиляция, то есть создание независимого от среды исполняемого файла (с расширением ехе), библиотеки динамической компоновки (с расширением dll) или компонента ActiveX (с расширением осх).

Для запуска процесса компиляции и создания исполняемого файла проекта приложения необходимо выполнить следующие действия:

1. Настроить параметры компиляции на вкладках Make (Создать) и Compile (Компиляция) диалогового окна Project Properties свойств проекта.

2. Выполнить команду Make <имя проекта>.ехе меню File (Файл). При этом появляется диалоговое окно Make Project (рис. 4.15).

3. В поле Имя файла диалогового окна Make Project (Создать проект) ввести имя исполняемого файла или оставить имя, предлагаемое Visual Basic по умолчанию исходя из имени проекта.

4. Нажать кнопку Options (Параметры) и в открывшемся диалоговом окне Project Properties свойств проекта ввести номер версии исполняемого файла.

5. Нажатием кнопки ОК запустить процесс компиляции.

Рис. 4.15. Диалоговое окно Make Project

После успешного завершения процесса компиляции проект готов к независимой работе без среды Visual Basic 6.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 5. Основные элементы программирования.

В этой главе рассмотрим основные средства Visual Basic, используемые при создании программ.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переменные

Переменная представляет собой зарезервированное место в оперативной памяти для временного хранения данных. Каждая переменная имеет собственное имя. После того как переменной присвоено значение, вы можете использовать ее в программе вместо самого значения.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Имена переменных

Для того чтобы сделать ваши переменные более наглядными и простыми для чтения, рекомендуется давать им имена, имеющие определенное смысловое значение. Существует несколько правил задания имен переменных;

  • имя переменной может содержать не более 255 символов;
  • имя переменной может содержать любые буквы и цифры;
  • первый символ в имени переменной должен быть буквой;
  • в имени переменной должны отсутствовать пробелы;
  • имя должно быть уникальным в пределах области видимости.

Замечание

Список ограничений достаточно велик, чтобы знать его наизусть, но вам всегда поможет проверка синтаксиса программы, при выполнении которой будет указано на использование недопустимых имен.

Например, допустимы следующие имена переменных:

CurrentNum, Total, Date_of_birth

Следующие имена недопустимы:

1Time, $Total, Date of birth

В последнее время в наименованиях переменных рекомендуется использовать префиксы, отражающие тип переменной. При таком обозначении переменных повышается читабельность программы и снижается количество ошибок программирования. Префиксы отражают тип переменной и область ее действия. С конкретными значениями префиксов вы познакомитесь в разделах, посвященных типам данных и области действия переменной.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Типы данных

В Visual Basic вы можете применять следующие типы данных:

  • числовой (integer, Long, Single, Double, Currency);
  • строковый (String);
  • типа дата (Date);
  • байтовый (Byte);
  • логический (Boolean);
  • произвольный (variant);
  • объектный (object).

Для хранения чисел в Visual Basic используется пять разных типов данных. Для хранения целочисленных данных предназначены типы integer и Long. Первый из них служит для хранения целых чисел в диапазоне от —32768 до 32767 и занимает в оперативной памяти два байта. Для хранения больших целочисленных значений в диапазоне от —2 147483648 до 2 147483648 следует выбрать тип данных Long. В этом случае для хранения переменной выделяется 4 байта. Аналогично, для хранения десятичных чисел с плавающей точкой предназначены типы данных single и Double. Переменная с типом данных single занимает 4 байта и может принимать значения в диапазоне -3,4^38 ... -1,4^-45 для отрицательных чисел и 1,4^-45 ... 3,4^38 для положительных чисел. Если этого диапазона вам недостаточно, используйте десятичные числа с плавающей точкой двойной точности, определяя для них тип данных Double. В этом случае переменной выделяется 8 байтов, которых достаточно для хранения чисел в диапазоне -1,7^-308 ... -4,9^-324 для отрицательных чисел и 4,9^-324 ... l,7^+308 для положительных чисел. Для хранения чисел с фиксированной точкой служит тип currency. Переменная данного типа занимает в оперативной памяти 8 байт. Целая часть числа может содержать до 15 цифр, а дробная — до 4.

Используя переменные строкового типа, вы можете хранить строки как фиксированной (до 216 символов), так и переменной длины (до 231 символов). Для переменной, имеющей тип строки с фиксированной длиной, указывается максимальная длина строки. Если длина строки, присваиваемая этой переменной, меньше заданной длины строки, то оставшиеся свободные места заполняются пробелами. При присвоении переменной строки, количество символов которой превышает максимальное значение, все лишние символы отбрасываются. Количество символов, хранящихся в строке с переменной длиной, определяется длиной присваиваемых ей данных. При использовании ASCCII кодировки для каждого символа строки выделяется один байт, а при использовании кодировки Unicode — два байта. Кроме этого выделяется 10 байт для строки в целом.

Для хранения двоичных данных рекомендуется использовать массив переменных типа Byte. Каждый элемент массива данного типа занимает один байт оперативной памяти.

Логический тип данных Boolean используется для хранения данных, принимающих одно из двух значений: True (Правда) или False (Ложь). По умолчанию переменной данного типа присваивается значение False. В оперативной памяти она занимает два байта.

Тип данных Date используется для хранения даты и времени. Переменная этого типа требует 8 байт в оперативной памяти.

Тип данных Variant является универсальным. Переменная этого типа может хранить любой из выше описанных типов данных. Все необходимые преобразования выполняются при присвоении переменной значения. Выделяемый переменной объем оперативной памяти зависит от типа присвоенного значения, но не может быть менее 16 байт.

Для хранения ссылок на объекты используется тип данных object. Каждая переменная данного типа требует 4 байта.

При разработке программ в среде Visual Basic в зависимости от типа данных переменных рекомендуется использовать префиксы, приведенные в табл. 5.1.

Таблица 5.1. Префиксы, используемые в наименованиях'переменных
Тип данных | Префикс | Пример
Boolean | bin | bInSuccess
Byte | byt | bytImage
Currency | cur | curPrice
Date | dtm | dtmFinish
Double | dbl | dblSum
Integer | int | intQuantity
Long | Ing | IngTotal
Single | sng | sngLength
String | str | strLastname
Variant | vnt | vntValue


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объявление переменной

В Visual Basic используется явное и неявное объявление переменной. Явное объявление осуществляется операторами Dim, private, Static, public, которые имеют следующий синтаксис:

Dim имяПеременной [As типДанных]

Private имяПеременной [As типДанных]

Static имяПеременной [As типДанных]

Public имяПеременной [As типДанных]

Операторы Dim, Private, static, public определяют область действия переменной. С помощью одного оператора вы можете объявлять несколько переменных, разделяя их запятыми. Примеры объявления переменных приведены ниже:

Private bInSuccess As Boolean

Dim strLastname As String, dblSum As Double

Большинство строк, с которыми приходится работать в Visual Basic, являются строками переменной длины, то есть они могут иметь длину до 2 Гбайт. Длина такой строки изменяется при присвоении ей нового значения. Но в Visual Basic существуют и строки с фиксированной длиной. Их длина остается неизменной независимо от присвоенного ей значения. Если такой переменной присваивается значение, меньшее объявленной для нее длины, то оставшаяся часть переменной заполняется пробелами. При присвоении значения, превышающего длину строки, она усекается до размера переменной.

Для объявления строки с фиксированной длиной используется следующий синтаксис:

Dim имяПеременной As String * длинаПеременной

Параметр длинаПеременной указывает максимальное количество символов, отводимое переменной. Символ звездочки (*) указывает на то, что переменная имеет фиксированную длину.

Предпочтительнее использовать явное объявление переменных, поэтому рекомендуется установить такой режим трансляции программы, при котором допускается только явное объявление переменных. Для этого необходимо в начало модуля вставить оператор option Explicit (Явное объявление). Для автоматического добавления во все модули данного оператора в окне программы Visual Basic выполните команду Options (Параметры) меню Tools (Сервис). Откроется диалоговое окно Options, на вкладке Editor (рис. 5.1) которого установите флажок Require Variable Declaration.

Рис. 5.1. Диалоговое окно Options

Если вы не разместили в модуле оператор Option Explicit, можете использовать неявное объявление переменной. В этом случае тип переменной определяется при первом операторе присвоения, и в этот же момент переменной будет выделена память. Если вы не используете специальные концевые символы, определяющие тип переменной, ей будет присвоен тип variant.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 5. Основные элементы программирования.

В этой главе рассмотрим основные средства Visual Basic, используемые при создании программ.

Переменные

Переменная представляет собой зарезервированное место в оперативной памяти для временного хранения данных. Каждая переменная имеет собственное имя. После того как переменной присвоено значение, вы можете использовать ее в программе вместо самого значения.

Имена переменных

Для того чтобы сделать ваши переменные более наглядными и простыми для чтения, рекомендуется давать им имена, имеющие определенное смысловое значение. Существует несколько правил задания имен переменных;

  • имя переменной может содержать не более 255 символов;
  • имя переменной может содержать любые буквы и цифры;
  • первый символ в имени переменной должен быть буквой;
  • в имени переменной должны отсутствовать пробелы;
  • имя должно быть уникальным в пределах области видимости.

Замечание

Список ограничений достаточно велик, чтобы знать его наизусть, но вам всегда поможет проверка синтаксиса программы, при выполнении которой будет указано на использование недопустимых имен.

Например, допустимы следующие имена переменных:

CurrentNum, Total, Date_of_birth

Следующие имена недопустимы:

1Time, $Total, Date of birth

В последнее время в наименованиях переменных рекомендуется использовать префиксы, отражающие тип переменной. При таком обозначении переменных повышается читабельность программы и снижается количество ошибок программирования. Префиксы отражают тип переменной и область ее действия. С конкретными значениями префиксов вы познакомитесь в разделах, посвященных типам данных и области действия переменной.

Типы данных

В Visual Basic вы можете применять следующие типы данных:

  • числовой (integer, Long, Single, Double, Currency);
  • строковый (String);
  • типа дата (Date);
  • байтовый (Byte);
  • логический (Boolean);
  • произвольный (variant);
  • объектный (object).

Для хранения чисел в Visual Basic используется пять разных типов данных. Для хранения целочисленных данных предназначены типы integer и Long. Первый из них служит для хранения целых чисел в диапазоне от —32768 до 32767 и занимает в оперативной памяти два байта. Для хранения больших целочисленных значений в диапазоне от —2 147483648 до 2 147483648 следует выбрать тип данных Long. В этом случае для хранения переменной выделяется 4 байта. Аналогично, для хранения десятичных чисел с плавающей точкой предназначены типы данных single и Double. Переменная с типом данных single занимает 4 байта и может принимать значения в диапазоне -3,4^38 ... -1,4^-45 для отрицательных чисел и 1,4^-45 ... 3,4^38 для положительных чисел. Если этого диапазона вам недостаточно, используйте десятичные числа с плавающей точкой двойной точности, определяя для них тип данных Double. В этом случае переменной выделяется 8 байтов, которых достаточно для хранения чисел в диапазоне -1,7^-308 ... -4,9^-324 для отрицательных чисел и 4,9^-324 ... l,7^+308 для положительных чисел. Для хранения чисел с фиксированной точкой служит тип currency. Переменная данного типа занимает в оперативной памяти 8 байт. Целая часть числа может содержать до 15 цифр, а дробная — до 4.

Используя переменные строкового типа, вы можете хранить строки как фиксированной (до 216 символов), так и переменной длины (до 231 символов). Для переменной, имеющей тип строки с фиксированной длиной, указывается максимальная длина строки. Если длина строки, присваиваемая этой переменной, меньше заданной длины строки, то оставшиеся свободные места заполняются пробелами. При присвоении переменной строки, количество символов которой превышает максимальное значение, все лишние символы отбрасываются. Количество символов, хранящихся в строке с переменной длиной, определяется длиной присваиваемых ей данных. При использовании ASCCII кодировки для каждого символа строки выделяется один байт, а при использовании кодировки Unicode — два байта. Кроме этого выделяется 10 байт для строки в целом.

Для хранения двоичных данных рекомендуется использовать массив переменных типа Byte. Каждый элемент массива данного типа занимает один байт оперативной памяти.

Логический тип данных Boolean используется для хранения данных, принимающих одно из двух значений: True (Правда) или False (Ложь). По умолчанию переменной данного типа присваивается значение False. В оперативной памяти она занимает два байта.

Тип данных Date используется для хранения даты и времени. Переменная этого типа требует 8 байт в оперативной памяти.

Тип данных Variant является универсальным. Переменная этого типа может хранить любой из выше описанных типов данных. Все необходимые преобразования выполняются при присвоении переменной значения. Выделяемый переменной объем оперативной памяти зависит от типа присвоенного значения, но не может быть менее 16 байт.

Для хранения ссылок на объекты используется тип данных object. Каждая переменная данного типа требует 4 байта.

При разработке программ в среде Visual Basic в зависимости от типа данных переменных рекомендуется использовать префиксы, приведенные в табл. 5.1.

Таблица 5.1. Префиксы, используемые в наименованиях'переменных
Тип данных | Префикс | Пример
Boolean | bin | bInSuccess
Byte | byt | bytImage
Currency | cur | curPrice
Date | dtm | dtmFinish
Double | dbl | dblSum
Integer | int | intQuantity
Long | Ing | IngTotal
Single | sng | sngLength
String | str | strLastname
Variant | vnt | vntValue

Объявление переменной

В Visual Basic используется явное и неявное объявление переменной. Явное объявление осуществляется операторами Dim, private, Static, public, которые имеют следующий синтаксис:

Dim имяПеременной [As типДанных]

Private имяПеременной [As типДанных]

Static имяПеременной [As типДанных]

Public имяПеременной [As типДанных]

Операторы Dim, Private, static, public определяют область действия переменной. С помощью одного оператора вы можете объявлять несколько переменных, разделяя их запятыми. Примеры объявления переменных приведены ниже:

Private bInSuccess As Boolean

Dim strLastname As String, dblSum As Double

Большинство строк, с которыми приходится работать в Visual Basic, являются строками переменной длины, то есть они могут иметь длину до 2 Гбайт. Длина такой строки изменяется при присвоении ей нового значения. Но в Visual Basic существуют и строки с фиксированной длиной. Их длина остается неизменной независимо от присвоенного ей значения. Если такой переменной присваивается значение, меньшее объявленной для нее длины, то оставшаяся часть переменной заполняется пробелами. При присвоении значения, превышающего длину строки, она усекается до размера переменной.

Для объявления строки с фиксированной длиной используется следующий синтаксис:

Dim имяПеременной As String * длинаПеременной

Параметр длинаПеременной указывает максимальное количество символов, отводимое переменной. Символ звездочки (*) указывает на то, что переменная имеет фиксированную длину.

Предпочтительнее использовать явное объявление переменных, поэтому рекомендуется установить такой режим трансляции программы, при котором допускается только явное объявление переменных. Для этого необходимо в начало модуля вставить оператор option Explicit (Явное объявление). Для автоматического добавления во все модули данного оператора в окне программы Visual Basic выполните команду Options (Параметры) меню Tools (Сервис). Откроется диалоговое окно Options, на вкладке Editor (рис. 5.1) которого установите флажок Require Variable Declaration.

Рис. 5.1. Диалоговое окно Options

Если вы не разместили в модуле оператор Option Explicit, можете использовать неявное объявление переменной. В этом случае тип переменной определяется при первом операторе присвоения, и в этот же момент переменной будет выделена память. Если вы не используете специальные концевые символы, определяющие тип переменной, ей будет присвоен тип variant.

Область действия переменных

При выполнении программы принципиальное значение имеет область действия выбранных переменных. Попытка использования переменных, которые не действуют в данном месте программы, приводит к ошибке программирования или же к неоднозначности результатов. В Visual Basic можно применять глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область действия в рамках всего модуля или отдельной процедуры.

Присваивая имена переменным с учетом области ее действия, придерживайтесь следующего формата:

Область действия переменной | Префикс | Пример
Глобальная | g | gdtmFinish
Локальная внутри модуля | m | msngLength
Локальная внутри процедуры | нет префикса | strLastname

Для создания переменной, которую вы хотите определить в качестве глобальной, в раздел General Declarations главного модуля приложения поместите оператор public. Например:

Public gdtmFinish As Date

Для объявления переменной, локальной внутри модуля или формы, используйте оператор private или Dim в разделе General Declarations модуля или формы (рис. 5.2). В этом случае объявленная переменная будет доступна для всех входящих в форму или модуль процедур, но в то же время недоступной в процедурах других модулей и форм.

Рис. 5.2. Объявление переменных, локальных на уровне модуля

Переменные, локальные на уровне процедуры, создаются операторами Dim или static внутри процедуры. Например:

Sub CalcTotal

Dim bSuccess As Boolean

. . .

End Sub

Присвоение значения переменной

Прежде чем использовать переменную в программе, ей необходимо присвоить значение. Самый простой способ присвоения заключается в использовании оператора присвоения "=", который имеет следующий синтаксис:

переменная = выражение

Аргумент переменная задает имя переменной, которой будет присвоено значение выражения, стоящего справа от знака равенства. Например:

sngFirst = 10

strLastname = "Иванов"

Справа от знака равенства может стоять не только константа, но и более сложное выражение. Например:

sngResult = sngFirst + 255

strName = "Иванов" & ": " & strTeam

Особенности использования переменных типа Variant

Переменную типа variant можно использовать для хранения всех типов данных и выполнять операции, не заботясь о типе данных, в них содержащихся. Необходимо только помнить о двух исключениях. Во-первых, выполнять арифметические операции или функции над переменной типа variant можно только в том случае, если она содержит числовое значение. Во-вторых, конкатенацию строк следует осуществлять с помощью оператора "&" вместо оператора "+".

Переменные типа variant могут содержать специальные значения Empty, Null или Error.

Значение Empty

До присвоения значения переменной типа variant ее значение отлично от О, пустой строки или значения Null и именуется Empty. Для определения значения Empty можно использовать функцию isEmpty:

If IsEmpty(x) Then x = 0

Замечание

Переменная типа variant имеет значение Empty только до первого присвоения ей какого-либо значения.

Значение Null

Переменная типа variant может иметь значение Null, используемое для указания пустых данных в приложениях, работающих с базами данных.

С помощью функции isNull можно проверить, имеет ли переменная типа variant значение Null:

If IsNull(x) Then

у = Null

Else

у = 0

End If

Для присвоения переменной типа variant значения Null можно использовать ключевое слово Null:

у = Null

Предупреждение

Присвоение значения Null переменной, не имеющей типа variant, приведет к ошибке.

При работе с переменной типа variant, имеющей значение Null, необходимо иметь в виду следующее:

  • если в выражении содержится переменная, имеющая значение Null, то само выражение принимает значение Null;
  • при использовании в качестве параметра функции переменной, имеющей значение Null, большинство функций возвращает значение Null.

Значение Error

Переменная типа variant может принимать значение Error при возникновении ошибки в процедуре. Однако в этом случае на уровне приложения ошибка не обрабатывается, что позволяет программисту в зависимости от ее значения предпринимать определенные действия.

Внутреннее представление значений

Переменная типа variant поддерживает внутреннее представление хранящихся в ней данных. При присвоении значения переменной типа variant Visual Basic применяет наиболее компактное представление этого значения. Например, если переменной типа variant присвоено небольшое числовое значение без дробной части, то используется представление integer, если хранится дробное число — используется внутреннее представление Double.

Константы

Константой называют элемент выражения, значение которого не изменяется в процессе выполнения программ. Приведем несколько примеров:

  • 75.07 - числовая константа ;
  • 2.7Е+6 - числовая константа (равна 2 700 000) ;
  • "Ошибка доступа к базе данных" - символьная константа ;
  • #8/12/1999# - константа типа дата ;
  • False - логическая константа.

Встроенные константы Visual Basic

Visual Basic содержит огромное количество встроенных констант практически для всех возможных случаев: цвета, клавиши, сообщения и т. п. Встроенные константы имеют префикс vb. Для поиска констант определенной категории воспользуйтесь браузером объектов (рис. 5.3), который открывается при нажатии кнопки Object Browser на стандартной панели инструментов.

Рис. 5.3. Поиск встроенных констант с помощью браузера объектов

Объявление констант

Объявление констант во многом аналогично объявлению переменных. Константы можно объявлять на уровне модуля или процедуры. Область их действия при этом определяется теми же правилами, что и для переменных.

Для объявления константы на уровне процедуры используется оператор Const, имеющий следующий синтаксис:

Const имяКонстанты [As типДанных] = выражение

Например,

Const strDBErrorMessage As String = "Ошибка доступа к базе данных"

При объявлении константы на уровне модуля можно дополнительно указать область ее действия. В этом случае оператор Const имеет следующий синтаксис:

[Public I Private] Const имяКонстанты [As типДанных] = выражение

В приведенном ниже примере константа strDBErrorMessage объявлена глобальной:

Public Const strDBErrorMessage As String = "Ошибка доступа к базе данных"

Массивы

Для хранения величин кроме простых переменных можно использовать массивы. Массив представляет собой набор переменных с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива. Размер массива ограничен объемом оперативной памяти и типом данных элементов массива.

Все элементы массива имеют одинаковый тип. Однако если массив имеет тип variant, то отдельные элементы могут содержать данные разных типов. Например, одни элементы могут быть числами, другие — строками или объектами.

Индекс элемента указывается в круглых скобках после имени массива. Например, strNames(l), strNames(2), strNames(lO) ЯВЛЯЮТСЯ элементами массива с именем strNames. Вы можете использовать каждый из элементов массива точно так же, как и простую переменную.

Объявление массива

В Visual Basic существуют массивы фиксированного размера и динамические массивы. Массив фиксированного размера имеет неизменный размер, заданный при его объявлении. Динамические массивы могут изменять размер в процессе выполнения.

Объявление массива фиксированного размера

Объявление массива фиксированного размера зависит от области его видимости и осуществляется следующим образом:

  • глобальный массив объявляется с помощью оператора public в секции Declaration модуля:
  • массив уровня модуля — с помощью оператора private в секции Declaration модуля;
  • локальный массив — с помощью оператора private процедуры.

При объявлении массива после его имени в круглых скобках указывается верхняя граница массива. По умолчанию нижней границей массива является 0. Например, в приведенном ниже коде, который вводится в секцию Declaration модуля, задается массив из 21 элемента. Индекс элементов массива изменяется от 0 до 20:

Dim intCountPar (20) As Integer

Для создания глобального массива такого же размера необходимо использовать следующий код:

Public intCountPar (20) As Integer Можно явно задать нижнюю границу массива, используя ключевое слово то:

Dim intCountPar (1 To 20) As Integer

В этом случае задается массив из 20 элементов. Индекс элементов массива изменяется от 1 до 20.

Visual Basic позволяет использовать многомерные массивы. Например, в следующем коде объявляется двумерный массив размерностью 21х21:

Dim intCountPar (20, 20) As Integer

При использовании многомерных массивов, как и в случае одномерных, можно явно задавать нижнюю границу:

Dim intCountPar (1 To 20, 1 То 20) As Integer Dim intCountPar (20, 1 То 20) As Integer

В верхней строке кода явно заданы верхняя и нижняя граница обеих размерностей. В нижней строке задана верхняя и нижняя граница только для второй размерности.

Объявление динамического массива

В случае, когда размер массива заранее неизвестен. Visual Basic позволяет использовать динамические массивы, размеры которых можно изменять во время выполнения. Применение динамических массивов позволяет эффективно управлять памятью, выделяя память под большой массив лишь на то время, когда этот массив используется, а затем освобождая ее.

Создание динамического массива осуществляется следующим образом:

1. Объявляется массив с помощью ключевых слов, используемых при создании массива фиксированного размера. Список размерностей массива остается пустым. При объявлении глобального массива необходимо выбрать ключевое слово Public, при объявлении массива на уровне модуля — Dim, при объявлении массива в процедуре — Dim или static. Например,

Dim intCountPar О As Integer

2. С помощью выполняемого оператора ReDim указывается размерность массива в виде числа или выражения. Синтаксис оператора ReDim аналогичен синтаксису оператора объявления массива фиксированного размера. Например, размерность массива может быть задана любым из следующих способов:

ReDim intCountPar (х)

ReDim intCountPar (20)

ReDim intCountPar (1 То 20)

При выполнении оператора ReDim данные, размещенные в массиве ранее, теряются. Это удобно в том случае, если данные вам больше не нужны и вы хотите переопределить размерность массива и подготовить его для размещения новых данных. Если вы хотите изменить размер массива, не потеряв при этом данных, то необходимо воспользоваться оператором ReDim с ключевым словом Preserve. Например, приведенный ниже программный код увеличивает размер массива на единицу без потери хранящихся в массиве данных:

ReDim Preserve intCountPar (X + 1)

Замечание

Использование оператора ReDim с ключевым словом Presterve позволяет изменять только верхнюю границу последней размерности многомерных размеров.

Математические операторы

Математические операторы позволяют выполнять в программе действия над числами. В табл. 5.2 приведены арифметические операторы и выполняемые ими функции.

Таблица 5.2. Математические операторы
Оператор | Выполняемая операция
+ | Сложение
- | Вычитание
* | Умножение
/ | Деление
\ | Целочисленное деление
mod | Остаток от деления нацело
/\ | Возведение в степень

Математические операторы предназначены для создания выражений. Выражения могут содержать переменные, константы, функции, связанные более чем одним оператором. Если в выражении отсутствуют скобки, то операторы выполняются в следующем порядке:

1. Возведение в степень.

2. Умножение и деление.

3. Деление нацело.

4. Взятие остатка от деления.

5. Сложение и вычитание.

Вы можете изменить порядок вычисления в выражении, используя круглые скобки. Например, в формуле (8-3*(4-2))/(3+2) вначале выполняется операция 4—2, затем умножение, затем вычитание из 8 предыдущего результата, сложение 3+2 и, наконец, деление.

Замечание

Используя скобки, следите за тем, чтобы количество открывающих и закрывающих скобок было равно.

Первые три математических оператора, приведенных в табл. 5.2, не требуют пояснений. Рассмотрим примеры использования операторов деления. Их в таблице три. Первый из них выполняет деление с плавающей точкой. Его оператор записывается в виде косой черты (/). Введите в окне Immediate Visual Basic следующее выражение:

Print 10/3

В результате в окно Immediate будет выведено число 3,33333333333333.

Далее в табл. 5.2 следует оператор целочисленного деления. Он записывается в виде обратной косой черты (\). Введите в окне Immediate

Print 10\3

В результате будет получено число 3.

Третий оператор деления — оператор mod. Он выдает остаток, получающийся в результате деления. Введите в окне Immediate Visual Basic следующее выражение:

Print 10 mod 3

В результате в окно Immediate будет выведено число 1. На рис. 5.4 показано окно Immediate с результатами проведенных вычислений.

Последним в табл. 5.2 приведен оператор возведения в степень. Он имеет следующий синтаксис:

результат = число ^ показательСтепени

Если параметр показательСтепени больше 1, это означает, что число возводится в степень. Если он меньше 1, но больше 0, то из числа извлекается корень. При значении параметра меньше 0 вычисляется обратное значение дроби. Например:

2 ^ 3 = 8 16 ^ 0.5 = 4 2 ^ -3 = 0,125

На рис. 5.5 показано окно Immediate с результатами возведения в степень.

Рис. 5.4. Окно Immediate с результатами вычислений

Рис. 5.5. Окно Immediate с результатами возведения в степень

Работа со строками

Для работы в Visual Basic со строками используется оператор объединения, называемый также оператором конкатенации, и встроенные функции. Список наиболее часто используемых функции для работы со строками приведен в табл. 5.3.

Таблица 5.3. Функции, предназначенные для работы со строками
Функция | Назначение
As С | Возвращает ASCII-код символа
Chr | Преобразовывает ASCII-код в символ
InStr, InStrRev | Осуществляют поиск одной строки в другой
LCase | Изменяет регистр букв исходной строки на нижний
Left | Возвращает указанное количество символов с начала строки
Len | Возвращает количество символов в строке
LTrim, RTrim, Trim | Удаляют пробелы, расположенные соответственно в начале, в конце и с обеих сторон символьной строки
Mid | Возвращает заданное количество символов из произвольного места строки
Right | Возвращает указанное количество символов с конца строки
Str, CStr | Преобразовывают числовое выражение в строку
StrReverse | Изменяет порядок следования символов в строке на обратный
StrConv | Изменяет регистр букв символьной строки
Val | Преобразовывают строку в числовое выражение
UCase | Изменяет регистр букв исходной строки на верхний

Рассмотрим более подробно некоторые из функций.

Функции Str и Val

Функция Str о преобразовывает численное значение в символьное представление. Синтаксис функции следующий:

Str (число)

Функция Val () преобразовывает символьную строку в численное значение.

Синтаксис функции:

Val (символьноеВыражение)

При преобразовании строки символов в число учитываются все цифровые символы, расположенные в строке слева направо. Пробелы, находящиеся в начале и конце символьной строки, игнорируются. Пробелы внутри строки недопустимы. Если первый символ выражения не является цифрой, функция Val возвратит значение ноль.

Рассмотрим следующий пример. Зададим в окне Immediate две символьные строки а и b следующего вида:

а="10"

b="12"

При сложении этих двух строк получается символьная строка

"1012"

Если сложить две символьные строки, предварительно преобразовав их в числа, и распечатать с помощью команды,

Print Val (а) + Val (b)

то получится число 22 (рис. 5.6).

Рис. 5.6. Результат применения функции Val

Функции, удаляющие пробелы в символьной строке

Функции LTrim, Rtrim и Trim используются для удаления пробелов в символьной строке.
Функция | Назначение
LTrim | Удаляет пробелы, расположенные в начале символьной строки
RTrim | Удаляет пробелы, расположенные в конце символьной строки
Trim | Удаляет пробелы, расположенные в начале и в конце символьной строки

Пример использования этих функции приведен ниже:

cCoinment= " Удаление пробелов "

Print LTrim(cComment) ' Возвращает "Удаление пробелов "

Print RTrim(cCornment) ' Возвращает " Удаление пробелов"

Print Trim(cComrnent) ' Возвращает "Удаление пробелов"

Выделение подстроки

Вы можете выделить подстроку заданной символьной строки, используя функции Left, Right и Mid. Функции Left и Right выделяют строку начиная с крайнего левого или крайнего правого символа, а функция Mid позволяет выбрать любую подстроку.

Синтаксис функций:

Left(выражение, числоСимволов)

Right(выражение, числоСимволов)

Mid(выражение, номерПозиции [, числоСимволов ])

Ниже приведены примеры использования этих функций и возвращаемые ими значения:

cConmtent= "Выделение подстроки"

Print Left(cConroent,3) ' Возвращает "Выд"

Print Right (cCornment, 6) ' Возвращает "строки"

Print Mid (cCornment, 11,3) ' Возвращает "под"

Преобразование строки

Функции UCase о и Lease о используются в Visual Basic для преобразования строчных символов в заглавные и заглавных в строчные. Помимо этого, в Visual Basic имеется функция StrConv, которая преобразовывает выражение к имени собственному, начинающемуся с заглавной буквы.

Замечание

Функции UCase () и LCase () возвращают значения, имеющие тип Variant. Для того чтобы возвращаемое значение имело тип string, необходимо использовать функции UCase$ () и Lcase$ ().

Функция UCase

Функция ucase преобразует все строчные буквы в символьной строке в заглавные. Синтаксис функции:

UCase (символьнаяСтрока)

Например:

cComment = "вывод"

Print UCase(cComment) ' Возвращает "ВЫВОД"

Print UCase$(cComment) ' Возвращает "ВЫВОД"

Функция LCase

Функция LCase возвращает заданную символьную строку, в которой все заглавные буквы преобразованы в строчные.

Синтаксис функции:

LCase(символьнаяСтрока)

Например:

cComment= "ВЫВОД"

Print LCase(cComment) ' Возвращает "вывод"

Print LCase$(cComment) ' Возвращает "вывод"

Функция StrConv

Функция StrConv преобразовывает выражение, написанное строчными или заглавными буквами, в имя собственное.

Например:

cComment = "Иванов иван Иванович"

Print StrConv(cComment,vbProperCase) ' Возвращает "Иванов Иван Иванович"

Аналогичный результат будет получен и в следующем случае:

cComment = "ИВАНОВ ИВАН ИВАНОВИЧ"

Print StrConv(cComment, vbProperCase) ' Возвращает "Иванов Иван Иванович"

Определение положения строки в другой строке

Visual Basic содержит две функции, позволяющие осуществлять поиск символьной строки в другой: inStr о и inStrRev о. Эти функции отличаются тем, что inStr о осуществляет поиск с начала строки и до ее конца, а InStrRev о проводит поиск в обратном направлении, то есть от конца строки к началу.

Функция inStr () имеет следующий упрощенный синтаксис:

InStr (исходнаяСтрока, строкаПоиска)

В результате проведенного поиска функция возвращает число, указывающее номер позиции первого вхождения строки.

Рассмотрим такой пример. Введите в окне Immediate следующую команду:

Print InStr ("Сегодня прекрасная погода", "погода")

В результате будет возвращено число 20.

Объединение строк

В Visual Basic для работы со строками можно использовать только один оператор — оператор объединения. С помощью данного оператора можно объединять несколько строк в одну. Этот оператор обозначается символом амперсанда (&).

Замечание

В предыдущих версиях Visual Basic для объединения строк использовался символ "плюс" (+). В Visual Basic 6 этот оператор также поддерживается.

Например, объединение строк удобно использовать при формировании полного адреса, если известен индекс, город и улица. В следующем примере и на рис. 5.7 показан результат объединения фамилии, имени и отчества в окне Immediate:

sLastName = "Иванов "

sFirstName = "Иван "

sSecondName = "Иванович"

sName = sLastName & sFirstName & sSecondName

Print sName ' Возвращает "Иванов Иван Иванович"

Рис. 5.7. Объединение строк

Оформление программных кодов

При написании программных кодов программисту необходимо позаботиться о том, чтобы программа была читабельной, то есть снабжена достаточным количеством комментариев, а операторы большой длины были размещены на нескольких строках. О средствах, позволяющих этого добиться, пойдет речь в данном разделе.

Комментарии

Помимо команд и выражении, вы можете включить в свои методы и процедуры любой произвольный текст или комментарии. Комментарии, поясняющие текст программы, сделают ее более читабельной и помогут вам или другим пользователям лучше ориентироваться в программе.

Для включения в текст программы комментария необходимо ввести символ ('), который может быть первым символом в строке или находиться в любом ее месте. Этот символ означает начало комментария. Любой текст, расположенный в строке следом за этим символом, будет восприниматься как комментарий, то есть Visual Basic не будет транслировать этот текст. Например:

' Комментарий, начинающийся с начала строки

Print strName ' Комментарий, следующий за оператором

Совет

Сопровождая программы комментариями, вы сэкономите время и усилия при отладке и модификации программ.

Размещение оператора на нескольких строках

В том случае, когда оператор имеет большую длину, его можно разбить на несколько строк, используя символы продолжения строки: пробел, за которым следует символ подчеркивания (_).

Например, поместим на двух строках оператор, объединяющий фамилию, имя и отчество:

strName = strLastname & strFirstname & strSecondname

Получим следующее:

strName = strLastname _

& strFirstname & strSecondname

Размещение нескольких операторов на одной строке

Как правило, при написании программ операторы размещают на отдельной строке. Если операторы имеют небольшую длину, Visual Basic позволяет их поместить на одной строке, разделив двоеточием. Например:

strLastname = "Иванов ": strFirstname = "Иван "

Программные модули

Программы Visual Basic хранятся в программных модулях, которые бывают трех видов: модуль формы, стандартный модуль и модуль класса.

Простое приложение, состоящее из одной формы, содержит, как правило, только модуль формы. По мере усложнения приложения повторяющиеся функции, выполняемые с нескольких модулей формы, можно выделить в отдельный программный код, который будет являться общим для всех. Такой программный код называется стандартным модулем. При использовании в Visual Basic объектно-ориентированного программирования создаются модули классов.

Модули формы могут содержать объявления переменных, констант, типов данных, внешних процедур, используемых на уровне модуля, процедур обработки событий. Они хранятся в файлах, имеющих расширение frm. В модуле можно также ссылаться на другие формы и объекты данного приложения.

Стандартные модули могут содержать объявления глобальных и локальных переменных, констант, типов, внешних процедур и процедур общего характера, доступных для других модулей данного приложения. Они хранятся в файлах с расширением bas.

Используя объектно-ориентированное программирование, в Visual Basic можно создавать новые объекты с разработанными для них свойствами и методами, помещая их в модули классов, хранящихся в файлах с расширением els.

Редактирование исходных кодов

Для создания программных кодов в Visual Basic используется редактор кода. Чтобы его запустить, необходимо в окне Project Explorer установить курсор на форму или на модуль, для которого создается код, и выполнить одно из следующих действий:

  • в меню View (Вид) выбрать команду Code (Код);
  • из контекстного меню модуля выбрать команду View Code.

При выполнении любого из этих действий открывается окно редактирования (рис. 5.8), в которое можно вводить текст программы. Для каждого модуля в Visual Basic создается отдельное окно кода, разделенное внутри на секции. Выбор секции в окне кода осуществляется с помощью списка Object, расположенного слева в верхней части окна.

В верхней части окна Project расположены два раскрывающихся списка: Object (Объект) и Procedure (Процедура). Левый список Object позволяет осуществлять переход между секциями. Для стандартного модуля список Object содержит общую секцию (General). В модуле класса этот список содержит общую секцию и секцию класса. В форме список Object содержит общую секцию, секцию для формы (Form), а также секции для всех размещенных в форме объектов.

Рис. 5.8. Окно редактирования исходного кода

Для каждой секции, выбранной из списка Object, можно создать процедуру, доступ к которым осуществляется с помощью списка Procedure окна редактора кода, содержащего события. При выборе из списка Object общей секции модуля (General) список Procedure содержит только одно значение Declarations (Объявления), позволяющее объявить локальные переменные, константы и библиотеки DLL.

Написание программных кодов в Visual Basic облегчается тем, что редактор автоматически предлагает разработчику по мере необходимости список операторов, функций, свойств объектов. Например, при вводе имени элемента управления формы на экране появляется список свойств данного объекта (рис. 5.9). Вам достаточно дважды щелкнуть мышью в списке на нужном свойстве, и оно будет перенесено в программный код.

Редактор Visual Basic также предоставляет пользователю подсказки с синтаксисом при написании операторов и функций (рис. 5.10). Они появляются на экране под курсором при вводе наименования оператора или функции.

Рис. 5.9. Использование списка свойств объекта для написания кода

Рис. 5.10. Использование подсказок синтаксиса операторов и функций

Замечание

Если при написании кода не появляется список со свойствами объектов и подсказки с синтаксисом операторов и функций, то в меню Tools (Сервис) выберите команду Options (Параметры) и на вкладке Editor (Редактор) диалогового окна Options установите флажки Auto List Members (Члены автоматического списка) и Auto Quick Info (Быстрая автоматическая информация). Для подключения этих возможностей редактора можно также использовать комбинации клавиш <Ctrl>+<J> и <Ctrl>+<|>, соответственно.

Процедуры

При программировании широко используются процедуры, позволяющие разбивать программные коды на небольшие логические блоки, которые, во-первых, легче отлаживать, а во-вторых, можно в свою очередь использовать при создании других процедур. В Visual Basic существуют следующие виды процедур:

  • Sub
  • Function
  • Property

Процедуры Sub

Процедура sub не возвращает значения и наиболее часто используется для обработки связанного с ней события. Ее можно помещать в стандартные модули, модули классов и форм. Она имеет следующий синтаксис:

[Private] [Public] [Static} Sub имяПроцедуры (аргументы)

операторы

End Sub

Между ключевыми словами Sub и End Sub в процедуре располагаются выполняемые при ее вызове операторы программного кода. Параметр аргументы можно применять для объявления передаваемых в процедуру переменных.

Процедуры Sub подразделяются на общие процедуры и процедуры событий. Общие процедуры служат для размещения повторяющихся операторов, используемых процедурами по обработке событии, тем самым разгружая их и исключая дублирование часто встречающихся кодов, что в свою очередь облегчает поддержку приложения.

Процедуры обработки событий связаны с объектами, размещенными в формах Visual Basic, или с самой формой и выполняются при наступлении события, с которым они связаны. Для события, связанного с формой, процедура sub имеет следующий синтаксис:

Private Sub Form имяСобытия (аргументы)

операторы

End Sub

Как видно из синтаксиса, наименование процедуры обработки события для формы содержит слово Form, затем размещается символ подчеркивания (_) и имя события. Например, имя процедуры, выполняемой при загрузке формы, будет Form_Load, а процедуры, выполняемой при щелчке мыши на форме — Form_click. При формировании процедуры для формы MDI ее имя будет содержать перед словом Form приставку MDI, то есть записываться MDiForm.

Для события, связанного с элементом управления формы, процедура обработки событий sub имеет следующий синтаксис:

Private Sub имяЭлементаУправления имяСобытия (аргументы)

операторы

End Sub

Наименование процедуры обработки события для элемента управления формы содержит имя элемента управления, заданное в свойстве Name, затем следует символ подчеркивания (_) и имя события. Например, имя процедуры, выполняемой при щелчке мыши на кнопке управления, имеющей наименование cmdPrint будет Form_Click.

Visual Basic облегчает формирование имен создаваемых процедур. Разработчику необходимо выполнить для этого следующие действия:

1. В окне Properties с помощью свойства Name (Имя) задать имя объекта, для которого создается процедура. Если имя не будет задано, то при создании процедуры Visual Basic использует имя, присваиваемое объекту по умолчанию при его размещении в форме. При последующем изменении наименования объекта необходимо будет изменить и имя процедуры.

2. В окне редактора кода из списка Object (Объект) выбрать объект, для которого создается процедура.

3. Из списка Procedure (Процедура) выбрать событие, обработка которого будет выполняться.

После выполнения указанных действий в области размещения процедур редактора кода будут размещены операторы sub и End sub с указанием наименования процедуры (рис. 5.11). Вам необходимо разместить между этими операторами выполняемый при наступлении этого события программный код.

Рис. 5.11. Visual Basic формирует наименование процедуры

Предупреждение

В случае, если после создания процедуры имя элемента управления будет изменено, а имя связанной с ним процедуры останется прежним, процедура станет общей.

Процедуры Function

Процедуры Function в отличие от процедур sub могут возвращать значение в вызывающую процедуру. Синтаксис процедуры Function выглядит следующим образом:

[Private] [Public] [Static} Function имяПроцедуры (аргументы) [As type]

операторы

End Function

Процедуры Function, как и переменные, имеют тип, задаваемый с помощью ключевого слова As. Если тип процедуры не задан, по умолчанию ей присваивается тип Variant. Тип процедуры определяет в свою очередь тип возвращаемого ею значения. Возвращаемое процедурой значение присваивается имени процедуры имяПроцедуры и может быть использовано в выражениях программного кода аналогично стандартным функциям Visual Basic.

Рассмотрим процедуру, вычисляющую площадь квадрата:

Function Square (intA As Integer) As Integer

Square = intA ^ 2

End Function

Для вызова этой процедуры в форме можно использовать, например, следующий код:

TxtSquare.Text = Square(TxtSide.Text)

Вызов процедур

Процедура sub не возвращает значения, однако она может изменять значения переменных, заданных для нее в качестве параметров. Вызов процедуры Sub можно осуществлять двумя способами. Первый способ предполагает использование ключевого слова Call. Например, процедуру с именем Nameproc можно вызвать оператором

Call NameProc (аргумент1, аргумент2, ...аргументы)

Второй способ позволяет вызвать процедуру sub по ее имени. Например,

NameProc аргумент1, аргумент2, ...аргументы

При вызове процедуры модуля формы из другого модуля необходимо указывать ссылку на имя модуля формы, содержащего процедуру. Например, для вызова процедуры с именем Nameproc, находящейся в модуле формы Form1, оператор должен выглядеть так:

Call Form1.NameProc (аргумент1, аргумент2, ...аргументМ)

Вызов процедуры Function аналогичен вызову встроенных функций Visual Basic. Кроме этого, процедуру Function можно вызывать так же, как процедуру Sub:

Call Square(Side)

Square Side

В этом случае Visual Basic игнорирует возвращаемое функцией значение.

Передача параметров

Переменные, передаваемые процедуре, называют параметрами процедуры. По умолчанию они имеют тип variant. Visual Basic позволяет задавать тип параметров с помощью ключевого слова As:

Function Square (intA As Integer) As Integer

Передача параметров в процедуру может осуществляться двумя способами:

по значению (by value) и по ссылке (by reference). В первом случае в процедуру в качестве переменной передается не сама переменная, а ее копия. Поэтому изменение параметра в процедуре затрагивает не переменную, а ее копию. Для передачи в процедуру параметров по ссылке используется ключевое слово ByVal, например:

Sub NameProc (ByVal strArg As String)

тело процедуры

End Sub

При передаче параметров по ссылке процедура получает доступ к области памяти, в которой эта переменная хранится, в результате чего при изменении в процедуре параметра происходит изменение значения переменной.

Замечание

По умолчанию в Visual Basic передача параметров в процедуру осуществляется по ссылке.

Используя ключевое слово optional, можно задавать необязательные параметры процедуры. При этом необходимо иметь в виду, что если какой-либо из параметров задан как необязательный, то и расположенные после него параметры также должны быть объявлены необязательными:

Sub NameProc (Optional strArg1 As String, Optional strArg2 As String)

тело процедуры

End Sub

Обязательные параметры процедуры должны задаваться до необязательных, например:

Sub NameProc (strArg1 As String, Optional strArg2 As String)

тело процедуры

End Sub


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Область действия переменных

При выполнении программы принципиальное значение имеет область действия выбранных переменных. Попытка использования переменных, которые не действуют в данном месте программы, приводит к ошибке программирования или же к неоднозначности результатов. В Visual Basic можно применять глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область действия в рамках всего модуля или отдельной процедуры.

Присваивая имена переменным с учетом области ее действия, придерживайтесь следующего формата:

Область действия переменной | Префикс | Пример
Глобальная | g | gdtmFinish
Локальная внутри модуля | m | msngLength
Локальная внутри процедуры | нет префикса | strLastname

Для создания переменной, которую вы хотите определить в качестве глобальной, в раздел General Declarations главного модуля приложения поместите оператор public. Например:

Public gdtmFinish As Date

Для объявления переменной, локальной внутри модуля или формы, используйте оператор private или Dim в разделе General Declarations модуля или формы (рис. 5.2). В этом случае объявленная переменная будет доступна для всех входящих в форму или модуль процедур, но в то же время недоступной в процедурах других модулей и форм.

Рис. 5.2. Объявление переменных, локальных на уровне модуля

Переменные, локальные на уровне процедуры, создаются операторами Dim или static внутри процедуры. Например:

Sub CalcTotal

Dim bSuccess As Boolean

. . .

End Sub


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Присвоение значения переменной

Прежде чем использовать переменную в программе, ей необходимо присвоить значение. Самый простой способ присвоения заключается в использовании оператора присвоения "=", который имеет следующий синтаксис:

переменная = выражение

Аргумент переменная задает имя переменной, которой будет присвоено значение выражения, стоящего справа от знака равенства. Например:

sngFirst = 10

strLastname = "Иванов"

Справа от знака равенства может стоять не только константа, но и более сложное выражение. Например:

sngResult = sngFirst + 255

strName = "Иванов" & ": " & strTeam


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Особенности использования переменных типа Variant

Переменную типа variant можно использовать для хранения всех типов данных и выполнять операции, не заботясь о типе данных, в них содержащихся. Необходимо только помнить о двух исключениях. Во-первых, выполнять арифметические операции или функции над переменной типа variant можно только в том случае, если она содержит числовое значение. Во-вторых, конкатенацию строк следует осуществлять с помощью оператора "&" вместо оператора "+".

Переменные типа variant могут содержать специальные значения Empty, Null или Error.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Значение Empty

До присвоения значения переменной типа variant ее значение отлично от О, пустой строки или значения Null и именуется Empty. Для определения значения Empty можно использовать функцию isEmpty:

If IsEmpty(x) Then x = 0

Замечание

Переменная типа variant имеет значение Empty только до первого присвоения ей какого-либо значения.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Значение Null

Переменная типа variant может иметь значение Null, используемое для указания пустых данных в приложениях, работающих с базами данных.

С помощью функции isNull можно проверить, имеет ли переменная типа variant значение Null:

If IsNull(x) Then

у = Null

Else

у = 0

End If

Для присвоения переменной типа variant значения Null можно использовать ключевое слово Null:

у = Null

Предупреждение

Присвоение значения Null переменной, не имеющей типа variant, приведет к ошибке.

При работе с переменной типа variant, имеющей значение Null, необходимо иметь в виду следующее:

  • если в выражении содержится переменная, имеющая значение Null, то само выражение принимает значение Null;
  • при использовании в качестве параметра функции переменной, имеющей значение Null, большинство функций возвращает значение Null.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Значение Error

Переменная типа variant может принимать значение Error при возникновении ошибки в процедуре. Однако в этом случае на уровне приложения ошибка не обрабатывается, что позволяет программисту в зависимости от ее значения предпринимать определенные действия.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Внутреннее представление значений

Переменная типа variant поддерживает внутреннее представление хранящихся в ней данных. При присвоении значения переменной типа variant Visual Basic применяет наиболее компактное представление этого значения. Например, если переменной типа variant присвоено небольшое числовое значение без дробной части, то используется представление integer, если хранится дробное число — используется внутреннее представление Double.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Константы

Константой называют элемент выражения, значение которого не изменяется в процессе выполнения программ. Приведем несколько примеров:

  • 75.07 - числовая константа ;
  • 2.7Е+6 - числовая константа (равна 2 700 000) ;
  • "Ошибка доступа к базе данных" - символьная константа ;
  • #8/12/1999# - константа типа дата ;
  • False - логическая константа.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Встроенные константы Visual Basic

Visual Basic содержит огромное количество встроенных констант практически для всех возможных случаев: цвета, клавиши, сообщения и т. п. Встроенные константы имеют префикс vb. Для поиска констант определенной категории воспользуйтесь браузером объектов (рис. 5.3), который открывается при нажатии кнопки Object Browser на стандартной панели инструментов.

Рис. 5.3. Поиск встроенных констант с помощью браузера объектов


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объявление констант

Объявление констант во многом аналогично объявлению переменных. Константы можно объявлять на уровне модуля или процедуры. Область их действия при этом определяется теми же правилами, что и для переменных.

Для объявления константы на уровне процедуры используется оператор Const, имеющий следующий синтаксис:

Const имяКонстанты [As типДанных] = выражение

Например,

Const strDBErrorMessage As String = "Ошибка доступа к базе данных"

При объявлении константы на уровне модуля можно дополнительно указать область ее действия. В этом случае оператор Const имеет следующий синтаксис:

[Public I Private] Const имяКонстанты [As типДанных] = выражение

В приведенном ниже примере константа strDBErrorMessage объявлена глобальной:

Public Const strDBErrorMessage As String = "Ошибка доступа к базе данных"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Массивы

Для хранения величин кроме простых переменных можно использовать массивы. Массив представляет собой набор переменных с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива. Размер массива ограничен объемом оперативной памяти и типом данных элементов массива.

Все элементы массива имеют одинаковый тип. Однако если массив имеет тип variant, то отдельные элементы могут содержать данные разных типов. Например, одни элементы могут быть числами, другие — строками или объектами.

Индекс элемента указывается в круглых скобках после имени массива. Например, strNames(l), strNames(2), strNames(lO) ЯВЛЯЮТСЯ элементами массива с именем strNames. Вы можете использовать каждый из элементов массива точно так же, как и простую переменную.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объявление массива

В Visual Basic существуют массивы фиксированного размера и динамические массивы. Массив фиксированного размера имеет неизменный размер, заданный при его объявлении. Динамические массивы могут изменять размер в процессе выполнения.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объявление массива фиксированного размера

Объявление массива фиксированного размера зависит от области его видимости и осуществляется следующим образом:

  • глобальный массив объявляется с помощью оператора public в секции Declaration модуля:
  • массив уровня модуля — с помощью оператора private в секции Declaration модуля;
  • локальный массив — с помощью оператора private процедуры.

При объявлении массива после его имени в круглых скобках указывается верхняя граница массива. По умолчанию нижней границей массива является 0. Например, в приведенном ниже коде, который вводится в секцию Declaration модуля, задается массив из 21 элемента. Индекс элементов массива изменяется от 0 до 20:

Dim intCountPar (20) As Integer

Для создания глобального массива такого же размера необходимо использовать следующий код:

Public intCountPar (20) As Integer Можно явно задать нижнюю границу массива, используя ключевое слово то:

Dim intCountPar (1 To 20) As Integer

В этом случае задается массив из 20 элементов. Индекс элементов массива изменяется от 1 до 20.

Visual Basic позволяет использовать многомерные массивы. Например, в следующем коде объявляется двумерный массив размерностью 21х21:

Dim intCountPar (20, 20) As Integer

При использовании многомерных массивов, как и в случае одномерных, можно явно задавать нижнюю границу:

Dim intCountPar (1 To 20, 1 То 20) As Integer Dim intCountPar (20, 1 То 20) As Integer

В верхней строке кода явно заданы верхняя и нижняя граница обеих размерностей. В нижней строке задана верхняя и нижняя граница только для второй размерности.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объявление динамического массива

В случае, когда размер массива заранее неизвестен. Visual Basic позволяет использовать динамические массивы, размеры которых можно изменять во время выполнения. Применение динамических массивов позволяет эффективно управлять памятью, выделяя память под большой массив лишь на то время, когда этот массив используется, а затем освобождая ее.

Создание динамического массива осуществляется следующим образом:

1. Объявляется массив с помощью ключевых слов, используемых при создании массива фиксированного размера. Список размерностей массива остается пустым. При объявлении глобального массива необходимо выбрать ключевое слово Public, при объявлении массива на уровне модуля — Dim, при объявлении массива в процедуре — Dim или static. Например,

Dim intCountPar О As Integer

2. С помощью выполняемого оператора ReDim указывается размерность массива в виде числа или выражения. Синтаксис оператора ReDim аналогичен синтаксису оператора объявления массива фиксированного размера. Например, размерность массива может быть задана любым из следующих способов:

ReDim intCountPar (х)

ReDim intCountPar (20)

ReDim intCountPar (1 То 20)

При выполнении оператора ReDim данные, размещенные в массиве ранее, теряются. Это удобно в том случае, если данные вам больше не нужны и вы хотите переопределить размерность массива и подготовить его для размещения новых данных. Если вы хотите изменить размер массива, не потеряв при этом данных, то необходимо воспользоваться оператором ReDim с ключевым словом Preserve. Например, приведенный ниже программный код увеличивает размер массива на единицу без потери хранящихся в массиве данных:

ReDim Preserve intCountPar (X + 1)

Замечание

Использование оператора ReDim с ключевым словом Presterve позволяет изменять только верхнюю границу последней размерности многомерных размеров.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Математические операторы

Математические операторы позволяют выполнять в программе действия над числами. В табл. 5.2 приведены арифметические операторы и выполняемые ими функции.

Таблица 5.2. Математические операторы
Оператор | Выполняемая операция
+ | Сложение
- | Вычитание
* | Умножение
/ | Деление
\ | Целочисленное деление
mod | Остаток от деления нацело
/\ | Возведение в степень

Математические операторы предназначены для создания выражений. Выражения могут содержать переменные, константы, функции, связанные более чем одним оператором. Если в выражении отсутствуют скобки, то операторы выполняются в следующем порядке:

1. Возведение в степень.

2. Умножение и деление.

3. Деление нацело.

4. Взятие остатка от деления.

5. Сложение и вычитание.

Вы можете изменить порядок вычисления в выражении, используя круглые скобки. Например, в формуле (8-3*(4-2))/(3+2) вначале выполняется операция 4—2, затем умножение, затем вычитание из 8 предыдущего результата, сложение 3+2 и, наконец, деление.

Замечание

Используя скобки, следите за тем, чтобы количество открывающих и закрывающих скобок было равно.

Первые три математических оператора, приведенных в табл. 5.2, не требуют пояснений. Рассмотрим примеры использования операторов деления. Их в таблице три. Первый из них выполняет деление с плавающей точкой. Его оператор записывается в виде косой черты (/). Введите в окне Immediate Visual Basic следующее выражение:

Print 10/3

В результате в окно Immediate будет выведено число 3,33333333333333.

Далее в табл. 5.2 следует оператор целочисленного деления. Он записывается в виде обратной косой черты (\). Введите в окне Immediate

Print 10\3

В результате будет получено число 3.

Третий оператор деления — оператор mod. Он выдает остаток, получающийся в результате деления. Введите в окне Immediate Visual Basic следующее выражение:

Print 10 mod 3

В результате в окно Immediate будет выведено число 1. На рис. 5.4 показано окно Immediate с результатами проведенных вычислений.

Последним в табл. 5.2 приведен оператор возведения в степень. Он имеет следующий синтаксис:

результат = число ^ показательСтепени

Если параметр показательСтепени больше 1, это означает, что число возводится в степень. Если он меньше 1, но больше 0, то из числа извлекается корень. При значении параметра меньше 0 вычисляется обратное значение дроби. Например:

2 ^ 3 = 8 16 ^ 0.5 = 4 2 ^ -3 = 0,125

На рис. 5.5 показано окно Immediate с результатами возведения в степень.

Рис. 5.4. Окно Immediate с результатами вычислений

Рис. 5.5. Окно Immediate с результатами возведения в степень


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа со строками

Для работы в Visual Basic со строками используется оператор объединения, называемый также оператором конкатенации, и встроенные функции. Список наиболее часто используемых функции для работы со строками приведен в табл. 5.3.

Таблица 5.3. Функции, предназначенные для работы со строками
Функция | Назначение
As С | Возвращает ASCII-код символа
Chr | Преобразовывает ASCII-код в символ
InStr, InStrRev | Осуществляют поиск одной строки в другой
LCase | Изменяет регистр букв исходной строки на нижний
Left | Возвращает указанное количество символов с начала строки
Len | Возвращает количество символов в строке
LTrim, RTrim, Trim | Удаляют пробелы, расположенные соответственно в начале, в конце и с обеих сторон символьной строки
Mid | Возвращает заданное количество символов из произвольного места строки
Right | Возвращает указанное количество символов с конца строки
Str, CStr | Преобразовывают числовое выражение в строку
StrReverse | Изменяет порядок следования символов в строке на обратный
StrConv | Изменяет регистр букв символьной строки
Val | Преобразовывают строку в числовое выражение
UCase | Изменяет регистр букв исходной строки на верхний

Рассмотрим более подробно некоторые из функций.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функции Str и Val

Функция Str о преобразовывает численное значение в символьное представление. Синтаксис функции следующий:

Str (число)

Функция Val () преобразовывает символьную строку в численное значение.

Синтаксис функции:

Val (символьноеВыражение)

При преобразовании строки символов в число учитываются все цифровые символы, расположенные в строке слева направо. Пробелы, находящиеся в начале и конце символьной строки, игнорируются. Пробелы внутри строки недопустимы. Если первый символ выражения не является цифрой, функция Val возвратит значение ноль.

Рассмотрим следующий пример. Зададим в окне Immediate две символьные строки а и b следующего вида:

а="10"

b="12"

При сложении этих двух строк получается символьная строка

"1012"

Если сложить две символьные строки, предварительно преобразовав их в числа, и распечатать с помощью команды,

Print Val (а) + Val (b)

то получится число 22 (рис. 5.6).

Рис. 5.6. Результат применения функции Val


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функции, удаляющие пробелы в символьной строке

Функции LTrim, Rtrim и Trim используются для удаления пробелов в символьной строке.
Функция | Назначение
LTrim | Удаляет пробелы, расположенные в начале символьной строки
RTrim | Удаляет пробелы, расположенные в конце символьной строки
Trim | Удаляет пробелы, расположенные в начале и в конце символьной строки

Пример использования этих функции приведен ниже:

cCoinment= " Удаление пробелов "

Print LTrim(cComment) ' Возвращает "Удаление пробелов "

Print RTrim(cCornment) ' Возвращает " Удаление пробелов"

Print Trim(cComrnent) ' Возвращает "Удаление пробелов"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Выделение подстроки

Вы можете выделить подстроку заданной символьной строки, используя функции Left, Right и Mid. Функции Left и Right выделяют строку начиная с крайнего левого или крайнего правого символа, а функция Mid позволяет выбрать любую подстроку.

Синтаксис функций:

Left(выражение, числоСимволов)

Right(выражение, числоСимволов)

Mid(выражение, номерПозиции [, числоСимволов ])

Ниже приведены примеры использования этих функций и возвращаемые ими значения:

cConmtent= "Выделение подстроки"

Print Left(cConroent,3) ' Возвращает "Выд"

Print Right (cCornment, 6) ' Возвращает "строки"

Print Mid (cCornment, 11,3) ' Возвращает "под"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Преобразование строки

Функции UCase о и Lease о используются в Visual Basic для преобразования строчных символов в заглавные и заглавных в строчные. Помимо этого, в Visual Basic имеется функция StrConv, которая преобразовывает выражение к имени собственному, начинающемуся с заглавной буквы.

Замечание

Функции UCase () и LCase () возвращают значения, имеющие тип Variant. Для того чтобы возвращаемое значение имело тип string, необходимо использовать функции UCase$ () и Lcase$ ().


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функция UCase

Функция ucase преобразует все строчные буквы в символьной строке в заглавные. Синтаксис функции:

UCase (символьнаяСтрока)

Например:

cComment = "вывод"

Print UCase(cComment) ' Возвращает "ВЫВОД"

Print UCase$(cComment) ' Возвращает "ВЫВОД"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функция LCase

Функция LCase возвращает заданную символьную строку, в которой все заглавные буквы преобразованы в строчные.

Синтаксис функции:

LCase(символьнаяСтрока)

Например:

cComment= "ВЫВОД"

Print LCase(cComment) ' Возвращает "вывод"

Print LCase$(cComment) ' Возвращает "вывод"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Функция StrConv

Функция StrConv преобразовывает выражение, написанное строчными или заглавными буквами, в имя собственное.

Например:

cComment = "Иванов иван Иванович"

Print StrConv(cComment,vbProperCase) ' Возвращает "Иванов Иван Иванович"

Аналогичный результат будет получен и в следующем случае:

cComment = "ИВАНОВ ИВАН ИВАНОВИЧ"

Print StrConv(cComment, vbProperCase) ' Возвращает "Иванов Иван Иванович"


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Определение положения строки в другой строке

Visual Basic содержит две функции, позволяющие осуществлять поиск символьной строки в другой: inStr о и inStrRev о. Эти функции отличаются тем, что inStr о осуществляет поиск с начала строки и до ее конца, а InStrRev о проводит поиск в обратном направлении, то есть от конца строки к началу.

Функция inStr () имеет следующий упрощенный синтаксис:

InStr (исходнаяСтрока, строкаПоиска)

В результате проведенного поиска функция возвращает число, указывающее номер позиции первого вхождения строки.

Рассмотрим такой пример. Введите в окне Immediate следующую команду:

Print InStr ("Сегодня прекрасная погода", "погода")

В результате будет возвращено число 20.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Объединение строк

В Visual Basic для работы со строками можно использовать только один оператор — оператор объединения. С помощью данного оператора можно объединять несколько строк в одну. Этот оператор обозначается символом амперсанда (&).

Замечание

В предыдущих версиях Visual Basic для объединения строк использовался символ "плюс" (+). В Visual Basic 6 этот оператор также поддерживается.

Например, объединение строк удобно использовать при формировании полного адреса, если известен индекс, город и улица. В следующем примере и на рис. 5.7 показан результат объединения фамилии, имени и отчества в окне Immediate:

sLastName = "Иванов "

sFirstName = "Иван "

sSecondName = "Иванович"

sName = sLastName & sFirstName & sSecondName

Print sName ' Возвращает "Иванов Иван Иванович"

Рис. 5.7. Объединение строк


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оформление программных кодов

При написании программных кодов программисту необходимо позаботиться о том, чтобы программа была читабельной, то есть снабжена достаточным количеством комментариев, а операторы большой длины были размещены на нескольких строках. О средствах, позволяющих этого добиться, пойдет речь в данном разделе.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Комментарии

Помимо команд и выражении, вы можете включить в свои методы и процедуры любой произвольный текст или комментарии. Комментарии, поясняющие текст программы, сделают ее более читабельной и помогут вам или другим пользователям лучше ориентироваться в программе.

Для включения в текст программы комментария необходимо ввести символ ('), который может быть первым символом в строке или находиться в любом ее месте. Этот символ означает начало комментария. Любой текст, расположенный в строке следом за этим символом, будет восприниматься как комментарий, то есть Visual Basic не будет транслировать этот текст. Например:

' Комментарий, начинающийся с начала строки

Print strName ' Комментарий, следующий за оператором

Совет

Сопровождая программы комментариями, вы сэкономите время и усилия при отладке и модификации программ.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Размещение оператора на нескольких строках

В том случае, когда оператор имеет большую длину, его можно разбить на несколько строк, используя символы продолжения строки: пробел, за которым следует символ подчеркивания (_).

Например, поместим на двух строках оператор, объединяющий фамилию, имя и отчество:

strName = strLastname & strFirstname & strSecondname

Получим следующее:

strName = strLastname _

& strFirstname & strSecondname


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Размещение нескольких операторов на одной строке

Как правило, при написании программ операторы размещают на отдельной строке. Если операторы имеют небольшую длину, Visual Basic позволяет их поместить на одной строке, разделив двоеточием. Например:

strLastname = "Иванов ": strFirstname = "Иван "


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Программные модули

Программы Visual Basic хранятся в программных модулях, которые бывают трех видов: модуль формы, стандартный модуль и модуль класса.

Простое приложение, состоящее из одной формы, содержит, как правило, только модуль формы. По мере усложнения приложения повторяющиеся функции, выполняемые с нескольких модулей формы, можно выделить в отдельный программный код, который будет являться общим для всех. Такой программный код называется стандартным модулем. При использовании в Visual Basic объектно-ориентированного программирования создаются модули классов.

Модули формы могут содержать объявления переменных, констант, типов данных, внешних процедур, используемых на уровне модуля, процедур обработки событий. Они хранятся в файлах, имеющих расширение frm. В модуле можно также ссылаться на другие формы и объекты данного приложения.

Стандартные модули могут содержать объявления глобальных и локальных переменных, констант, типов, внешних процедур и процедур общего характера, доступных для других модулей данного приложения. Они хранятся в файлах с расширением bas.

Используя объектно-ориентированное программирование, в Visual Basic можно создавать новые объекты с разработанными для них свойствами и методами, помещая их в модули классов, хранящихся в файлах с расширением els.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Редактирование исходных кодов

Для создания программных кодов в Visual Basic используется редактор кода. Чтобы его запустить, необходимо в окне Project Explorer установить курсор на форму или на модуль, для которого создается код, и выполнить одно из следующих действий:

  • в меню View (Вид) выбрать команду Code (Код);
  • из контекстного меню модуля выбрать команду View Code.

При выполнении любого из этих действий открывается окно редактирования (рис. 5.8), в которое можно вводить текст программы. Для каждого модуля в Visual Basic создается отдельное окно кода, разделенное внутри на секции. Выбор секции в окне кода осуществляется с помощью списка Object, расположенного слева в верхней части окна.

В верхней части окна Project расположены два раскрывающихся списка: Object (Объект) и Procedure (Процедура). Левый список Object позволяет осуществлять переход между секциями. Для стандартного модуля список Object содержит общую секцию (General). В модуле класса этот список содержит общую секцию и секцию класса. В форме список Object содержит общую секцию, секцию для формы (Form), а также секции для всех размещенных в форме объектов.

Рис. 5.8. Окно редактирования исходного кода

Для каждой секции, выбранной из списка Object, можно создать процедуру, доступ к которым осуществляется с помощью списка Procedure окна редактора кода, содержащего события. При выборе из списка Object общей секции модуля (General) список Procedure содержит только одно значение Declarations (Объявления), позволяющее объявить локальные переменные, константы и библиотеки DLL.

Написание программных кодов в Visual Basic облегчается тем, что редактор автоматически предлагает разработчику по мере необходимости список операторов, функций, свойств объектов. Например, при вводе имени элемента управления формы на экране появляется список свойств данного объекта (рис. 5.9). Вам достаточно дважды щелкнуть мышью в списке на нужном свойстве, и оно будет перенесено в программный код.

Редактор Visual Basic также предоставляет пользователю подсказки с синтаксисом при написании операторов и функций (рис. 5.10). Они появляются на экране под курсором при вводе наименования оператора или функции.

Рис. 5.9. Использование списка свойств объекта для написания кода

Рис. 5.10. Использование подсказок синтаксиса операторов и функций

Замечание

Если при написании кода не появляется список со свойствами объектов и подсказки с синтаксисом операторов и функций, то в меню Tools (Сервис) выберите команду Options (Параметры) и на вкладке Editor (Редактор) диалогового окна Options установите флажки Auto List Members (Члены автоматического списка) и Auto Quick Info (Быстрая автоматическая информация). Для подключения этих возможностей редактора можно также использовать комбинации клавиш <Ctrl>+<J> и <Ctrl>+<|>, соответственно.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Процедуры

При программировании широко используются процедуры, позволяющие разбивать программные коды на небольшие логические блоки, которые, во-первых, легче отлаживать, а во-вторых, можно в свою очередь использовать при создании других процедур. В Visual Basic существуют следующие виды процедур:

  • Sub
  • Function
  • Property


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Процедуры Sub

Процедура sub не возвращает значения и наиболее часто используется для обработки связанного с ней события. Ее можно помещать в стандартные модули, модули классов и форм. Она имеет следующий синтаксис:

[Private] [Public] [Static} Sub имяПроцедуры (аргументы)

операторы

End Sub

Между ключевыми словами Sub и End Sub в процедуре располагаются выполняемые при ее вызове операторы программного кода. Параметр аргументы можно применять для объявления передаваемых в процедуру переменных.

Процедуры Sub подразделяются на общие процедуры и процедуры событий. Общие процедуры служат для размещения повторяющихся операторов, используемых процедурами по обработке событии, тем самым разгружая их и исключая дублирование часто встречающихся кодов, что в свою очередь облегчает поддержку приложения.

Процедуры обработки событий связаны с объектами, размещенными в формах Visual Basic, или с самой формой и выполняются при наступлении события, с которым они связаны. Для события, связанного с формой, процедура sub имеет следующий синтаксис:

Private Sub Form имяСобытия (аргументы)

операторы

End Sub

Как видно из синтаксиса, наименование процедуры обработки события для формы содержит слово Form, затем размещается символ подчеркивания (_) и имя события. Например, имя процедуры, выполняемой при загрузке формы, будет Form_Load, а процедуры, выполняемой при щелчке мыши на форме — Form_click. При формировании процедуры для формы MDI ее имя будет содержать перед словом Form приставку MDI, то есть записываться MDiForm.

Для события, связанного с элементом управления формы, процедура обработки событий sub имеет следующий синтаксис:

Private Sub имяЭлементаУправления имяСобытия (аргументы)

операторы

End Sub

Наименование процедуры обработки события для элемента управления формы содержит имя элемента управления, заданное в свойстве Name, затем следует символ подчеркивания (_) и имя события. Например, имя процедуры, выполняемой при щелчке мыши на кнопке управления, имеющей наименование cmdPrint будет Form_Click.

Visual Basic облегчает формирование имен создаваемых процедур. Разработчику необходимо выполнить для этого следующие действия:

1. В окне Properties с помощью свойства Name (Имя) задать имя объекта, для которого создается процедура. Если имя не будет задано, то при создании процедуры Visual Basic использует имя, присваиваемое объекту по умолчанию при его размещении в форме. При последующем изменении наименования объекта необходимо будет изменить и имя процедуры.

2. В окне редактора кода из списка Object (Объект) выбрать объект, для которого создается процедура.

3. Из списка Procedure (Процедура) выбрать событие, обработка которого будет выполняться.

После выполнения указанных действий в области размещения процедур редактора кода будут размещены операторы sub и End sub с указанием наименования процедуры (рис. 5.11). Вам необходимо разместить между этими операторами выполняемый при наступлении этого события программный код.

Рис. 5.11. Visual Basic формирует наименование процедуры

Предупреждение

В случае, если после создания процедуры имя элемента управления будет изменено, а имя связанной с ним процедуры останется прежним, процедура станет общей.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Процедуры Function

Процедуры Function в отличие от процедур sub могут возвращать значение в вызывающую процедуру. Синтаксис процедуры Function выглядит следующим образом:

[Private] [Public] [Static} Function имяПроцедуры (аргументы) [As type]

операторы

End Function

Процедуры Function, как и переменные, имеют тип, задаваемый с помощью ключевого слова As. Если тип процедуры не задан, по умолчанию ей присваивается тип Variant. Тип процедуры определяет в свою очередь тип возвращаемого ею значения. Возвращаемое процедурой значение присваивается имени процедуры имяПроцедуры и может быть использовано в выражениях программного кода аналогично стандартным функциям Visual Basic.

Рассмотрим процедуру, вычисляющую площадь квадрата:

Function Square (intA As Integer) As Integer

Square = intA ^ 2

End Function

Для вызова этой процедуры в форме можно использовать, например, следующий код:

TxtSquare.Text = Square(TxtSide.Text)


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Вызов процедур

Процедура sub не возвращает значения, однако она может изменять значения переменных, заданных для нее в качестве параметров. Вызов процедуры Sub можно осуществлять двумя способами. Первый способ предполагает использование ключевого слова Call. Например, процедуру с именем Nameproc можно вызвать оператором

Call NameProc (аргумент1, аргумент2, ...аргументы)

Второй способ позволяет вызвать процедуру sub по ее имени. Например,

NameProc аргумент1, аргумент2, ...аргументы

При вызове процедуры модуля формы из другого модуля необходимо указывать ссылку на имя модуля формы, содержащего процедуру. Например, для вызова процедуры с именем Nameproc, находящейся в модуле формы Form1, оператор должен выглядеть так:

Call Form1.NameProc (аргумент1, аргумент2, ...аргументМ)

Вызов процедуры Function аналогичен вызову встроенных функций Visual Basic. Кроме этого, процедуру Function можно вызывать так же, как процедуру Sub:

Call Square(Side)

Square Side

В этом случае Visual Basic игнорирует возвращаемое функцией значение.


ch5.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Передача параметров

Переменные, передаваемые процедуре, называют параметрами процедуры. По умолчанию они имеют тип variant. Visual Basic позволяет задавать тип параметров с помощью ключевого слова As:

Function Square (intA As Integer) As Integer

Передача параметров в процедуру может осуществляться двумя способами:

по значению (by value) и по ссылке (by reference). В первом случае в процедуру в качестве переменной передается не сама переменная, а ее копия. Поэтому изменение параметра в процедуре затрагивает не переменную, а ее копию. Для передачи в процедуру параметров по ссылке используется ключевое слово ByVal, например:

Sub NameProc (ByVal strArg As String)

тело процедуры

End Sub

При передаче параметров по ссылке процедура получает доступ к области памяти, в которой эта переменная хранится, в результате чего при изменении в процедуре параметра происходит изменение значения переменной.

Замечание

По умолчанию в Visual Basic передача параметров в процедуру осуществляется по ссылке.

Используя ключевое слово optional, можно задавать необязательные параметры процедуры. При этом необходимо иметь в виду, что если какой-либо из параметров задан как необязательный, то и расположенные после него параметры также должны быть объявлены необязательными:

Sub NameProc (Optional strArg1 As String, Optional strArg2 As String)

тело процедуры

End Sub

Обязательные параметры процедуры должны задаваться до необязательных, например:

Sub NameProc (strArg1 As String, Optional strArg2 As String)

тело процедуры

End Sub


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 6 Управляющие конструкции и циклы

В этой главе рассматриваются конструкции Visual Basic, позволяющие управлять последовательностью выполнения программы. Данные конструкции называют также операторами управления или конструкциями принятия решений, так как они изменяют естественный ход последовательного выполнения операторов программы. Без использования этих конструкций программа выполняется последовательно от первого оператора до последнего. Применение операторов принятия решения позволяет выполнять определенные действия в зависимости от условий, возникающих в программе. С помощью циклов можно выполнять в программах повторяющиеся действия.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Управляющие конструкции Visual Basic

Как вы уже знаете, конструкции выполняются в той последовательности, в которой они записаны в программе. Однако достаточно часто вам требуется изменить порядок выполнения команд в зависимости от выполнения (или невыполнения) определенного условия. В Visual Basic, как и во всех языках программирования, существуют управляющие конструкции, предназначенные для управления порядком выполнения команд. Различают два основных типа управляющих операторов

  • if
  • Select Case

Конструкция if используется в том случае, когда необходимо, чтобы группа операторов выполнялась при соблюдении определенных условий. Конструкция select case позволяет на основании анализа значения заданного выражения выполнять те или иные действия.

В свою очередь, управляющие операторы if бывают двух видов:

  • If...Then
  • If...Then...Else

Конструкция If...Then применяется, когда необходимо выполнить определенные действия в зависимости от некоторого условия. Управляющая конструкция If...Then...Else используется в том случае, когда необходимо выполнить разные действия в зависимости от условия.

Рассмотрим перечисленные управляющие конструкции более подробно.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Условные выражения

Основанием для принятия решений в управляющих конструкциях являются условные выражения, поэтому предварительно необходимо сказать несколько слов об этих выражениях и работе с ними.

Условные выражения — это такие выражения, которые возвращают одно из двух значений True (Истина) или False (Ложь). В условных выражениях используются операторы сравнения, приведенные в табл. 6.1.

Таблица 6.1. Операторы сравнения для условных выражений
Оператор | Назначение
= | Равно
> | Больше
< | Меньше
<> | Не равно
>= | Больше или равно
<= | Меньше или равно

Над условными выражениями можно выполнять действия логической математики (логические операции), а именно:

  • AND (И) — возвращает значение True (Истина), если все участвующие в операции выражения имеют значение True. В остальных случаях возвращается значение False (Ложь);
  • OR (ИЛИ) — возвращает значение True, если хотя бы одно из участвующих в операции выражений имеет значение True. В случае, когда все выражения имеют значение False, возвращается значение False;
  • XOR (Исключающее ИЛИ) — возвращает значение True (Истина), если только одно из участвующих в операции выражений имеет значение True. В остальных случаях возвращается значение False;
  • NOT (HE) — операция отрицания. Возвращает обратное для значения выражения значение, то есть если выражение равно True, то возвращается False и наоборот, если значение выражения равно False, то возвращается значение True.

Синтаксис использования логических операций такой же, как и у арифметических операций. Например:

(выражение1 And выражение2 And выражениеЗ) Or (выражение4 Хог выражение5)

Скобки в условных выражениях действуют так же, как и в арифметических, то есть первыми всегда выполняются операции в скобках.

Сложные выражения можно предварительно вычислить и хранить в логических переменных типа Boolean. Например, предыдущий код с использованием переменных можно представить следующим образом:

Dim bVar1 As Boolean

Dim bVar2 As Boolean

bVarl = выражение! And выражение2 And выражениеЗ

bVar2 = (выражение4 Xor выражение5)

Итоговым будет следующее выражение:

bVarl Or bVar2


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Конструкция If... Then

Конструкция If.. .Then применяется в том случае, когда необходимо выполнить один или группу операторов при соблюдении определенного условия, то есть когда значение заданного условия равно True. Существует две разновидности данного оператора: однострочный и многострочный. Однострочный оператор имеет следующий синтаксис:

IF условие Then конструкция

В этом операторе условие и выполняемые при соблюдении условий действия располагаются в одной строке.

В том случае, если при выполнении условия требуется выполнение блока операторов, используется многострочный оператор, имеющий следующий синтаксис:

IF условие Then

конструкции

End If

Исходя из синтаксиса, приведенные ниже программные коды выполняют одни и те же действия:

' Однострочный оператор

IF y>20 Then y=2

' Многострочный оператор

IF y>20 Then

У=2

End If

После имени конструкции if должно следовать логическое выражение, содержащее условие. В качестве условия могут выступать следующие логические выражения:

  • сравнение переменной с другой переменной, константой или функцией;
  • любая переменная, выражение, поле базы данных или функция, принимающие значения True или False.

Ключевое слово End if обозначает конец многострочной конструкции и его наличие в команде в этом случае обязательно. Если указанное условие выполняется, то есть результат проверки равен True, то Visual Basic выполнит конструкции, следующие за ключевым словом Then. Если условие не выполняется, то Visual Basic переходит к выполнению операторов, следующих за указанным оператором.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Конструкция If... Then... Else

Конструкция if.. .Then.. .Else аналогична конструкции if...Then, но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения.

Конструкция имеет следующий синтаксис:

IF условие Then .

Конструкции для обработки истинного условия

Else

Конструкции для обработки ложного условия

End If

Ключевые слова IF и End if имеют тот же смысл, что и в конструкции If...Then. Если заданное в конструкции условие не выполняется (результат проверки равен False), и конструкция содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. После чего управление перейдет к конструкции, следующей после End If.

Например:

If x >= 0 Then

Label1.Caption = "Значение больше или равно 0"

Else

Labell.Caption = "Значение меньше 0"

End If

Команда if может проверить только одно условие. Если вам потребуется осуществить переход управления в зависимости от результатов проверки нескольких условий, то такая возможность существует. Дополнительное условие можно задать с помощью оператора Elseif. Оно будет анализироваться только в том случае, если предыдущее условие ложно. Например:

If x > 0 Then

Label1.Caption = "Значение положительное"

Elself x = 0 Then

Label1.Caption = "Значение равно 0"

Else

Labell.Caption = "Значение отрицательное"

End If


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Конструкция Select Case

Конструкция Select case позволяет обрабатывать в программе несколько условий и аналогична блоку конструкций if.. .Then.. .Else. Эта конструкция состоит из анализируемого выражения и набора операторов case на каждое возможное значение выражения. Работает эта конструкция следующим образом. Сначала Visual Basic вычисляет значение заданного в конструкции выражения. Затем полученное значение сравнивается со значениями, задаваемыми в операторах case конструкции. Если найдено искомое значение, выполняются команды, приписанные данному оператору case. После завершения выполнения конструкций управление будет передано конструкции, следующей за ключевым словом End Select.

Синтаксис конструкции Select Case следующий:

Select Case сравниваемоеЗначение

CASE значение1

конструкция1

CASE значение2

конструкция2

. . .

End Select

В начале конструкции расположены ключевые слова select case, указывающие, что расположенный рядом с ними параметр сравниваемоеЗначение будет проверяться на несколько значений. Далее следуют группы команд. начинающиеся с ключевого слова Case. Если параметр сравниваемоеЗначение равен значению, указанному в текущем операторе case, то будут выполняться команды, расположенные между этим и следующим ключевым словом case.

В качестве примера воспользуемся конструкцией Select Case для решения предыдущей задачи:

Select Case x

CASE 1 То 9

Labell.Caption = "Значение больше 0"

CASE 0

Labell.Caption = "Значение равно 0"

CASE -9 То -1

Label1.Caption = "Значение меньше 0"

End Select

Замечание

Обратите внимание, что Select Case может выполнить не более одной из содержащихся в ней последовательностей конструкций. После того как одно из условий оказалось равно True, и была выполнена соответствующая последовательность конструкций, Select Case завершит свою работу. Остальные условия проверяться не будут.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 6 Управляющие конструкции и циклы

В этой главе рассматриваются конструкции Visual Basic, позволяющие управлять последовательностью выполнения программы. Данные конструкции называют также операторами управления или конструкциями принятия решений, так как они изменяют естественный ход последовательного выполнения операторов программы. Без использования этих конструкций программа выполняется последовательно от первого оператора до последнего. Применение операторов принятия решения позволяет выполнять определенные действия в зависимости от условий, возникающих в программе. С помощью циклов можно выполнять в программах повторяющиеся действия.

Управляющие конструкции Visual Basic

Как вы уже знаете, конструкции выполняются в той последовательности, в которой они записаны в программе. Однако достаточно часто вам требуется изменить порядок выполнения команд в зависимости от выполнения (или невыполнения) определенного условия. В Visual Basic, как и во всех языках программирования, существуют управляющие конструкции, предназначенные для управления порядком выполнения команд. Различают два основных типа управляющих операторов

  • if
  • Select Case

Конструкция if используется в том случае, когда необходимо, чтобы группа операторов выполнялась при соблюдении определенных условий. Конструкция select case позволяет на основании анализа значения заданного выражения выполнять те или иные действия.

В свою очередь, управляющие операторы if бывают двух видов:

  • If...Then
  • If...Then...Else

Конструкция If...Then применяется, когда необходимо выполнить определенные действия в зависимости от некоторого условия. Управляющая конструкция If...Then...Else используется в том случае, когда необходимо выполнить разные действия в зависимости от условия.

Рассмотрим перечисленные управляющие конструкции более подробно.

Условные выражения

Основанием для принятия решений в управляющих конструкциях являются условные выражения, поэтому предварительно необходимо сказать несколько слов об этих выражениях и работе с ними.

Условные выражения — это такие выражения, которые возвращают одно из двух значений True (Истина) или False (Ложь). В условных выражениях используются операторы сравнения, приведенные в табл. 6.1.

Таблица 6.1. Операторы сравнения для условных выражений
Оператор | Назначение
= | Равно
> | Больше
< | Меньше
<> | Не равно
>= | Больше или равно
<= | Меньше или равно

Над условными выражениями можно выполнять действия логической математики (логические операции), а именно:

  • AND (И) — возвращает значение True (Истина), если все участвующие в операции выражения имеют значение True. В остальных случаях возвращается значение False (Ложь);
  • OR (ИЛИ) — возвращает значение True, если хотя бы одно из участвующих в операции выражений имеет значение True. В случае, когда все выражения имеют значение False, возвращается значение False;
  • XOR (Исключающее ИЛИ) — возвращает значение True (Истина), если только одно из участвующих в операции выражений имеет значение True. В остальных случаях возвращается значение False;
  • NOT (HE) — операция отрицания. Возвращает обратное для значения выражения значение, то есть если выражение равно True, то возвращается False и наоборот, если значение выражения равно False, то возвращается значение True.

Синтаксис использования логических операций такой же, как и у арифметических операций. Например:

(выражение1 And выражение2 And выражениеЗ) Or (выражение4 Хог выражение5)

Скобки в условных выражениях действуют так же, как и в арифметических, то есть первыми всегда выполняются операции в скобках.

Сложные выражения можно предварительно вычислить и хранить в логических переменных типа Boolean. Например, предыдущий код с использованием переменных можно представить следующим образом:

Dim bVar1 As Boolean

Dim bVar2 As Boolean

bVarl = выражение! And выражение2 And выражениеЗ

bVar2 = (выражение4 Xor выражение5)

Итоговым будет следующее выражение:

bVarl Or bVar2

Конструкция If... Then

Конструкция If.. .Then применяется в том случае, когда необходимо выполнить один или группу операторов при соблюдении определенного условия, то есть когда значение заданного условия равно True. Существует две разновидности данного оператора: однострочный и многострочный. Однострочный оператор имеет следующий синтаксис:

IF условие Then конструкция

В этом операторе условие и выполняемые при соблюдении условий действия располагаются в одной строке.

В том случае, если при выполнении условия требуется выполнение блока операторов, используется многострочный оператор, имеющий следующий синтаксис:

IF условие Then

конструкции

End If

Исходя из синтаксиса, приведенные ниже программные коды выполняют одни и те же действия:

' Однострочный оператор

IF y>20 Then y=2

' Многострочный оператор

IF y>20 Then

У=2

End If

После имени конструкции if должно следовать логическое выражение, содержащее условие. В качестве условия могут выступать следующие логические выражения:

  • сравнение переменной с другой переменной, константой или функцией;
  • любая переменная, выражение, поле базы данных или функция, принимающие значения True или False.

Ключевое слово End if обозначает конец многострочной конструкции и его наличие в команде в этом случае обязательно. Если указанное условие выполняется, то есть результат проверки равен True, то Visual Basic выполнит конструкции, следующие за ключевым словом Then. Если условие не выполняется, то Visual Basic переходит к выполнению операторов, следующих за указанным оператором.

Конструкция If... Then... Else

Конструкция if.. .Then.. .Else аналогична конструкции if...Then, но позволяет задать действия, исполняемые как при выполнении условий, так и в случае их невыполнения.

Конструкция имеет следующий синтаксис:

IF условие Then .

Конструкции для обработки истинного условия

Else

Конструкции для обработки ложного условия

End If

Ключевые слова IF и End if имеют тот же смысл, что и в конструкции If...Then. Если заданное в конструкции условие не выполняется (результат проверки равен False), и конструкция содержит ключевое слово Else, Visual Basic выполнит последовательность конструкций, расположенных следом за Else. После чего управление перейдет к конструкции, следующей после End If.

Например:

If x >= 0 Then

Label1.Caption = "Значение больше или равно 0"

Else

Labell.Caption = "Значение меньше 0"

End If

Команда if может проверить только одно условие. Если вам потребуется осуществить переход управления в зависимости от результатов проверки нескольких условий, то такая возможность существует. Дополнительное условие можно задать с помощью оператора Elseif. Оно будет анализироваться только в том случае, если предыдущее условие ложно. Например:

If x > 0 Then

Label1.Caption = "Значение положительное"

Elself x = 0 Then

Label1.Caption = "Значение равно 0"

Else

Labell.Caption = "Значение отрицательное"

End If

Конструкция Select Case

Конструкция Select case позволяет обрабатывать в программе несколько условий и аналогична блоку конструкций if.. .Then.. .Else. Эта конструкция состоит из анализируемого выражения и набора операторов case на каждое возможное значение выражения. Работает эта конструкция следующим образом. Сначала Visual Basic вычисляет значение заданного в конструкции выражения. Затем полученное значение сравнивается со значениями, задаваемыми в операторах case конструкции. Если найдено искомое значение, выполняются команды, приписанные данному оператору case. После завершения выполнения конструкций управление будет передано конструкции, следующей за ключевым словом End Select.

Синтаксис конструкции Select Case следующий:

Select Case сравниваемоеЗначение

CASE значение1

конструкция1

CASE значение2

конструкция2

. . .

End Select

В начале конструкции расположены ключевые слова select case, указывающие, что расположенный рядом с ними параметр сравниваемоеЗначение будет проверяться на несколько значений. Далее следуют группы команд. начинающиеся с ключевого слова Case. Если параметр сравниваемоеЗначение равен значению, указанному в текущем операторе case, то будут выполняться команды, расположенные между этим и следующим ключевым словом case.

В качестве примера воспользуемся конструкцией Select Case для решения предыдущей задачи:

Select Case x

CASE 1 То 9

Labell.Caption = "Значение больше 0"

CASE 0

Labell.Caption = "Значение равно 0"

CASE -9 То -1

Label1.Caption = "Значение меньше 0"

End Select

Замечание

Обратите внимание, что Select Case может выполнить не более одной из содержащихся в ней последовательностей конструкций. После того как одно из условий оказалось равно True, и была выполнена соответствующая последовательность конструкций, Select Case завершит свою работу. Остальные условия проверяться не будут.

Циклы

В программах Visual Basic для выполнения повторяющихся действий используются циклы. Они бывают следующих типов:

  • For...Next
  • For Each...Next
  • Do. . . Loop

Рассмотрим перечисленные конструкции.

Цикл с использованием конструкции For...Next

Конструкция For...Next выполняет последовательность команд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды — телом цикла.

Синтаксис конструкции For.. .Next следующий:

For счетчик = начЗначение То конЗначение [Step шаг]

конструкции

Next[счетчик]

Первый аргумент конструкции — счетчик — определяет имя переменной, которая будет "считать" количество выполнении цикла. Параметр начЗначение указывает числовое значение, которое присваивается переменной-счетчику перед первым проходом цикла. Цикл выполняется до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова то. После каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step. Ключевое слово Next обозначает конец тела цикла и является обязательным.

Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превышает установленного значения конЗначение, выполняются конструкции тела цикла. В противном случае управление переходит к следующей за Next конструкции. Например:

For nCountVar = 1 То 10 Step 2

nNextWeek(nCountVar) = nCountVar * 2

Next

Здесь цикл выполняется пять раз при значениях счетчика nCountVar 1, 3, 5, 7 и 9. Обратите внимание, что переменная-счетчик используется в теле цикла в качестве обычной переменной.

Шаг изменения счетчика может быть отрицательным. Например:

For nCounter = 100 То 1 Step -10

nDecades(nCounter) = nCounter *2

Next

В этом случае цикл будет выполняться до тех пор, пока nCountVar больше 1. Если значение шага цикла отрицательно, то начальное значение счетчика должно быть больше конечного.

Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1.

Возможны ситуации, при которых выполнение цикла невозможно или, наоборот, его выполнение становится бесконечным. Например:

* Невыполняемый цикл: начальное значение счетчика

* больше конечного при положительном шаге цикла

For nCounter=100 To 1

nDecades (nCounter) = nCounter

Next

* Бесконечный цикл: значение счетчика

* изменяется в теле цикла и никогда не превысит 10 For nCounter = 1 То 10

nCounter = 1

Next

Цикл с использованием конструкции For Each... Next

Цикл с использованием конструкции For Each...Next похож на цикл For.. .Next, но используется для обработки всех элементов некоторого набора объектов или массива. Его особенно удобно использовать в том случае, когда количество обрабатываемых элементов не известно.

Синтаксис конструкции For Each.. .Next следующий:

For Each элемент In группа

конструкции

Next элемент

Пример использования конструкции приведен ниже.

Dim objControl As Control

For Each objControl In Controls

objControl.Caption = "Test " & objControl.Caption

Next objControl

Замечание

При использовании конструкции For Each.. .Next необходимо иметь в виду, что для набора объектов параметр элемент может быть только переменной типа Variant, общей переменной типа Object или объектом, перечисленным в Object Browser. Для массивов параметр элемент может быть только переменной типа Variant.

Цикл с использованием конструкции Do...Loop

Цикл, задаваемый конструкцией Do... Loop, выполняется до тех пор, пока истинно задаваемое в цикле условие.

Синтаксис конструкции DO. . .Loop следующий:

Do While условие

конструкции

Loop

Аргумент конструкции условие является логическим выражением, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop. Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop. Возможна ситуация, при которой операторы цикла не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.

В Visual Basic существует еще один вид цикла конструкции DO... Loop. Он отличается от рассмотренного ранее местом расположения условия. Если в предыдущей конструкции условие, по которому выполняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:

Do

конструкции

Loop While условие

При использовании этой формы оператора тело цикла выполняется хотя бы один раз, после чего осуществляется проверка заданного условия.

Есть еще две разновидности конструкции цикла Do. . .Loop. Они аналогичны рассмотренным ранее, но отличаются тем, что цикл выполняется до тех пор, пока условие ложно, а не истинно. Данные операторы имеют следующий синтаксис:

Do Until условие

конструкции

Loop

и

Do

конструкции

Loop Until условие

Пример использования конструкции приведен ниже.

nCounter = 2

Do While nCounter < 10

nDecades(nCounter) = nCounter * 2

nCounter = nCounter * 2

Loop

Оператор Exit

В некоторых случаях необходимо прервать выполнение цикла до его завершения. Это можно сделать с помощью команды безусловного перехода Exit.

Команда Exit завершает выполнение цикла и передает управление следующей за циклом конструкции. Синтаксис этого оператора внутри цикла For выглядит так: Exit For. Внутри цикла Do синтаксис оператора Exit Do.

For счетчик = начЗначение То конЗначение [Step шаг]

[конструкции]

[Exit For]

[конструкции]

Next[счетчик[, счетчик] [,...]]

Do [{While ¦ Until} условие]

конструкции

[Exit Do]

конструкции

Loop

Например:

For nCounter=100 To 1 Step -10

nDecades(nCounter) = nCounter *2

If nDecades(nCounter) > 20 Then Exit For

Next

Оператор Exit служит также для выхода из процедур sub и Function. Синтаксис операторов в этом случае соответственно Exit Sub и Exit Function. Эти операторы могут находиться в любом месте тела процедуры. Они используются в том случае, когда процедура выполнила нужные действия и из нее необходимо выйти.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Циклы

В программах Visual Basic для выполнения повторяющихся действий используются циклы. Они бывают следующих типов:

  • For...Next
  • For Each...Next
  • Do. . . Loop

Рассмотрим перечисленные конструкции.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Цикл с использованием конструкции For...Next

Конструкция For...Next выполняет последовательность команд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды — телом цикла.

Синтаксис конструкции For.. .Next следующий:

For счетчик = начЗначение То конЗначение [Step шаг]

конструкции

Next[счетчик]

Первый аргумент конструкции — счетчик — определяет имя переменной, которая будет "считать" количество выполнении цикла. Параметр начЗначение указывает числовое значение, которое присваивается переменной-счетчику перед первым проходом цикла. Цикл выполняется до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова то. После каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step. Ключевое слово Next обозначает конец тела цикла и является обязательным.

Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превышает установленного значения конЗначение, выполняются конструкции тела цикла. В противном случае управление переходит к следующей за Next конструкции. Например:

For nCountVar = 1 То 10 Step 2

nNextWeek(nCountVar) = nCountVar * 2

Next

Здесь цикл выполняется пять раз при значениях счетчика nCountVar 1, 3, 5, 7 и 9. Обратите внимание, что переменная-счетчик используется в теле цикла в качестве обычной переменной.

Шаг изменения счетчика может быть отрицательным. Например:

For nCounter = 100 То 1 Step -10

nDecades(nCounter) = nCounter *2

Next

В этом случае цикл будет выполняться до тех пор, пока nCountVar больше 1. Если значение шага цикла отрицательно, то начальное значение счетчика должно быть больше конечного.

Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1.

Возможны ситуации, при которых выполнение цикла невозможно или, наоборот, его выполнение становится бесконечным. Например:

* Невыполняемый цикл: начальное значение счетчика

* больше конечного при положительном шаге цикла

For nCounter=100 To 1

nDecades (nCounter) = nCounter

Next

* Бесконечный цикл: значение счетчика

* изменяется в теле цикла и никогда не превысит 10 For nCounter = 1 То 10

nCounter = 1

Next


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Цикл с использованием конструкции For Each... Next

Цикл с использованием конструкции For Each...Next похож на цикл For.. .Next, но используется для обработки всех элементов некоторого набора объектов или массива. Его особенно удобно использовать в том случае, когда количество обрабатываемых элементов не известно.

Синтаксис конструкции For Each.. .Next следующий:

For Each элемент In группа

конструкции

Next элемент

Пример использования конструкции приведен ниже.

Dim objControl As Control

For Each objControl In Controls

objControl.Caption = "Test " & objControl.Caption

Next objControl

Замечание

При использовании конструкции For Each.. .Next необходимо иметь в виду, что для набора объектов параметр элемент может быть только переменной типа Variant, общей переменной типа Object или объектом, перечисленным в Object Browser. Для массивов параметр элемент может быть только переменной типа Variant.


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Цикл с использованием конструкции Do...Loop

Цикл, задаваемый конструкцией Do... Loop, выполняется до тех пор, пока истинно задаваемое в цикле условие.

Синтаксис конструкции DO. . .Loop следующий:

Do While условие

конструкции

Loop

Аргумент конструкции условие является логическим выражением, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop. Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop. Возможна ситуация, при которой операторы цикла не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.

В Visual Basic существует еще один вид цикла конструкции DO... Loop. Он отличается от рассмотренного ранее местом расположения условия. Если в предыдущей конструкции условие, по которому выполняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:

Do

конструкции

Loop While условие

При использовании этой формы оператора тело цикла выполняется хотя бы один раз, после чего осуществляется проверка заданного условия.

Есть еще две разновидности конструкции цикла Do. . .Loop. Они аналогичны рассмотренным ранее, но отличаются тем, что цикл выполняется до тех пор, пока условие ложно, а не истинно. Данные операторы имеют следующий синтаксис:

Do Until условие

конструкции

Loop

и

Do

конструкции

Loop Until условие

Пример использования конструкции приведен ниже.

nCounter = 2

Do While nCounter < 10

nDecades(nCounter) = nCounter * 2

nCounter = nCounter * 2

Loop


ch6.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Оператор Exit

В некоторых случаях необходимо прервать выполнение цикла до его завершения. Это можно сделать с помощью команды безусловного перехода Exit.

Команда Exit завершает выполнение цикла и передает управление следующей за циклом конструкции. Синтаксис этого оператора внутри цикла For выглядит так: Exit For. Внутри цикла Do синтаксис оператора Exit Do.

For счетчик = начЗначение То конЗначение [Step шаг]

[конструкции]

[Exit For]

[конструкции]

Next[счетчик[, счетчик] [,...]]

Do [{While ¦ Until} условие]

конструкции

[Exit Do]

конструкции

Loop

Например:

For nCounter=100 To 1 Step -10

nDecades(nCounter) = nCounter *2

If nDecades(nCounter) > 20 Then Exit For

Next

Оператор Exit служит также для выхода из процедур sub и Function. Синтаксис операторов в этом случае соответственно Exit Sub и Exit Function. Эти операторы могут находиться в любом месте тела процедуры. Они используются в том случае, когда процедура выполнила нужные действия и из нее необходимо выйти.


Ch 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 7. Разработка пользовательского интерфейса.

Интерфейс — это внешняя оболочка приложения вместе с программами управления доступом и другими скрытыми от пользователя механизмами управления, дающая возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами. Главная цель любого приложения — обеспечить максимальное удобство и эффективность работы с информацией: документами, базами данных, графикой или изображениями. Поэтому интерфейс является, пожалуй, самой важной частью любого приложения.

Хорошо разработанный интерфейс гарантирует удобство работы с приложением и, в конечном итоге, его коммерческий успех. В данной главе описаны виды интерфейсов и процесс создания интерфейса со всеми его основными элементами управления: меню, контекстным меню, панелями инструментов, строкой состояния.

Проектирование интерфейса — процесс циклический. На этом этапе разработки приложения желательно чаще общаться с пользователями и заказчиками приложения для выработки наиболее приемлемых по эффективности. удобству и внешнему виду интерфейсных решений.

Выбор того или иного типа интерфейса зависит от сложности разрабатываемого приложения, поскольку каждый из них имеет некоторые недостатки и ограничения и предназначен для решения определенных задач. При этом необходимо ответить на ряд вопросов: какое количество типов документов обрабатывается в приложении, имеют ли данные древовидную иерархию, потребуется ли панель инструментов, какое количество документов обраба-тывается за некоторый интервал времени (например, за день) и т. д. Toлько после этого можно выбирать конкретный тип интерфейса.

Рассмотрим возможные типы интерфейсов и их характерные особенности, влияющие на выбор интерфейсного решения приложения.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Общие советы по разработке интерфейса

При разработке интерфейса необходимо руководствоваться следующими принципами:

  • Стандартизация. Рекомендуется использовать стандартные, проверенные многими программистами и пользователями интерфейсные решения. Для Visual Basic это, разумеется, решения Microsoft. Причем в качестве стандарта (образца для "подражания") может служить любое из приложений — Word, Excel или другие приложения Microsoft. Под решениями подразумеваются дизайн форм, распределение элементов управления в формах, их взаимное расположение, значки на кнопках управления, названия команд меню.
  • Удобство и простота работы. Интерфейс должен быть интуитивно понятным. Желательно, чтобы все действия легко запоминались и не требовали утомительных процедур: выполнения дополнительных команд, лишних нажатий на кнопки, вызова промежуточных диалоговых окон.
  • Внешний дизайн. Нельзя, чтобы интерфейс утомлял зрение. Он должен быть рассчитан на длительную работу пользователя с приложением в течение дня.
  • Неперегруженность форм. Формы должны быть оптимально загружены элементами управления. При необходимости можно использовать вкладки или дополнительные страницы форм.
  • Группировка. Элементы управления в форме необходимо группировать по смыслу, используя элементы группировки: рамки, фреймы.
  • Разреженность объектов форм. Элементы управления следует располагать на некотором расстоянии, а не лепить друг на друга; для выделения элементов управления можно организовать пустые пространства в форме.

Здесь перечислены основные принципы, которые следует учитывать при проектировании интерфейса приложения, но они не являются догмой. Со временем в процессе работы с пользователями и накоплением практического опыта будут вырабатываться и свои оптимальные принципы построения интерфейса.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Типы интерфейсов

В настоящее время для приложений, разрабатываемых в среде Windows при помощи Visual Basic б, используется три типа интерфейса: однодокументный SDl (Single-Document Interface), многодокументный MDI (Multiple-Document Interface) и интерфейс типа проводник (Explorer).

Замечание

Под документом в этом случае нужно понимать форму, предназначенную для работы с данными, а не с конкретным документом.

В этой главе основное внимание будет уделено первым двум типам интерфейса, поскольку они наиболее часто применяются для разработки пользовательских приложений. Интерфейс типа проводника используется в приложениях не так часто, поэтому мы дадим только его краткое описание.

Однодокументный интерфейс — это тип интерфейса, в котором предоставляется возможность работы только с одним документом в одном окне. Примером может служить редактор Microsoft WordPad. Для работы с несколькими документами в таком интерфейсе необходимо многократно запускать приложение. Для каждого типа данных и документов требуется своя форма и, соответственно, свое приложение с интерфейсом типа SDI. В принципе, это тоже один из возможных вариантов, но он подходит только для работы с небольшим количеством форм документов. При загрузке большого количества SDI-приложений начинает переполняться оперативная память компьютера и приложения работают очень медленно. Каждый раз при запуске SDI-приложения в память загружаются одни и те же данные (меню, панель и элементы управления), выполняющие одинаковые действия, что приводит к неэффективной и медленной работе запускаемых приложений.

Однако полностью отказываться от интерфейса типа SDI не стоит, поскольку он вполне годится для работы с одним или двумя документами (например, для копирования из одного документа в другой). Есть и положительные стороны приложений такого типа интерфейса — они занимают меньше места на диске и в оперативной памяти, да и на их разработку уходит гораздо меньше времени, что также немаловажно.

Интерфейс типа MDI дает возможность работать в одном приложении с любым количеством открытых окон.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

SDI-интерфейс

Интерфейс типа SDI показан на рис. 7.1. Он состоит из следующих элементов:

  • главного меню;
  • панели инструментов с элементами управления;
  • окна приложения для размещения элементов управления данными (в таком случае это окно с заголовком "Документ WordPad");
  • элементов управления для работы с данными. На рис. 7.1 это одно большое поле для работы с текстом;
  • строки состояния.

Рис. 7.1. Пример интерфейса типа SDI

Этот тип интерфейса подходит для приложений, созданных для работы с документом одного типа с небольшим количеством полей (иначе форма перегружается элементами управления и интерфейс становится сложным и неудобным).


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

MDI-интерфейс

Главная особенность MDI заключается в том, что для этого типа интерфейса можно многократно открывать форму одного вида документа для нескольких разных по содержанию документов. Примером интерфейса типа MDI может служить программа Microsoft Word (рис. 7.2).

Рис. 7.2. Пример интерфейса типа MDI

Для интерфейса такого типа характерно наличие одного главного окна (MDI-окно), которое обычно именуется родительским окном (на рис. 7.2 это окно с заголовком Microsoft Word), и необходимого для работы количества подчиненных (вложенных) окон, называемых дочерними (на рис. 7.2 это окна с заголовками Документ1, Документ2, Документ4). Количество открытых дочерних окон ограничено лишь возможностями компьютера.

Подчеркнем, что родительское окно для MDI-интерфейса может быть только одно, при этом оно является контейнером для всех дочерних окон. Это означает, что при минимизации родительского окна вместе с ним минимизируются и все дочерние окна.

В свою очередь, дочерние окна могут находиться только внутри родительского, то есть при раскрытии на весь экран дочерние окна раскрываются полностью только в границах родительского окна и не могут быть вынесены или перемещены за эти границы.

В состав интерфейса MDI входят следующие элементы:

  • главное меню;
  • панель инструментов с элементами управления;
  • главное окно приложения (MDI-окно);
  • дочерние окна;
  • элементы управления для работы с данными, расположенные в дочерних окнах (на рис. 7.2 это одно большое поле для работы с текстом своего документа в каждом из окон);
  • строка состояния.

Рассмотрим подробнее элементы интерфейса и технологию их создания при помощи инструментальных средств Visual Basic.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Родительское окно MDI-интерфейса

Для добавления родительской формы в проект можно выполнить одно из следующих действий:

  • в меню Project (Проект) выбрать команду Add MDI Form (Добавить MDI-форму);
  • в окне проводника нажать правую кнопку мыши и выбрать из контекстного меню команду Add, а затем значение MDI Form.

    Замечание

    При наличии MDI-формы в проекте эта команда недоступна.

MDI-форма показана на рис. 7.3.

Рис. 7.3. Форма родительского окна интерфейса типа MDI

Родительское и дочернее окна имеют набор основных свойств, описанных в табл. 7.1. Доступ к этим свойствам можно получить при помощи окна Properties (Свойства).

Таблица 7.1. Набор основных свойств родительских и дочерних окон
Свойство | Назначение
BackColor | Определяет цвет фона формы. Выбирается из предлагаемой палитры
BorderStyie | Определяет тип обрамления, а также управляет изменениями размеров формы. Дополнительно определяет наличие кнопок в строке заголовка окна
Caption | Задает текст, выводимый в заголовке формы
ControlBox | Определяет наличие в левом верхнем углу окна кнопки в виде значка, открывающей оконное меню
Font | Задает шрифт в окне
ForeColor | Задает цвет выводимого в окне текста. Рекомендуется использовать стандартные цвета как фона, так и текста
Height | Задает высоту формы. При конструировании автоматически модифицируется при изменении размеров при помощи мыши
Icon | Задает значок для формы
Left | Задает расстояние от формы до левого края экрана
MaxButton | Управляет наличием кнопки развертывания (максимизации) окна
MinButton | Управляет наличием кнопки свертывания (минимизации) окна
MDIChild | Управляет возможностью превращения окна типа MDI в дочернее. Принимает значения True или False. По умолчанию принимает значение False
Name | Задает уникальное имя формы для использования в программных модулях и тексте кода. При назначении имени рекомендуется использовать префикс frm или mdi
ScaleMode | Задает единицу измерения свойств Width, Height, Left и Top
ShowInTaskbar | Управляет отображением значка окна на панели задач системы Windows
Width | Определяет ширину формы
WindowState | Управляет состоянием формы при запуске и может принимать следующие значения: 0-Normal— нормальное состояние, 1-Mini-mized — минимизированное состояние и 2-Maximized — максимизированное состояние

Свойство BorderStyle определяет тип обрамления окна и может принимать значения, приведенные в табл. 7.2.

Таблица 7.2. Тип обрамления окна. задаваемый свойством BorderStyle
Значение свойства | Тип обрамления
0-Мопе | Отсутствует рамка окна. Изменение размеров и перемещение окна запрещено. Отсутствуют основные атрибуты окна: заголовок, меню, кнопки свертывания, развертывания и закрытия
1-Rxed Single | Окно с рамкой в виде одинарной линии и с фиксированными размерами. Изменение размеров окна с помощью мыши запрещено. Основные атрибуты заголовка формы, упомянутые выше, доступны для этого значения
2-Sizable | Окно имеет рамку, размеры которой можно изменить при помощи мыши. Разрешено также перемещение окна. Все атрибуты заголовка окна присутствуют. Это значение устанавливается по умолчанию при создании формы
3-Fixed Dialog | Окно имеет рамку, размеры которой изменить нельзя, при этом разрешено перемещение окна. В заголовке расположена только кнопка закрытия окна. Это значение свойства BorderStyle используется, в основном, для диалоговых окон
4-Fixed ToolWindow | Аналогично значению 3-Fixed Dialog. При этом заголовок уже и содержит только кнопку закрытия окна
5-Sizable ToolWindow | Аналогично значению 2-Sizable, однако кнопки свертывания и развертывания окна при этом недоступны

Свойство ScaleMode задает единицу измерения свойств width, Height, Left и Top и может принимать значения, описанные в табл. 7.3.

Таблица 7.3. Значения, принимаемые свойством ScaieMode
Значение | Единица измерения
0-User | Пользовательская
1-Twip | Твип. Является стандартной единицей измерения для Visual Basic и устанавливается по умолчанию при создании формы. В одном дюйме содержится 1440 твипов
2-Point | Точка. Необходимо иметь в виду, что в дюйме 72 точки
3-Pixel | Пиксел. Базовая аппаратная единица измерения. Определяет минимальный допустимый размер точки экрана или точки при выводе на принтер
4-Character | Символ
5-Inch | Дюйм
6-Milimeter | Миллиметр
7-Centimeter | Сантиметр

Свойства окон можно изменять в режиме проектирования. Кроме того, Visual Basic дает возможность изменять свойства окон из программы в ре-жиме выполнения.

Здесь следует заметить, что в отличие от дочернего, для родительского окна доступна только часть из перечисленных свойств. Например, недоступны свойства MaxButton, MinButton или controiBox, управляющие кнопками в заголовке окна.

В свою очередь, существуют свойства, характерные только для родительского окна. Это свойства AutoShowChildren И ScrollBars. Если свойство AutoShowChildren имеет значение True (это значение используется по умол чанию), то при загрузке родительского окна автоматически загружается дочернее окно. Свойство ScrollBars определяет наличие полос прокрутки в родительском окне для дочерних окон, выходящих за границы видимости. По умолчанию это свойство имеет значение True, разрешающее отображение полосы прокрутки.

В табл. 7.4 приведены основные события, которые чаще всего используются для форм. В процессе программирования вы познакомитесь с ними более подробно.

Таблица 7.4. События, используемые формами
Событие | Описание
Activate | Происходит в тот момент, когда форма становится активной. Связано с событиями Initialize, Load, GotFocus. При открытии формы сначала происходит событие initialize, затем Load, после этого непосредственно Activate и завершает процесс открытия событие GotFocus
Click | Происходит при щелчке кнопки мыши
DblClick | Двойной щелчок кнопки мыши
Deactivate | Событие, противоположное Activate. Происходит, когда форма становится неактивной
GotFocus | Происходит при установке фокуса на активизируемой форме
Initialize | Инициализация формы
KeyUp | Происходит при нажатии клавиши на клавиатуре
Load | Происходит при загрузке формы в память до ее появления на экране
MouseUp | Происходит при нажатии кнопки мыши
Resize | Происходит при изменении размеров формы
Unload | Противоположное событию Load. Происходит перед выгрузкой формы из памяти и удалением ее с экрана

При проектировании можно просмотреть список событий, связанных с формой, в окне редактора кода формы. Для этого необходимо выполнить команду Code (Код) меню View (Вид) или переместить указатель в поле конструирования формы и дважды щелкнуть кнопкой мыши. В верхней части окна редактора кода расположены два списка. Выберите из левого списка объектов текущую форму. При этом в правом списке будут расположены все события формы.

При программировании событий Visual Basic 6 сразу же при выборе события предоставляет готовую конструкцию (шаблон кода) для программирования действий по событию. Имя процедуры обработки события всегда связано с его именем. Например, для обработки события Load автоматически предоставляется такой шаблон:

Private Sub Form_Load()

... код процедуры обработки события

End Sub


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Дочернее окно MDI-интерфейса

Дочернее окно (рис. 7.4) обладает всеми описанными в табл. 7.1 свойствами окон. Практически все они доступны при проектировании.

Рис. 7.4. Форма дочернего окна интерфейса типа MDI

Основные особенности дочерних окон:

  • дочерняя форма всегда располагается в границах родительской;
  • дочернюю форму нельзя переместить за границы родительской формы;
  • дочернее окно сворачивается только внутри родительского;
  • при разворачивании дочернее окно занимает все внутреннее пространство родительского окна.

Расположением дочерних окон в родительском окне можно управлять при помощи метода Arrange родительского окна и набора переменных, которые задают способы размещения дочерних окон (табл. 7.5).

Таблица 7.5. Значения констант для метода Arrange
Константа | Значение | Описание
vbCascade | 0 | Каскадное расположение дочерних форм, при этом каждая последующая сдвинута вниз и вправо примерно на ширину заголовка формы
vbTileVertical | 1 | Расположение в виде вертикальной мозаики, при этом дочерние формы имеют высоту родительской формы и такую ширину, чтобы разместиться по всей ширине родительского окна
vbTileHorizontal | 2 | Расположение в виде горизонтальной мозаики, при этом дочерние формы имеют ширину родительской формы и такую высоту, чтобы разместиться по всей высоте родительского окна
vbArrangeIcon | 3 | При минимизации окна располагаются на нижнем крае родительского окна

Для добавления дочерней формы в проект необходимо выполнить команду Add Form (Добавить форму) меню Project (Проект). В качестве дочерней формы можно использовать автоматически создаваемую при выборе нового проекта форму. При этом свойство MDIchild следует установить в значение True.

Для исследования характеристик и взаимодействия родительского и дочернего окон создадим небольшое приложение. Для этого выполните следующие действия:

1. Создайте новый проект. Для этого в меню File (Файл) выберите команду New Project (Создать проект) и дважды щелкните на значке Standard ЕХЕ.

2. Откройте окно свойств проекта, выбрав команду ProjectName Properties в меню Project.

3. В поле Project Name введите имя проекта MyMDIApp и нажмите кнопку ОК для закрытия диалогового окна.

4. Чтобы автоматически использовать созданную форму проекта в качестве дочерней, откройте окно свойств, вызвав его командой Properties Window (Окно свойств) в меню View (Вид), и установите для свойства MDichild значение True.

5. Используя свойство Name, введите имя формы frmChildMDI.

6. В поле свойства caption введите заголовок окна Дочернее окно MDI.

7. Добавьте в проект MDI-форму, выполнив команду Add MDI Form (Добавить MDI-форму) меню Project (Проект).

8. Воспользовавшись свойством Name, введите имя формы mdiParentMDI.

9. Используя свойство Caption, введите заголовок окна Родительское окно MDI

10. Для демонстрации некоторых действий нам понадобится простое меню. Создадим его по шагам (редактор меню описан в разделе "Меню" данной главы).

  • Выберите родительское окно.
  • Вызовите редактор меню командой Menu Editor (Редактор меню) из меню Tools (Сервис).
  • В поле Name (Имя) введите имя тли file.
  • В поле Caption (Заголовок) введите заголовок меню Файл.
  • Теперь создайте пункт этого меню. Нажмите кнопку Next (Следующий) и кнопку с направленной вправо стрелкой. В поле Name введите имя меню mnufileNewForm, а в поле Caption его заголовок Новая форма.

Небольшое приложение готово к работе. Для проверки запустите его при помощи команды Start (Запустить) меню Run (Запуск). Остановка приложения выполняется командой End (Остановить) того же меню.

11. Запрограммируем вызов нескольких дочерних форм. Для этого выделите родительскую форму в конструкторе форм и дважды щелкните левой кнопкой мыши для вызова редактора кода родительского окна.

12. В списке объектов (левый раскрывающийся список) выберите пункт меню mnuFileNewForm, в левом списке событий выберите событие click и напишите для него следующий код :

Private Sub nmuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmNewForm.Show

End Sub

В тексте кода мы объявили объектную переменную frmNewForm для ссылки на вновь созданный экземпляр окна. Затем с помощью метода show новый экземпляр визуализируется в родительском окне. Для вычисления номера дочернего окна используется переменная frmCount. Этот код выполняется при выборе команды Новая форма из меню Файл родительского окна.

13. При помощи этого простого приложения можно проверить все основные характеристики родительского и дочернего MDI-окон. Для проверки возможностей упорядочения дочерних окон в родительском окне (свойство Arrange) добавим в меню пункт Окно и команду меню, выполняющую упорядочение. Для этого откройте редактор меню и добавьте пункт Окно и необходимую команду. Присвойте пункту меню имя mnuwindow, а команде, предназначенной для расположения окон каскадом, имя mnuwindowTileVertical. Программный код должен выглядеть следующим образом:

Private Sub mnuwindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Ниже приведен полный текст кода созданного нами простого приложения:

Dim frmCount As Integer

Private Sub MDIForm_Load()

frmChildMDI.Caption = "Дочерняя форма 1"

frmCount = 1

End Sub

Private Sub mnuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

Private Sub mnuWindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Работающее приложение с упорядоченными окнами представлено на рис. 7.5.

Рис. 7.5. Работа простого приложения в стиле интерфейса MDI

Аналогично можно запрограммировать другие способы упорядочивания дочерних окон в родительском.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Интерфейс типа проводник

Интерфейс типа проводник разрабатывается для доступа к иерархическим древовидным структурам, то есть к таким, где встречается вложенность. Примером вложенности могут служить папки и файлы. Файлы лежат в папках, которые в свою очередь лежат в вышестоящих папках и так далее. Примером такого интерфейса является проводник Windows (рис. 7.6). На рисунке наглядно видна структура хранения папок и файлов, образующая иерархическое дерево. По своей сути это аналог интерфейса SDI, разработанный специально для древовидных структур.

Интерфейс приложения типа проводник содержит следующие элементы:

  • главное меню;
  • окно приложения для размещения элементов управления данными (в нашем случае это окно с заголовком "Проводник — Microsoft Visual Studio");
  • иерархический список элементов древовидной структуры. Это могут быть папки и файлы, документы, если они организованы в иерархическую структуру;
  • элементы управления для работы с данными: кнопки, поля, флажки и т. п.;
  • строка состояния.

Рис. 7.6. Интерфейс типа проводник (Explorer)


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элементы интерфейса

Рассмотрим подробнее основные элементы интерфейса и возможности их использования в приложениях Visual Basic 6.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Меню

Любое приложение создается для реализации комплекса функций, обеспечивающих выполнение общей задачи приложения. Для быстрого доступа ко всем функциям приложения используется меню: главное меню приложения и контекстное меню отдельных объектов приложения (форм, панелей).

При проектировании меню следует руководствоваться определенными принципами. Главный из них — стандарты. Рекомендуется придерживаться стандартных названий команд меню и их расположения: например, пункт меню для работы с файлами рекомендуется называть в своих приложениях File (Файл), а пункт меню для вызова справочной системы приложения — Help (Справка). При этом пункт меню File желательно располагать самым первым, а пункт Help — последним. На этот стандарт для всех приложений Windows, к которому привыкли многие миллионы пользователей, можно вполне положиться. Приложение будет при этом более понятным пользователю.

В процессе разработки меню желательно группировать команды меню, реализующие функции для решения конкретной задачи (например, работа с файлами), в одно раскрывающееся меню, которое будет соответствовать пункту меню. Например, все команды, реализующие функции работы с файлами, желательно сгруппировать в одно раскрывающееся меню, связанное с пунктом меню File.

В приложениях каждой команде меню, как правило, соответствует "горячая" клавиша (клавиша быстрого доступа). Рекомендуется по возможности использовать стандартные клавиши, например, как в Microsoft Word. В принципе, это приложение может служить стандартным образцом для создания собственных приложений при разработке не только меню, но и всех других элементов.

Как и любой другой объект приложения, меню имеет набор свойств. Свойства меню доступны для редактирования в окне Properties (Свойства) формы, которой принадлежит меню (рис. 7.7).

Рис. 7.7. Свойства меню

Основные свойства меню приведены в табл. 7.6.

Таблица 7.6. Основные свойства меню
Свойство | Назначение
Name | Наименование (имя) меню. Должно быть уникальным, так как позволяет идентифицировать меню. Желательно пользоваться стандартным присвоением имени, то есть имя должно начинаться с букв mnu
Caption | Текст, отображаемый в пункте меню. Если в этом тексте перед одной из букв поместить символ "&", то буква в пункте меню будет подчеркнута и клавиша этой буквы будет назначена "горячей" клавишей для быстрого доступа к данному пункту меню
Checked | Если это свойство имеет значение True, при работе приложения слева от наименования выбранного пункта меню появляется галочка
Enabled | Свойство, определяющее возможность выполнения команды (пункта) меню. В зависимости от контекста объекта команды запрещаются или разрешаются
HelpContextID | Идентификатор справочной системы, соответствующий справке об этом меню
Index | Идентификатор пункта меню в массиве элементов управления приложения
NegotiatePosition | Определяет положение меню на экране
Shortcut | Комбинация клавиш для быстрого выполнения пункта меню
Visible | Определяет видимость на экране пункта меню. При работе приложения с помощью этого свойства пункты меню можно динамически прятать или показывать
WindowList | Назначает свойство формирования динамического списка окон. При установке этого свойства в меню будет добавляться список окон по мере их запуска при работе приложения. Это свойство обычно используется для пункта меню самого верхнего уровня и для родительского окна приложений с интерфейсом типа MDI


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Редактор меню Menu Editor

Для проектирования меню всех видов используется редактор меню Menu Editor (Редактор меню) среды проектирования IDE (рис. 7.8). Редактор меню вызывается одним из следующих способов:

  • командой Menu Editor (Редактор меню) меню Tools (Инструменты);
  • нажатием кнопки Menu Editor на стандартной панели инструментов;
  • нажатием комбинации клавиш <Ctrl>+<E>.

Редактор создает меню для активного в данный момент окна, то есть, если активно MDI-OKHO, проектируется меню для него, если активна дочерняя форма, проектируется меню для дочерней формы. На рис. 7.8 показан редактор меню родительского окна, созданного автоматически мастером приложения Application Wizard.

Редактор меню состоит из двух групп: элементов управления свойствами и элементов конструирования структуры меню. Управлять основными свойствами меню, о которых было сказано выше, можно с помощью следующих элементов редактора меню:

  • поле Caption (Заголовок) — наименование пункта меню, то есть текст, появляющийся в меню;
  • поле Name (Имя) — имя меню. Используется для идентификации объекта при написании программных кодов;
  • раскрывающийся список Shortcut (Оперативная клавиша) — назначает комбинацию клавиш для быстрого вызова команды меню;
  • поле HelpContextID (Идентификатор справки) — ссылка на тему в справочной системе;
  • флажок Enabled (Доступно) — доступ к пункту меню;
  • флажок Visible (Видимость) — определяет, будет ли виден на экране элемент меню;
  • флажок WindowList (Список окон) — определяет наличие списка открытых окон.

Рис. 7.8. Окно редактора меню Menu Editor

Элементы группы конструирования структуры меню позволяют добавлять и удалять новые пункты меню, перемещать пункты по вертикали, меняя порядок их следования, и по горизонтали, меняя расположение пунктов в иерархии системы меню:

  • кнопки с направленными вправо и влево стрелками перемещают пункты или команды меню в иерархии меню;
  • кнопки с направленными вверх и вниз стрелками перемещают пункты или команды меню по структуре меню;
  • Next (Следующий) — перемещает указатель к следующему пункту меню. Если указатель находится на последнем пункте меню, то создается новый пункт меню или новая команда меню такого же уровня иерархии;
  • Insert (Вставить) — добавляет пункт меню или команду в пункт меню;
  • Delete (Удалить) — удаляет пункт меню или команду из пункта меню.

Для добавления пункта меню выполните следующие шаги:

1. Выберите место в имеющейся структуре меню.

2. Добавьте пункт меню, нажав кнопку Insert (Вставить).

3. В поле Caption (Заголовок) введите название пункта меню, которое будет отображаться в строке меню при запуске приложения на выполнение.

4. В поле Name (Имя) введите имя пункта меню, по которому он иденти фицируется в программном коде.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Контекстное меню

Для приложения любого типа можно использовать удобное средство быстрого доступа к функциям — контекстное меню. Контекстное меню связано с некоторым действием (обычно это щелчок правой кнопки мыши на объекте) и вызывается в любом месте приложения. В исходном состоянии контекстное меню невидимо и визуализируется рядом с указателем мыши после вызова. Контекстным такое меню называется потому, что оно появляется рядом с выбранным объектом, и его состав зависит от содержания (контекста) этого объекта. После выбора команды из контекстного меню оно исчезает.

Проектируется контекстное меню как один из пунктов верхнего уровня строки меню. Поскольку меню должно быть скрыто и вызываться определенным действием, свойство visible проектируемого пункта меню необходимо установить в значение False.

Для визуализации контекстного меню на экране необходимо использовать метод popUpMenu формы. Например, для вызова меню File (Файл) при нажатии правой кнопки мыши достаточно написать такую условную конструкцию для события MouseUp формы:

If Button = vbRightButton

Then Form1.PopUpMenu mnuFile

End If

В этом примере при выполнении в форме события MouseUp (Нажатие на кнопку мыши) проверяется, какая кнопка нажата. В данном случае, при помощи внутренней константы Visual Basic 6 vbRightButton (Правая кнопка) проверяется нажатие на правую кнопку мыши и запускается метод PopUpMenu. В качестве параметра задается имя требуемого контекстного меню.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Панели инструментов

В дополнение к строке состояния и контекстному меню, в настоящее время большой популярностью пользуются панели инструментов, позволяющие ускорить доступ к функциям приложения. Обычно панель инструментов содержит наиболее часто используемые команды строки меню или контекстных меню. При разработке приложении можно применять панели двух видов: обычную панель ToolBar (рис. 7.9) и улучшенную панель CoolBar (рис. 7.10).

Рис. 7.9. Обычная панель инструментов

Рис. 7.10. Улучшенная панель инструментов

Для проектирования панелей инструментов в Visual Basic 6 используются:

  • мастер панелей инструментов, входящий в состав мастера приложений;
  • элемент управления ToolBar для создания обычной панели инструментов;
  • элемент управления CoolBar для создания улучшенной панели инструментов.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Мастер панелей инструментов Toolbar Wizard

Для проектирования панелей инструментов в программе Visual Basic можно использовать мастер панелей инструментов, работающий в составе мастера приложений VB Application Wizard.

Замечание

Запуск и работу данного мастера мы рассмотрели в главе 2.

Диалоговое окно мастера показано на рис. 7.11. В верхней части окна мастера расположена предлагаемая по умолчанию панель инструментов, ниже расположены два списка. Левый список содержит набор кнопок, который может быть добавлен на панель инструментов. Правый список отображает набор кнопок, уже размещенных на панели инструментов.

Для добавления кнопки на панель инструментов необходимо выбрать в левом списке требуемую кнопку и перенести ее в правый список, выполнив одно из следующих действий:

  • дважды щелкнуть мышью;
  • нажать расположенную между списками кнопку с изображением направленной вправо стрелкой;
  • использовать механизм перенести-и-оставить, то есть нажать кнопку мыши и, удерживая ее нажатой, перенести кнопку в правый список, после чего отпустить кнопку мыши.

Рис. 7.11. Окно мастера проектирования панелей инструментов

При выполнении любого из этих действий требуемая кнопка перемещается в правый список и одновременно добавляется на панель инструментов.

Чтобы отредактировать наименование или изменить значок кнопки, располагаемой на панели инструментов в верхней части окна мастера, нажмите данную кнопку. Откроется диалоговое окно Button Attributes (Атрибуты кнопки) (рис. 7.12), в котором можно изменить требуемые параметры. Для изменения значка нажмите кнопку Change Bitmap и с помощью открывшегося диалогового окна выберите графический файл для изображения, размещаемого на кнопке.

Рис. 7.12. Диалоговое окно Button Attributes

Кнопка Reset (Сброс) возвращает панель инструментов в исходное состояние, устанавливаемое мастером по умолчанию. Изменить последовательность кнопок на панели инструментов можно кнопками перемещения позиций в списке. Следует иметь в виду, что кнопки перемещения позиций управляют только правым списком.

Используя кнопку Load an External Bitmap or Icon можно добавить на панель инструментов свою кнопку. Пользовательская кнопка размещается в правом списке и на панели инструментов.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления ToolBar

Элемент управления ToolBar предоставляет возможность применять в приложении обычные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls 6.0, выбрав команду Components (Компоненты) меню Project (Проект). В открывшемся при выполнении этой команды окне Components необходимо найти в списке указанную библиотеку, установить располагаемый с левой стороны флажок и нажать кнопку ОК. После подключения этой библиотеки элемент управления TooiBar появится на панели элементов управления.

Панель инструментов ToolBar является контейнером и может содержать следующие элементы управления:

  • кнопку PushButton, работающую как обычная кнопка формы;
  • кнопку-флажок CheckButton, которая работает как флажок и может находиться в состояниях нажато/отжато;
  • группу кнопок-переключателей ButtonGroup, работающих как аналог переключателя в форме, то есть нажата может быть только одна кнопка из группы;
  • кнопку-разделитель Separator, используемую для создания интервалов между кнопками;
  • кнопку-заменитель Placeholder, служащую для резервирования места на панели для других типов элементов управления, таких как раскрывающийся список ComboBox, список ListBox, переключатель OptionBox, текстовое поле TextBox;
  • кнопку раскрывающегося списка DropDown, работающую аналогично раскрывающемуся списку формы.

Управлять панелью можно при помощи основных свойств, описанных в табл. 7.7.

Таблица 7.7. Основные свойства панели инструментов
Свойство | Назначение
AllowCustomize | Позволяет настраивать панель инструментов при работе приложения, то есть добавлять, удалять, перемещать кнопки панели
BorderStyle | Задает тип обрамления панели
ButtonHeight | Задает высоту кнопок панели, при этом автоматически вычисляется высота самой панели
ButtonWidth | Задает ширину кнопок панели
Enabled | Управляет доступом к выполнению действий на панели инструментов
ShowTips | Устанавливает режим отображения подсказки для кнопок панели инструментов
Visible | Задает видимость панели инструментов
Wrappable | Устанавливает режим автоматического переноса кнопок на другой ряд при недостатке места

Возможности настройки панели инструментов рассмотрим на примере. Для этого сконструируем небольшую панель инструментов в приложении MyMDIApp, созданном для проверки свойств интерфейса в стиле MD1. Выполните для этого следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls 6.0, в которой содержится элемент управления ToolBar, воспользовавшись диалоговым окном Components (Компоненты).

2. Добавьте в родительскую форму объект ToolBar, дважды щелкнув мышью кнопку ToolBar на панели элементов управления.

3. Откройте окно свойств, выбрав команду Properties Window (Окно свойств) в меню View (Вид) при выделенной в форме панели инструментов.

4. Используя свойство Name, присвойте панели имя tbrTools.

5. Панель инструментов создана, теперь необходимо разместить на ней кнопки. Для этого вызовем окно проектирования панели, нажав на ней правую кнопку мыши и выбрав в появившемся контекстном меню команду Properties (Свойства).

6. В открывшемся диалоговом окне Property Pages (рис. 7.13) по умолчанию выбрана вкладка General (Основная), позволяющая установить основные свойства панели. Оставим параметры в исходном состоянии. Выберите вкладку Buttons (Кнопки), с помощью которой создаются кнопки панели инструментов.

7. Нажмите кнопку Insert Button (Вставить кнопку) для добавления новой кнопки на панель инструментов. Эту кнопку будем использовать для вызова нового дочернего окна формы, то есть как аналог команды Новая форма меню Файл родительского окна.

Рис. 7.13. Диалоговое окно Property Pages

8. В полях, управляющих свойствами кнопок, задайте следующие значения:

  • в поле Caption (Надпись) введите Новая. Данный текст появится на кнопке;
  • в поле Key (Ключ) введите идентификатор кнопки для использования в программном коде ToolsNewForm;
  • в поле ToolTipText (Подсказка) введите текст Открыть новое дочернее окно, который будет появляться в виде подсказки под курсором при его установке на кнопку;
  • в поле Style (Стиль) оставьте значение 0-tbrDefault, определяющее обычную кнопку. Размер кнопки будет адекватен введенному тексту в поле Caption и изменению недоступен. Заметим, что удалять кнопки можно при помощи кнопки Remove Button (Исключить кнопку).

9. Запрограммируем действие, выполняемое при нажатии новой кнопки. Для вызова редактора кода дважды щелкните мышью на панели tbrTools. При этом будет автоматически использован шаблон для действия, выполняемого при нажатии на кнопку панели инструментов. Введите следующий программный код:

Private Sub tbrTools_ButtonClick (ByVal Button As MSComctlLib. Button)

Select Case Button.Key

Case Is = "ToolsNewForm"

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " +

Str(frmCount)

frmNewForm.Show

End Select

End Sub

Замечание

Несмотря на то, что кнопка на панели инструментов всего одна, в коде применена конструкция Select Case для отработки действий других добавляемых на панель кнопок.

На рис. 7.14 показано приложение, содержащее панель инструментов с одной кнопкой.

Рис. 7.14. Пример приложения с использованием панели инструментов

Вместо текста на кнопке можно разместить графическое изображение, как это обычно и делается для экономии места. Для этого необходимо сначала создать файл графического изображения, а затем подключить его к кнопке панели. В качестве объекта для хранения списка графических изображений можно использовать элемент управления imageList. Создадим такой список в нашем приложении. Данный элемент управления находится в той же библиотеке, что и панель инструментов, поэтому дополнительного подключения библиотек не потребуется. Для размещения в форме элемента управления imageList выполните следующие действия:

1. Разместите в родительской форме объект imageList, дважды щелкнув мышью кнопку ImageList (Я на панели элементов управления.

2. В окне свойств задайте имя созданного объекта imlimageListTools.

3. Выделите объект, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Откроется диалоговое окно Property Pages (Страницы свойств), с помощью которого создадим список графических изображений (рис. 7.15).

4. Выберите вкладку Images (Изображения).

Рис. 7.15. Диалоговое окно Property Pages объекта ImageList

5. Для идентификации списка изображений введите в поле Key (Ключ) имя списка imITools.

6. Чтобы добавить в список графическое изображение, нажмите кнопку Insert Picture (Вставить изображение). Откроется диалоговое окно поиска графических файлов. Выберите требуемый файл и нажмите кнопку Открыть. Графическое изображение добавляется в список. Для добавления следующего элемента списка опять нажмите кнопку Insert Picture. Завершив формирование всего списка графических изображений, нажмите кнопку ОК для закрытия диалогового окна Property Pages.

Замечание

Для создания панели инструментов в своем приложении мы воспользуемся графическими файлами New.bmp и Open.bmp из каталога \Visual Basic \Common\Grafics\Bitmaps\OffCtrlBr\Small\Color.

7. Список изображений готов. Для подключения созданного списка изображений к панели необходимо вызвать окно свойств панели и на вкладке General (Общие) выбрать наименование созданного графического списка в открывающемся списке ImageList (Список изображений).

Для размещения графического изображения на кнопке панели инструментов выполните следующие действия:

1. Откройте диалоговое окно Property Pages (Страница свойств) для проектируемой панели.

2. На вкладке General (Общие) выберите из списка ImageList наименование

созданного нами списка изображений imlImageListTools.

3. Перейдите на вкладку Buttons (Кнопки).

4. Установите в поле Index (Индекс) значение 1, указывая, что выбирается первая кнопка.

5. Установите в поле Image (Изображение) значение 1, указывая, что выбирается первое изображение из списка. На кнопке после этого появляется требуемое изображение. При этом размеры кнопки автоматически устанавливаются в соответствии с размером изображения.

Приложение, содержащее на панели инструментов графическую кнопку, показано на рис. 7.16.

Рис. 7.16. Панель инструментов приложения содержит графическую кнопку

Совет

Для создания интервалов между кнопками используются кнопки, для которых свойство Style установлено в значение tbrSeparator.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления CoolBar

С помощью элемента управления coolBar можно создавать в приложении улучшенные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls-3 6.0, воспользовавшись диалоговым окном Components (Компоненты), открываемым при выборе команды Components (Компоненты) меню Project (Проект).

В отличие от объекта ToolBar, элемент управления CoolBar более универсален и кроме кнопок может содержать другие элементы управления, в том числе и панели типа ToolBar. Усовершенствованная панель представляет собой контейнер, причем он состоит из маленьких контейнеров Band (Полоса), которые являются объектами и непосредственно включают в себя все элементы управления, вводимые в CoolBar.

Для создания в проекте панели инструментов типа CoolBar выполните следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls-3 6.0, в которой содержится элемент управления CoolBar.

2. Добавьте в родительскую форму объект coolBar, дважды щелкнув мышью кнопку CooiBar на панели элементов управления.

3. Присвойте новой панели инструментов имя cbrTools.

4. Выделите объект CoolBar, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Открывается диалоговое окно Property Pages (рис. 7.17), предназначенное для создания панели типа CoolBar.

5. Используя кнопку Insert Band (Вставить полосу), добавьте на панель инструментов еще несколько объектов Band.

Рис. 7.17. Диалоговое окно Property Pages для объекта CooiBar

Теперь новую панель можно настраивать, добавляя на нее необходимые объекты или удаляя их. Добавим, например, кнопку управления для вызова дочернего окна. Для этого выполните следующие действия:

1. Используя кнопку CommandButton на панели элементов управления, разместите на создаваемой панели инструментов CoolBar кнопку управления.

2. Скорректируйте в окне Properties (Свойства) для созданной командной кнопки следующие свойства:

  • в правый столбец свойства Name введите наименование объекта cbNewCoolBar,
  • в свойство Caption введите текст Новая, который будет размещен на кнопке;
  • в свойство Height кнопки введите значение 300;
  • для свойства тор задайте значение 25.

3. Для создания кода, выполняемого при нажатии новой кнопки на панели инструментов, в окне редактора кода введите следующие команды, осуществляющие вызов дочерней формы:

Private Sub cbNewCoolBar_Click ()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

4. Запустите приложение на выполнение. Работающее приложение с панелью инструментов типа CoolBar показано на рис. 7.18.

Рис. 7.18. Приложение с панелью инструментов типа CooiBar


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговые окна

В Visual Basic 6 существует специальный вид окон — диалоговые. В распоряжении разработчика имеется хорошо развитый инструментарий для их создания. Диалоговые окна бывают двух типов — модальные и немодальные. Модальное диалоговое окно — это окно, из которого нельзя перейти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Примером такого диалогового окна в программе Visual Basic является окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно — это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немодального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации.

Простейшие из диалоговых окон — это окна сообщений и окна, предназначенные для ввода информации. В дополнение к ним в Visual Basic 6 существует набор более сложных стандартных диалоговых окон для приложений:

  • Open (Открыть) — диалоговое окно для поиска в файловой структуре нужного файла;
  • Save As (Сохранить как) — для поиска места хранения файла и ввода его имени;
  • Font (Шрифт) — для выбора и установки шрифта;
  • Color (Цвет) — для выбора цветовой палитры;
  • Print (Печать) — для настройки режима печати;
  • Help (Справка) — для работы со справочной системой приложения. Рассмотрим эти диалоговые окна более подробно.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Окно сообщения (MsgBox)

Диалоговое окно сообщения (рис. 7.19) не требует проектирования и вызы вается из программы командой MsgBox или с помощью аналогичной функции MsgBox о, имеющей следующий синтаксис:

MsgBox (prompt[, buttons] [, title] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • buttons — числовое выражение, которое задает параметры для кнопок управления и значков в диалоговом окне и составлено из констант, указанных в табл. 7.8 и 7.9. Если значение не указано, то по умолчанию присваивается значение 0;
  • title — текст заголовка диалогового окна;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Необходимо иметь в виду, что для задания нескольких параметров кнопок и значков одновременно, следует просто сложить соответствующие константы.

Для примера введите в командном окне среды проектирования Immediate следующую команду и нажмите клавишу <Enter>:

MsgBox "Приветствуем Вас!", vbYesNo + vbExclamation,"Окно сообщений"

В ответ получите диалоговое окно, показанное на рис. 7.19.

Рис. 7.19. Диалоговое окно сообщения

Таблица 7.8. Константы параметров для значков диалогового окна сообщения
Значок | Константа | Значение | Тип сообщения
 | vbExclamation | 48 | Предупреждение
 | vbQuestion | 32 | Запрос
 | vbInformation | 64 | Информация
 | vbCritical | 16 | Ошибка

В диалоговых окнах сообщении можно управлять отображаемыми в окне сообщения кнопками и установкой фокуса на одной из кнопок при открытии окна. Для этого можно использовать константы, приведенные в табл. 7.9.

Таблица 7.9. Константы параметров наличия кнопок в окне сообщения и установки фокуса на кнопку
Константа | Значение | Набор кнопок в диалоговом окне
vbOkOnly | 0 | OK
vbOkCancel | 1 | OK, Отмена
vbAbortRetryIgnore | 2 | Стоп, Повтор, Пропустить
vbYesNoCancel | 3 | Да, Нет, Отмена
vbYesNo | 4 | Да,Нет
vbRetryCancel | 5 | Повтор, Отмена
vbDefaultButton1 | 0 | Устанавливает фокус на первой кнопке
vbDefaultButton2 | 256 | Устанавливает фокус на второй кнопке
vbDefaultButton3 | 512 | Устанавливает фокус на третьей кнопке
vbDefaultButton4 | 768 | Устанавливает фокус на четвертой кнопке
vbApplicationModal | 0 | Назначает модальность приложения. Диалоговое окно будет модальным, то есть требующим обязательного закрытия для перехода в другие окна
vbSystemModal | 4096 | Назначает модальность системы. Диалоговое окно будет модальным на уровне системы, то есть пока диалоговое окно не закрыто, в любое другое приложение перейти нельзя
vbMsgBoxHelpButton | 16384 | Добавляет в диалоговое окно кнопку Справка
VbMsgBoxSetForeground | 65536 | Объявляет диалоговое окно фоновым окном
vbMsgBoxRight | 524288 | Выравнивает текст в диалоговом окне по правому краю
vbMsgBoxRtIReading | 1 048 576 | Переворачивает текст для чтения справа налево

В зависимости от выбора кнопки диалоговое окно MsgBox возвращает одно из значений, заданных системными константами. Это необходимо для анализа нажатой кнопки и выполнения соответствующих действий в программе. В исходном коде для этого можно использовать константы, указанные в табл. 7.10.

Таблица 7.10. Значения констант, возвращаемые кнопками окна сообщения
Кнопка | Константа | Значение при нажатии на кнопку
ОК | vb0k | 1
Отмена | vbCancel | 2
Стоп | vbAbort | 3
Повтор | vbRetry | 4
Пропустить | vblgnore | 5
Да | vbYes | 6
Нет | vbNo | 7


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно ввода информации (InputBox)

Достаточно часто в диалоговом окне необходимо не только нажать кнопки выбора действия, но и ввести определенную информацию, которая затем анализируется программой. Для выполнения такого рода действий в Visual Basic можно использовать диалоговое окно ввода информации InputBox (рис. 7.20). Функция InputBox имеет следующий синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • title — текст заголовка диалогового окна;
  • default — значение текстового поля ввода по умолчанию. Если параметр отсутствует, строка остается пустой;
  • xpos — позиция по горизонтали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • ypos — позиция по вертикали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Для примера введите в командном окне среды проектирования Immediate следующую команду:

strUserTest = InputBox ("Введите пароль", "Запуск приложения", "****")

В результате получите диалоговое окно, показанное на рис. 7.20.

Рис. 7.20. Диалоговое окно ввода

В отличие от диалогового окна MsgBox, в окне InputBox всегда имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel — закрывает диалоговое окно без ввода данных.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование элемента управления CommonDialog для создания диалоговых окон

Все диалоговые окна, перечисленные в начале раздела "Диалоговые окна", можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подключить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования.

Для вызова диалоговых окон необходимо использовать соответствующие каждому из этих окон методы элемента управления commonDialog, указанные в табл. 7.11.

Таблица 7.11. Методы элемента управления CommonDialoq
Метод | Описание
ShowOpen | Вызывает диалоговое окно, используемое для открытия файла
ShowSave | Вызывает диалоговое окно, используемое для сохранения файла
ShowColor | Вызывает диалоговое окно настройки цветовой палитры
ShowFont | Вызывает диалоговое окно настройки шрифтов текста
ShowPrinter | Вызывает диалоговое окно настройки печати и диалоговое окно печати
ShowHelp | Подключает справочную систему в стиле Windows

Для изучения диалоговых окон, образуемых с помощью элемента управления CommonDialog, создадим небольшой проект. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в открывшемся диалоговом окне дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MySmallProject. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда примет вид MySmallProject Properties (Свойства MySmallProject).

3. Подключите к проекту библиотеку Microsoft Common Dialog Control 6.0. Для этого в меню Project (Проект) выберите команду Components, в открывшемся диалоговом окне Components (Компоненты) установите флажок, расположенный рядом с названием этой библиотеки, и нажмите кнопку ОК.

4. Задайте наименование формы проекта FormForControlCommDiaiog.

5. Используя свойство caption формы, введите заголовок окна Форма для проверки диалогов CommonDialog.

6. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления. Если эта панель отсутствует на экране, то в меню View (Вид) выберите команду TooIBox (Панель инструментов).

7. Присвойте элементу управления CommonDialog наименование cdMyDialog.

8. Добавьте в форму кнопку управления типа commandButton и назовите ее cbControl. Эта кнопка будет использоваться нами для вызова диалогового окна по событию click.

9. Используя свойство caption, введите название кнопки Проверка диалогов CommonDialog.

Полученное приложение представлено на рис. 7.21. Этот проект, содержащий элемент управления commonDialog, будем использовать для создания диалоговых окон и знакомства с ними, размещая в событии click кнопки cbControl код настройки параметров требуемого диалогового окна и вызова соответствующего ему метода.

Рис. 7.21. Проект MySmallProject для проверки диалоговых окон, создаваемых с помощью элемента управления CommonDialog


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно открытия файла

Диалоговое окно открытия файла предназначено для поиска файлов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла (рис. 7.22) необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.ShowOpen

End Sub

Рис. 7.22. Диалоговое окно открытия файла, созданное с помощью объекта CornmonDialog

Для ввода кода достаточно дважды щелкнуть на объекте cbcontroi левой кнопкой мыши. При этом открывается редактор кода с шаблоном кода для события click этой кнопки.

Значения для свойства cdlMyDialog. Flags указаны в табл. 7.12.

Таблица 7.12. Значения для метода Flags диалогового окна открытия файла
Константа | Значение | Описание
cdlOFNAllowMultiselect | &H200 | Устанавливает возможность множественного выбора файлов в диалоговом окне. Возвращаемые имена файлов находятся в свойстве FileName элемента управления CornmonDialog и разделены пробелами
cdlOFNCreatePrompt | &H2000 | Устанавливает для диалогового окна запрос на подтверждение создания нового файла, если он не существует
cdlOFNExplorer | &H80000 | Назначает диалоговому окну стиль проводника
cdlOFNExtensionDifferent | &H400 | Сообщает, что расширение файла отличается от установленного по умолчанию в свойстве DefaultExt
cdlOFNFileMustExist | &H1000 | Устанавливает возможность ввода в диалоговом окне только имен существующих файлов. При вводе несуществующего файла выдается сообщение об ошибке
cdlOFNHelpButton | &H10 | Указывает на необходимость размещения в диалоговом окне кнопки Справка
cdlOFNHideReadOnly | &H4 | Файлы только для чтения не отображаются
cdlOFNLongNames | &H200000 | Разрешает использование длинных имен файлов
cdlOFNNoChangeDi r | &H8 | " Назначает папку, открываемую по умолчанию при запуске диалогового окна
cdlOFNNoLongNames | &H40000 | Запрещает использование длинных имен файлов
cdlOFNNoReadOniyReturn | &H8000 | Указывает, что выводимые в диалоговом окне файлы не должны быть предназначены только для чтения и не находятся в каталоге, защищенном от записи (Write-protected)
cdlOFNNoValidate | &H100 | Сообщает о вводе недопустимых символов в имени файла
cdlOFNOverwritePrompt | &H2 | Устанавливает для диалогового окна запрос на подтверждение перезаписи существующего файла
cdlOFNPathMustExist | &H800 | Устанавливает требование указания полного пути к файлу
cdlOFNReadOnly CdlOFNShareAware | &H1 &H4000 | Задает проверку флажка Только чтение Задает игнорирование ошибки типа блокировки, занятости файла (Sharing violation errors)


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно сохранения файла

Для поиска файла, в котором будут сохранены данные из программы, используется диалоговое окно сохранения файла (рис. 7.23). Это диалоговое окно вызывается так же, как окно открытия файла. Для его создания в событии click кнопки cbControl приложения MySmallProject необходимо заменить код на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowSave

End Sub

Рис. 7.23. Диалоговое окно сохранения файла, созданное с помощью объекта CommonDialog

Как видно из рисунка, это диалоговое окно аналогично окну, предназначенному для открытия файла. Флаги этого диалогового окна перечислены в табл. 7.12.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно настройки цветовой палитры

Для настройки цвета фона формы и расположенных в форме элементов можно использовать диалоговое окно настройки цветовой палитры (рис. 7.24). Для вызова этого диалогового окна необходимо заменить код в событии click кнопки cbcontrol приложения MySmallProject на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowColor

End Sub

Рис. 7.24. Диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog

Константы, используемые для настройки диалогового окна выбора цветовой палитры, перечислены в табл. 7.13. Расширенное диалоговое окно настройки цветовой палитры можно создать с помощью объекта CommonDialog (рис. 7.25).

Таблица 7.13. Значения для метода Flags диалогового окна цветовой палитры
Константа | Значение | Описание
cdlCCFullOpen | &H2 | Помещает в диалоговое окно дополнительную кнопку Добавить в набор и цветовое поле с маркером и линейкой назначения оттенка для добавления цветов в поля Дополнительные цвета диалогового окна цветовой палитры (рис. 7.25)
cdlCCShowHelp | &H8 | Добавляет в диалоговое окно кнопку Справка
cdlCCPreventFullOpen | &H4 | Скрывает кнопку Добавить в набор
cdlCCRGBInit | &H1 | Восстанавливает в диалоговом окне исходный набор цветов

Рис. 7.25. Расширенное диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog с флагомcdlCCFullOpen


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно настройки шрифтов текста

Для вызова диалогового окна настройки шрифтов (рис. 7.26) необходимо в событие click кнопки cbcontrol ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlCFBoth + cdlCFEffects

cdlMyDialog.ShowFont

End Sub

Рис. 7.26. Диалоговое окно настройки шрифта, открытое с использованием объекта CommonDialog

Флаги диалогового окна настройки шрифтов перечислены в табл. 7.14.

Таблица 7.14. Значения для метода Flags диалогового окна настройки шрифтов
Константа | Значение | Описание
cdlCFANSIOnly | &H400 | Назначает выбор только из системных наборов шрифтов Windows
cdlCFApply | &H200 | Добавляет в диалоговое окно кнопку Применить
cdlCFBoth | &H3 | Назначает использование экранных шрифтов принтера, указанного в свойстве hDC
CdlCFEffects | &H100 | Указывает на необходимость размещения в диалоговом окне элементов управления, задающих эффект подчеркивания, зачеркивания и цвета
cdlCFForceFontExis | it &H10000 | Назначает вывод предупреждения об ошибке при выборе несуществующего шрифта
cdlCFHelpButton | &H4 | Добавляет в диалоговое окно кнопку Справка
cdlCFLimitSize | &H2000 | Назначает выбор размеров шрифтов в интервале, указанном в свойствах Min и Мах
cdlCFNoFaceSel | &H80000 | Отключает выбор наименования шрифта
cdlCFNoSizeSel | &H1000 | Отключает выбор размера шрифта
cdlCFNoSimulations | &H200000 | Отключает в диалоговом окне графические шрифты
cdlCFNoStyleSel | &H100000 | Отключает выбор стиля шрифта
cdlCFNoVectorFonts | &H800 | Отключает выбор векторных шрифтов
cdlCFPrinterFonts | &H2 | Назначает выбор только шрифтов принтера, который указан в свойстве hDC
cdlCFScreenFonts | &H1 | Назначает выбор только экранных шрифтов системы
cdlCFTTOnly | &H40000 | Назначает только выбор шрифтов типа True Type
CdlCFWYSIWYG | &H8000 | Назначает выбор только тех шрифтов, которые подходят одновременно и для принтера, и для экрана. При этом должны дополнительно использоваться флаги cdlCFBoth и cdlCFScalableOnly


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Диалоговое окно печати

Диалоговое окно печати можно вызвать с помощью элемента управления

commonDialog, заменив код в событии click кнопки с наименованием cbControl на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowPrinter

End Sub

Открытое диалоговое окно показано на рис. 7.27.

Если требуется предварительно настраивать печать, то необходимо установить для свойства Flags значение cdlPDPrintSetup. В этом случае код будет выглядеть следующим образом:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlPDPrintSetup

cdlMyDialog.ShowPrinter

End Sub

Запустив приложение MySmallProject, вы получите диалоговое окно, показанное на рис. 7.28.

Рис. 7.27. Диалоговое окно печати, открытое с использованием объекта CommonDialog

Рис. 7.28. Диалоговое окно настройки печати, созданное с помощью объекта CommonDialog

Допустимые флаги диалоговых окон печати и настройки печати перечислены в табл. 7.15.

Таблица 7.15. Значения для метода Flags диалогового окна печати
Константа | Значение | Описание
cdlPDAllPages | &НО | Возвращает или устанавливает состояние переключателя печати всех страниц
cdlPDDisablePrintToFile | &H80000 | Делает недоступным флажок диалогового окна Печать в файл
cdlPDHelpButton | &H800 | Добавляет в диалоговое окно кнопку Справка
cdlPDHidePrintToFile | &H100000 | Скрывает флажок диалогового окна Печать в файл
cdlPDNoPageNums | &H8 | Скрывает элементы управления в группе Печатать
cdlPDNoWarning | &H80 | Отменяет предупреждение об отсутствии принтера по умолчанию
cdlPDPageNums | &H2 | Делает недоступными элементы управления, расположенные в области Печатать
cdlPDPrintSetup | &H40 | Выводит диалоговое окно настройки печати перед диалогом печати
cdlPDPrintToFile | &H20 | Возвращает или устанавливает состояние флажка Печать в файл
cdlPDReturnDefault | &H400 | Возвращает имя принтера, используемое по умолчанию
cdlPDUseDevModeCopies | &H40000 | Если драйвер принтера не поддерживает создание копий, делает недоступным счетчик Число копий. Если копирование поддерживается, указывает, что номер копии хранится в свойстве Copies


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Справочная система в стиле Windows

Флаги диалогового окна справочной системы перечислены в табл. 7.16. Для использования этого диалогового окна необходимо создать справочную систему для приложения (файл справки).

Таблица 7.16. Значения для метода Flags диалогового окна справочной системы
Константа | Значение | Описание
cdlHelpCommandHelp | &Н102 | Вызывает справочную систему отдельной командой
cdlHeIpContents | &НЗ | Вызывает содержание справочной системы
cdlHelpContext | &H1 | Вызывает отдельную тему справочной системы
cdlHelpContextPopup | &H8 | Вызывает тему справки по индексу
cdlHelpIndex | &H3 | Вызывает указатель справочной системы
cdlHelpKey | &H101 | Вызывает справочную систему по ключевому слову


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Строка состояния

Строка состояния — это специальный элемент окна, состоящий из нескольких панелей для отображения текущей информации о состоянии и режиме работы приложения. На рис. 7.29 показана строка состояния, отображающая состояние приложения, дату и текущее системное время. Этот элемент интерфейса обычно размещается в нижней части родительского окна приложения, если не требуется специально установить его в другом месте окна. Такое положение строки состояния является стандартным.

Рис. 7.29. Строка состояния приложения

Для добавления строки состояния в форму используется элемент управления statusBar. Чтобы этот объект можно было использовать в приложении, необходимо в окне Components (Компоненты) подключить к выбранному проекту библиотеку Microsoft Window Common Control 6.0. После подключения библиотеки элемент управления StatusBar появляется на панели элементов управления среды проектирования и его можно добавить в форму стандартным способом, как и все другие элементы управления.

Строка состояния состоит из набора панелей, каждая из которых является объектом и имеет следующие основные свойства:

  • Alignment — задает выравнивание текста на панели строки состояния;
  • Bevel — устанавливает затенение для придания объемности панелям;
  • Minwidth — определяет минимальный размер панелей строки состояния;
  • picture — задает графическое изображение, которое будет помещено на панель;
  • Style — определяет тип панели. Может принимать значения, указанные в табл. 7.17;
  • Text — задает текст, размещаемый на панели. Как правило, этот текст формируется программно;
  • ToolTip — задает текст подсказки для панели. Выводится при задержке указателя мыши на панели.

Таблица 7.17. Значения свойства Style панелей строки состояния
Стиль | Значение | Описание
sbrText | 0 | Дает возможность отображать текст или изображение в свойствах панели Text и Picture, соответственно
sbrCaps | 1 | Отображает состояние клавиши <Caps Lock>. Если эта клавиша нажата, текст CAPS на панели яркий, если отжата — затененный
sbrNum | 2 | Отображает состояние клавиши <Num Lock>
sbrIns | 3 | Отображает состояние клавиши <lns>
sbrScrl | 4 | Отображает состояние клавиши <Scroll Lock>
sbrTime | 5 | Выводит текущее время
sbrDate | 6 | Выводит текущую дату

Настройка строки состояния и управление ею выполняется при помощи окна свойств Property Pages (Страница свойств) этого элемента управления, открываемого при выборе команды Properties (Свойства) контекстного меню объекта (рис. 7.30).

Рис. 7.30. Диалоговое окно Property Pages для строки состояния

Рассмотрим создание строки состояния на примере нашего приложения MyMDIApp. Откроите приложение и выполните следующие действия:

1. Добавьте в форму элемент управления StatusBar, дважды щелкнув мышью

гвг кнопку StatusBar на панели элементов управления.

2. После появления в форме строки состояния присвойте ей имя sbStatusBar.

3. Установите курсор на строку состояния, нажмите правую кнопку мыши и выберите из появившегося контекстного меню команду Properties (Свойства). Откроется диалоговое окно Property Pages для настройки строки состояния.

4. С помощью кнопки Insert Panel (Вставить панель), добавьте в строку состояния еще две панели.

Замечание

По умолчанию строка состояния содержит одну панель.

5. Используя счетчик Index (Индекс), перейдите к настройке панели 1. Панели строки состояния проектируются независимо друг от друга, переключение с одной на другую выполняется при помощи счетчика Index.

6. Первую панель будем использовать для отображения текстовой информации. Установите для нее свойство Style в значение 0 -sbrText, затем в свойство Text этой панели введите значение Текст подсказки.

7. Перейдите к настройке второй панели, установив для счетчика Index значение 2.

8. Вторая панель будет использоваться для отображения текущей даты. Установите для свойства style значение 0 -sbrDate.

Рис. 7.31. Работа приложения, содержащего строку состояния

9. Перейдите к настройке третьей панели, установив для счетчика Index значение 3.

10. Установите для свойства Style значение 0 -sbrCaps. Это будет панель, отображающая состояние клавиши <Caps Lock>.

11. Запустите полученное приложение на выполнение командой Start меню Run. Созданное приложение представлено на рис. 7.31.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 7. Разработка пользовательского интерфейса.

Интерфейс — это внешняя оболочка приложения вместе с программами управления доступом и другими скрытыми от пользователя механизмами управления, дающая возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами. Главная цель любого приложения — обеспечить максимальное удобство и эффективность работы с информацией: документами, базами данных, графикой или изображениями. Поэтому интерфейс является, пожалуй, самой важной частью любого приложения.

Хорошо разработанный интерфейс гарантирует удобство работы с приложением и, в конечном итоге, его коммерческий успех. В данной главе описаны виды интерфейсов и процесс создания интерфейса со всеми его основными элементами управления: меню, контекстным меню, панелями инструментов, строкой состояния.

Проектирование интерфейса — процесс циклический. На этом этапе разработки приложения желательно чаще общаться с пользователями и заказчиками приложения для выработки наиболее приемлемых по эффективности. удобству и внешнему виду интерфейсных решений.

Выбор того или иного типа интерфейса зависит от сложности разрабатываемого приложения, поскольку каждый из них имеет некоторые недостатки и ограничения и предназначен для решения определенных задач. При этом необходимо ответить на ряд вопросов: какое количество типов документов обрабатывается в приложении, имеют ли данные древовидную иерархию, потребуется ли панель инструментов, какое количество документов обраба-тывается за некоторый интервал времени (например, за день) и т. д. Toлько после этого можно выбирать конкретный тип интерфейса.

Рассмотрим возможные типы интерфейсов и их характерные особенности, влияющие на выбор интерфейсного решения приложения.

Общие советы по разработке интерфейса

При разработке интерфейса необходимо руководствоваться следующими принципами:

  • Стандартизация. Рекомендуется использовать стандартные, проверенные многими программистами и пользователями интерфейсные решения. Для Visual Basic это, разумеется, решения Microsoft. Причем в качестве стандарта (образца для "подражания") может служить любое из приложений — Word, Excel или другие приложения Microsoft. Под решениями подразумеваются дизайн форм, распределение элементов управления в формах, их взаимное расположение, значки на кнопках управления, названия команд меню.
  • Удобство и простота работы. Интерфейс должен быть интуитивно понятным. Желательно, чтобы все действия легко запоминались и не требовали утомительных процедур: выполнения дополнительных команд, лишних нажатий на кнопки, вызова промежуточных диалоговых окон.
  • Внешний дизайн. Нельзя, чтобы интерфейс утомлял зрение. Он должен быть рассчитан на длительную работу пользователя с приложением в течение дня.
  • Неперегруженность форм. Формы должны быть оптимально загружены элементами управления. При необходимости можно использовать вкладки или дополнительные страницы форм.
  • Группировка. Элементы управления в форме необходимо группировать по смыслу, используя элементы группировки: рамки, фреймы.
  • Разреженность объектов форм. Элементы управления следует располагать на некотором расстоянии, а не лепить друг на друга; для выделения элементов управления можно организовать пустые пространства в форме.

Здесь перечислены основные принципы, которые следует учитывать при проектировании интерфейса приложения, но они не являются догмой. Со временем в процессе работы с пользователями и накоплением практического опыта будут вырабатываться и свои оптимальные принципы построения интерфейса.

Типы интерфейсов

В настоящее время для приложений, разрабатываемых в среде Windows при помощи Visual Basic б, используется три типа интерфейса: однодокументный SDl (Single-Document Interface), многодокументный MDI (Multiple-Document Interface) и интерфейс типа проводник (Explorer).

Замечание

Под документом в этом случае нужно понимать форму, предназначенную для работы с данными, а не с конкретным документом.

В этой главе основное внимание будет уделено первым двум типам интерфейса, поскольку они наиболее часто применяются для разработки пользовательских приложений. Интерфейс типа проводника используется в приложениях не так часто, поэтому мы дадим только его краткое описание.

Однодокументный интерфейс — это тип интерфейса, в котором предоставляется возможность работы только с одним документом в одном окне. Примером может служить редактор Microsoft WordPad. Для работы с несколькими документами в таком интерфейсе необходимо многократно запускать приложение. Для каждого типа данных и документов требуется своя форма и, соответственно, свое приложение с интерфейсом типа SDI. В принципе, это тоже один из возможных вариантов, но он подходит только для работы с небольшим количеством форм документов. При загрузке большого количества SDI-приложений начинает переполняться оперативная память компьютера и приложения работают очень медленно. Каждый раз при запуске SDI-приложения в память загружаются одни и те же данные (меню, панель и элементы управления), выполняющие одинаковые действия, что приводит к неэффективной и медленной работе запускаемых приложений.

Однако полностью отказываться от интерфейса типа SDI не стоит, поскольку он вполне годится для работы с одним или двумя документами (например, для копирования из одного документа в другой). Есть и положительные стороны приложений такого типа интерфейса — они занимают меньше места на диске и в оперативной памяти, да и на их разработку уходит гораздо меньше времени, что также немаловажно.

Интерфейс типа MDI дает возможность работать в одном приложении с любым количеством открытых окон.

SDI-интерфейс

Интерфейс типа SDI показан на рис. 7.1. Он состоит из следующих элементов:

  • главного меню;
  • панели инструментов с элементами управления;
  • окна приложения для размещения элементов управления данными (в таком случае это окно с заголовком "Документ WordPad");
  • элементов управления для работы с данными. На рис. 7.1 это одно большое поле для работы с текстом;
  • строки состояния.

Рис. 7.1. Пример интерфейса типа SDI

Этот тип интерфейса подходит для приложений, созданных для работы с документом одного типа с небольшим количеством полей (иначе форма перегружается элементами управления и интерфейс становится сложным и неудобным).

MDI-интерфейс

Главная особенность MDI заключается в том, что для этого типа интерфейса можно многократно открывать форму одного вида документа для нескольких разных по содержанию документов. Примером интерфейса типа MDI может служить программа Microsoft Word (рис. 7.2).

Рис. 7.2. Пример интерфейса типа MDI

Для интерфейса такого типа характерно наличие одного главного окна (MDI-окно), которое обычно именуется родительским окном (на рис. 7.2 это окно с заголовком Microsoft Word), и необходимого для работы количества подчиненных (вложенных) окон, называемых дочерними (на рис. 7.2 это окна с заголовками Документ1, Документ2, Документ4). Количество открытых дочерних окон ограничено лишь возможностями компьютера.

Подчеркнем, что родительское окно для MDI-интерфейса может быть только одно, при этом оно является контейнером для всех дочерних окон. Это означает, что при минимизации родительского окна вместе с ним минимизируются и все дочерние окна.

В свою очередь, дочерние окна могут находиться только внутри родительского, то есть при раскрытии на весь экран дочерние окна раскрываются полностью только в границах родительского окна и не могут быть вынесены или перемещены за эти границы.

В состав интерфейса MDI входят следующие элементы:

  • главное меню;
  • панель инструментов с элементами управления;
  • главное окно приложения (MDI-окно);
  • дочерние окна;
  • элементы управления для работы с данными, расположенные в дочерних окнах (на рис. 7.2 это одно большое поле для работы с текстом своего документа в каждом из окон);
  • строка состояния.

Рассмотрим подробнее элементы интерфейса и технологию их создания при помощи инструментальных средств Visual Basic.

Родительское окно MDI-интерфейса

Для добавления родительской формы в проект можно выполнить одно из следующих действий:

  • в меню Project (Проект) выбрать команду Add MDI Form (Добавить MDI-форму);
  • в окне проводника нажать правую кнопку мыши и выбрать из контекстного меню команду Add, а затем значение MDI Form.

    Замечание

    При наличии MDI-формы в проекте эта команда недоступна.

MDI-форма показана на рис. 7.3.

Рис. 7.3. Форма родительского окна интерфейса типа MDI

Родительское и дочернее окна имеют набор основных свойств, описанных в табл. 7.1. Доступ к этим свойствам можно получить при помощи окна Properties (Свойства).

Таблица 7.1. Набор основных свойств родительских и дочерних окон
Свойство | Назначение
BackColor | Определяет цвет фона формы. Выбирается из предлагаемой палитры
BorderStyie | Определяет тип обрамления, а также управляет изменениями размеров формы. Дополнительно определяет наличие кнопок в строке заголовка окна
Caption | Задает текст, выводимый в заголовке формы
ControlBox | Определяет наличие в левом верхнем углу окна кнопки в виде значка, открывающей оконное меню
Font | Задает шрифт в окне
ForeColor | Задает цвет выводимого в окне текста. Рекомендуется использовать стандартные цвета как фона, так и текста
Height | Задает высоту формы. При конструировании автоматически модифицируется при изменении размеров при помощи мыши
Icon | Задает значок для формы
Left | Задает расстояние от формы до левого края экрана
MaxButton | Управляет наличием кнопки развертывания (максимизации) окна
MinButton | Управляет наличием кнопки свертывания (минимизации) окна
MDIChild | Управляет возможностью превращения окна типа MDI в дочернее. Принимает значения True или False. По умолчанию принимает значение False
Name | Задает уникальное имя формы для использования в программных модулях и тексте кода. При назначении имени рекомендуется использовать префикс frm или mdi
ScaleMode | Задает единицу измерения свойств Width, Height, Left и Top
ShowInTaskbar | Управляет отображением значка окна на панели задач системы Windows
Width | Определяет ширину формы
WindowState | Управляет состоянием формы при запуске и может принимать следующие значения: 0-Normal— нормальное состояние, 1-Mini-mized — минимизированное состояние и 2-Maximized — максимизированное состояние

Свойство BorderStyle определяет тип обрамления окна и может принимать значения, приведенные в табл. 7.2.

Таблица 7.2. Тип обрамления окна. задаваемый свойством BorderStyle
Значение свойства | Тип обрамления
0-Мопе | Отсутствует рамка окна. Изменение размеров и перемещение окна запрещено. Отсутствуют основные атрибуты окна: заголовок, меню, кнопки свертывания, развертывания и закрытия
1-Rxed Single | Окно с рамкой в виде одинарной линии и с фиксированными размерами. Изменение размеров окна с помощью мыши запрещено. Основные атрибуты заголовка формы, упомянутые выше, доступны для этого значения
2-Sizable | Окно имеет рамку, размеры которой можно изменить при помощи мыши. Разрешено также перемещение окна. Все атрибуты заголовка окна присутствуют. Это значение устанавливается по умолчанию при создании формы
3-Fixed Dialog | Окно имеет рамку, размеры которой изменить нельзя, при этом разрешено перемещение окна. В заголовке расположена только кнопка закрытия окна. Это значение свойства BorderStyle используется, в основном, для диалоговых окон
4-Fixed ToolWindow | Аналогично значению 3-Fixed Dialog. При этом заголовок уже и содержит только кнопку закрытия окна
5-Sizable ToolWindow | Аналогично значению 2-Sizable, однако кнопки свертывания и развертывания окна при этом недоступны

Свойство ScaleMode задает единицу измерения свойств width, Height, Left и Top и может принимать значения, описанные в табл. 7.3.

Таблица 7.3. Значения, принимаемые свойством ScaieMode
Значение | Единица измерения
0-User | Пользовательская
1-Twip | Твип. Является стандартной единицей измерения для Visual Basic и устанавливается по умолчанию при создании формы. В одном дюйме содержится 1440 твипов
2-Point | Точка. Необходимо иметь в виду, что в дюйме 72 точки
3-Pixel | Пиксел. Базовая аппаратная единица измерения. Определяет минимальный допустимый размер точки экрана или точки при выводе на принтер
4-Character | Символ
5-Inch | Дюйм
6-Milimeter | Миллиметр
7-Centimeter | Сантиметр

Свойства окон можно изменять в режиме проектирования. Кроме того, Visual Basic дает возможность изменять свойства окон из программы в ре-жиме выполнения.

Здесь следует заметить, что в отличие от дочернего, для родительского окна доступна только часть из перечисленных свойств. Например, недоступны свойства MaxButton, MinButton или controiBox, управляющие кнопками в заголовке окна.

В свою очередь, существуют свойства, характерные только для родительского окна. Это свойства AutoShowChildren И ScrollBars. Если свойство AutoShowChildren имеет значение True (это значение используется по умол чанию), то при загрузке родительского окна автоматически загружается дочернее окно. Свойство ScrollBars определяет наличие полос прокрутки в родительском окне для дочерних окон, выходящих за границы видимости. По умолчанию это свойство имеет значение True, разрешающее отображение полосы прокрутки.

В табл. 7.4 приведены основные события, которые чаще всего используются для форм. В процессе программирования вы познакомитесь с ними более подробно.

Таблица 7.4. События, используемые формами
Событие | Описание
Activate | Происходит в тот момент, когда форма становится активной. Связано с событиями Initialize, Load, GotFocus. При открытии формы сначала происходит событие initialize, затем Load, после этого непосредственно Activate и завершает процесс открытия событие GotFocus
Click | Происходит при щелчке кнопки мыши
DblClick | Двойной щелчок кнопки мыши
Deactivate | Событие, противоположное Activate. Происходит, когда форма становится неактивной
GotFocus | Происходит при установке фокуса на активизируемой форме
Initialize | Инициализация формы
KeyUp | Происходит при нажатии клавиши на клавиатуре
Load | Происходит при загрузке формы в память до ее появления на экране
MouseUp | Происходит при нажатии кнопки мыши
Resize | Происходит при изменении размеров формы
Unload | Противоположное событию Load. Происходит перед выгрузкой формы из памяти и удалением ее с экрана

При проектировании можно просмотреть список событий, связанных с формой, в окне редактора кода формы. Для этого необходимо выполнить команду Code (Код) меню View (Вид) или переместить указатель в поле конструирования формы и дважды щелкнуть кнопкой мыши. В верхней части окна редактора кода расположены два списка. Выберите из левого списка объектов текущую форму. При этом в правом списке будут расположены все события формы.

При программировании событий Visual Basic 6 сразу же при выборе события предоставляет готовую конструкцию (шаблон кода) для программирования действий по событию. Имя процедуры обработки события всегда связано с его именем. Например, для обработки события Load автоматически предоставляется такой шаблон:

Private Sub Form_Load()

... код процедуры обработки события

End Sub

Дочернее окно MDI-интерфейса

Дочернее окно (рис. 7.4) обладает всеми описанными в табл. 7.1 свойствами окон. Практически все они доступны при проектировании.

Рис. 7.4. Форма дочернего окна интерфейса типа MDI

Основные особенности дочерних окон:

  • дочерняя форма всегда располагается в границах родительской;
  • дочернюю форму нельзя переместить за границы родительской формы;
  • дочернее окно сворачивается только внутри родительского;
  • при разворачивании дочернее окно занимает все внутреннее пространство родительского окна.

Расположением дочерних окон в родительском окне можно управлять при помощи метода Arrange родительского окна и набора переменных, которые задают способы размещения дочерних окон (табл. 7.5).

Таблица 7.5. Значения констант для метода Arrange
Константа | Значение | Описание
vbCascade | 0 | Каскадное расположение дочерних форм, при этом каждая последующая сдвинута вниз и вправо примерно на ширину заголовка формы
vbTileVertical | 1 | Расположение в виде вертикальной мозаики, при этом дочерние формы имеют высоту родительской формы и такую ширину, чтобы разместиться по всей ширине родительского окна
vbTileHorizontal | 2 | Расположение в виде горизонтальной мозаики, при этом дочерние формы имеют ширину родительской формы и такую высоту, чтобы разместиться по всей высоте родительского окна
vbArrangeIcon | 3 | При минимизации окна располагаются на нижнем крае родительского окна

Для добавления дочерней формы в проект необходимо выполнить команду Add Form (Добавить форму) меню Project (Проект). В качестве дочерней формы можно использовать автоматически создаваемую при выборе нового проекта форму. При этом свойство MDIchild следует установить в значение True.

Для исследования характеристик и взаимодействия родительского и дочернего окон создадим небольшое приложение. Для этого выполните следующие действия:

1. Создайте новый проект. Для этого в меню File (Файл) выберите команду New Project (Создать проект) и дважды щелкните на значке Standard ЕХЕ.

2. Откройте окно свойств проекта, выбрав команду ProjectName Properties в меню Project.

3. В поле Project Name введите имя проекта MyMDIApp и нажмите кнопку ОК для закрытия диалогового окна.

4. Чтобы автоматически использовать созданную форму проекта в качестве дочерней, откройте окно свойств, вызвав его командой Properties Window (Окно свойств) в меню View (Вид), и установите для свойства MDichild значение True.

5. Используя свойство Name, введите имя формы frmChildMDI.

6. В поле свойства caption введите заголовок окна Дочернее окно MDI.

7. Добавьте в проект MDI-форму, выполнив команду Add MDI Form (Добавить MDI-форму) меню Project (Проект).

8. Воспользовавшись свойством Name, введите имя формы mdiParentMDI.

9. Используя свойство Caption, введите заголовок окна Родительское окно MDI

10. Для демонстрации некоторых действий нам понадобится простое меню. Создадим его по шагам (редактор меню описан в разделе "Меню" данной главы).

  • Выберите родительское окно.
  • Вызовите редактор меню командой Menu Editor (Редактор меню) из меню Tools (Сервис).
  • В поле Name (Имя) введите имя тли file.
  • В поле Caption (Заголовок) введите заголовок меню Файл.
  • Теперь создайте пункт этого меню. Нажмите кнопку Next (Следующий) и кнопку с направленной вправо стрелкой. В поле Name введите имя меню mnufileNewForm, а в поле Caption его заголовок Новая форма.

Небольшое приложение готово к работе. Для проверки запустите его при помощи команды Start (Запустить) меню Run (Запуск). Остановка приложения выполняется командой End (Остановить) того же меню.

11. Запрограммируем вызов нескольких дочерних форм. Для этого выделите родительскую форму в конструкторе форм и дважды щелкните левой кнопкой мыши для вызова редактора кода родительского окна.

12. В списке объектов (левый раскрывающийся список) выберите пункт меню mnuFileNewForm, в левом списке событий выберите событие click и напишите для него следующий код :

Private Sub nmuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmNewForm.Show

End Sub

В тексте кода мы объявили объектную переменную frmNewForm для ссылки на вновь созданный экземпляр окна. Затем с помощью метода show новый экземпляр визуализируется в родительском окне. Для вычисления номера дочернего окна используется переменная frmCount. Этот код выполняется при выборе команды Новая форма из меню Файл родительского окна.

13. При помощи этого простого приложения можно проверить все основные характеристики родительского и дочернего MDI-окон. Для проверки возможностей упорядочения дочерних окон в родительском окне (свойство Arrange) добавим в меню пункт Окно и команду меню, выполняющую упорядочение. Для этого откройте редактор меню и добавьте пункт Окно и необходимую команду. Присвойте пункту меню имя mnuwindow, а команде, предназначенной для расположения окон каскадом, имя mnuwindowTileVertical. Программный код должен выглядеть следующим образом:

Private Sub mnuwindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Ниже приведен полный текст кода созданного нами простого приложения:

Dim frmCount As Integer

Private Sub MDIForm_Load()

frmChildMDI.Caption = "Дочерняя форма 1"

frmCount = 1

End Sub

Private Sub mnuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

Private Sub mnuWindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Работающее приложение с упорядоченными окнами представлено на рис. 7.5.

Рис. 7.5. Работа простого приложения в стиле интерфейса MDI

Аналогично можно запрограммировать другие способы упорядочивания дочерних окон в родительском.

Интерфейс типа проводник

Интерфейс типа проводник разрабатывается для доступа к иерархическим древовидным структурам, то есть к таким, где встречается вложенность. Примером вложенности могут служить папки и файлы. Файлы лежат в папках, которые в свою очередь лежат в вышестоящих папках и так далее. Примером такого интерфейса является проводник Windows (рис. 7.6). На рисунке наглядно видна структура хранения папок и файлов, образующая иерархическое дерево. По своей сути это аналог интерфейса SDI, разработанный специально для древовидных структур.

Интерфейс приложения типа проводник содержит следующие элементы:

  • главное меню;
  • окно приложения для размещения элементов управления данными (в нашем случае это окно с заголовком "Проводник — Microsoft Visual Studio");
  • иерархический список элементов древовидной структуры. Это могут быть папки и файлы, документы, если они организованы в иерархическую структуру;
  • элементы управления для работы с данными: кнопки, поля, флажки и т. п.;
  • строка состояния.

Рис. 7.6. Интерфейс типа проводник (Explorer)

Элементы интерфейса

Рассмотрим подробнее основные элементы интерфейса и возможности их использования в приложениях Visual Basic 6.

Меню

Любое приложение создается для реализации комплекса функций, обеспечивающих выполнение общей задачи приложения. Для быстрого доступа ко всем функциям приложения используется меню: главное меню приложения и контекстное меню отдельных объектов приложения (форм, панелей).

При проектировании меню следует руководствоваться определенными принципами. Главный из них — стандарты. Рекомендуется придерживаться стандартных названий команд меню и их расположения: например, пункт меню для работы с файлами рекомендуется называть в своих приложениях File (Файл), а пункт меню для вызова справочной системы приложения — Help (Справка). При этом пункт меню File желательно располагать самым первым, а пункт Help — последним. На этот стандарт для всех приложений Windows, к которому привыкли многие миллионы пользователей, можно вполне положиться. Приложение будет при этом более понятным пользователю.

В процессе разработки меню желательно группировать команды меню, реализующие функции для решения конкретной задачи (например, работа с файлами), в одно раскрывающееся меню, которое будет соответствовать пункту меню. Например, все команды, реализующие функции работы с файлами, желательно сгруппировать в одно раскрывающееся меню, связанное с пунктом меню File.

В приложениях каждой команде меню, как правило, соответствует "горячая" клавиша (клавиша быстрого доступа). Рекомендуется по возможности использовать стандартные клавиши, например, как в Microsoft Word. В принципе, это приложение может служить стандартным образцом для создания собственных приложений при разработке не только меню, но и всех других элементов.

Как и любой другой объект приложения, меню имеет набор свойств. Свойства меню доступны для редактирования в окне Properties (Свойства) формы, которой принадлежит меню (рис. 7.7).

Рис. 7.7. Свойства меню

Основные свойства меню приведены в табл. 7.6.

Таблица 7.6. Основные свойства меню
Свойство | Назначение
Name | Наименование (имя) меню. Должно быть уникальным, так как позволяет идентифицировать меню. Желательно пользоваться стандартным присвоением имени, то есть имя должно начинаться с букв mnu
Caption | Текст, отображаемый в пункте меню. Если в этом тексте перед одной из букв поместить символ "&", то буква в пункте меню будет подчеркнута и клавиша этой буквы будет назначена "горячей" клавишей для быстрого доступа к данному пункту меню
Checked | Если это свойство имеет значение True, при работе приложения слева от наименования выбранного пункта меню появляется галочка
Enabled | Свойство, определяющее возможность выполнения команды (пункта) меню. В зависимости от контекста объекта команды запрещаются или разрешаются
HelpContextID | Идентификатор справочной системы, соответствующий справке об этом меню
Index | Идентификатор пункта меню в массиве элементов управления приложения
NegotiatePosition | Определяет положение меню на экране
Shortcut | Комбинация клавиш для быстрого выполнения пункта меню
Visible | Определяет видимость на экране пункта меню. При работе приложения с помощью этого свойства пункты меню можно динамически прятать или показывать
WindowList | Назначает свойство формирования динамического списка окон. При установке этого свойства в меню будет добавляться список окон по мере их запуска при работе приложения. Это свойство обычно используется для пункта меню самого верхнего уровня и для родительского окна приложений с интерфейсом типа MDI

Редактор меню Menu Editor

Для проектирования меню всех видов используется редактор меню Menu Editor (Редактор меню) среды проектирования IDE (рис. 7.8). Редактор меню вызывается одним из следующих способов:

  • командой Menu Editor (Редактор меню) меню Tools (Инструменты);
  • нажатием кнопки Menu Editor на стандартной панели инструментов;
  • нажатием комбинации клавиш <Ctrl>+<E>.

Редактор создает меню для активного в данный момент окна, то есть, если активно MDI-OKHO, проектируется меню для него, если активна дочерняя форма, проектируется меню для дочерней формы. На рис. 7.8 показан редактор меню родительского окна, созданного автоматически мастером приложения Application Wizard.

Редактор меню состоит из двух групп: элементов управления свойствами и элементов конструирования структуры меню. Управлять основными свойствами меню, о которых было сказано выше, можно с помощью следующих элементов редактора меню:

  • поле Caption (Заголовок) — наименование пункта меню, то есть текст, появляющийся в меню;
  • поле Name (Имя) — имя меню. Используется для идентификации объекта при написании программных кодов;
  • раскрывающийся список Shortcut (Оперативная клавиша) — назначает комбинацию клавиш для быстрого вызова команды меню;
  • поле HelpContextID (Идентификатор справки) — ссылка на тему в справочной системе;
  • флажок Enabled (Доступно) — доступ к пункту меню;
  • флажок Visible (Видимость) — определяет, будет ли виден на экране элемент меню;
  • флажок WindowList (Список окон) — определяет наличие списка открытых окон.

Рис. 7.8. Окно редактора меню Menu Editor

Элементы группы конструирования структуры меню позволяют добавлять и удалять новые пункты меню, перемещать пункты по вертикали, меняя порядок их следования, и по горизонтали, меняя расположение пунктов в иерархии системы меню:

  • кнопки с направленными вправо и влево стрелками перемещают пункты или команды меню в иерархии меню;
  • кнопки с направленными вверх и вниз стрелками перемещают пункты или команды меню по структуре меню;
  • Next (Следующий) — перемещает указатель к следующему пункту меню. Если указатель находится на последнем пункте меню, то создается новый пункт меню или новая команда меню такого же уровня иерархии;
  • Insert (Вставить) — добавляет пункт меню или команду в пункт меню;
  • Delete (Удалить) — удаляет пункт меню или команду из пункта меню.

Для добавления пункта меню выполните следующие шаги:

1. Выберите место в имеющейся структуре меню.

2. Добавьте пункт меню, нажав кнопку Insert (Вставить).

3. В поле Caption (Заголовок) введите название пункта меню, которое будет отображаться в строке меню при запуске приложения на выполнение.

4. В поле Name (Имя) введите имя пункта меню, по которому он иденти фицируется в программном коде.

Контекстное меню

Для приложения любого типа можно использовать удобное средство быстрого доступа к функциям — контекстное меню. Контекстное меню связано с некоторым действием (обычно это щелчок правой кнопки мыши на объекте) и вызывается в любом месте приложения. В исходном состоянии контекстное меню невидимо и визуализируется рядом с указателем мыши после вызова. Контекстным такое меню называется потому, что оно появляется рядом с выбранным объектом, и его состав зависит от содержания (контекста) этого объекта. После выбора команды из контекстного меню оно исчезает.

Проектируется контекстное меню как один из пунктов верхнего уровня строки меню. Поскольку меню должно быть скрыто и вызываться определенным действием, свойство visible проектируемого пункта меню необходимо установить в значение False.

Для визуализации контекстного меню на экране необходимо использовать метод popUpMenu формы. Например, для вызова меню File (Файл) при нажатии правой кнопки мыши достаточно написать такую условную конструкцию для события MouseUp формы:

If Button = vbRightButton

Then Form1.PopUpMenu mnuFile

End If

В этом примере при выполнении в форме события MouseUp (Нажатие на кнопку мыши) проверяется, какая кнопка нажата. В данном случае, при помощи внутренней константы Visual Basic 6 vbRightButton (Правая кнопка) проверяется нажатие на правую кнопку мыши и запускается метод PopUpMenu. В качестве параметра задается имя требуемого контекстного меню.

Панели инструментов

В дополнение к строке состояния и контекстному меню, в настоящее время большой популярностью пользуются панели инструментов, позволяющие ускорить доступ к функциям приложения. Обычно панель инструментов содержит наиболее часто используемые команды строки меню или контекстных меню. При разработке приложении можно применять панели двух видов: обычную панель ToolBar (рис. 7.9) и улучшенную панель CoolBar (рис. 7.10).

Рис. 7.9. Обычная панель инструментов

Рис. 7.10. Улучшенная панель инструментов

Для проектирования панелей инструментов в Visual Basic 6 используются:

  • мастер панелей инструментов, входящий в состав мастера приложений;
  • элемент управления ToolBar для создания обычной панели инструментов;
  • элемент управления CoolBar для создания улучшенной панели инструментов.

Мастер панелей инструментов Toolbar Wizard

Для проектирования панелей инструментов в программе Visual Basic можно использовать мастер панелей инструментов, работающий в составе мастера приложений VB Application Wizard.

Замечание

Запуск и работу данного мастера мы рассмотрели в главе 2.

Диалоговое окно мастера показано на рис. 7.11. В верхней части окна мастера расположена предлагаемая по умолчанию панель инструментов, ниже расположены два списка. Левый список содержит набор кнопок, который может быть добавлен на панель инструментов. Правый список отображает набор кнопок, уже размещенных на панели инструментов.

Для добавления кнопки на панель инструментов необходимо выбрать в левом списке требуемую кнопку и перенести ее в правый список, выполнив одно из следующих действий:

  • дважды щелкнуть мышью;
  • нажать расположенную между списками кнопку с изображением направленной вправо стрелкой;
  • использовать механизм перенести-и-оставить, то есть нажать кнопку мыши и, удерживая ее нажатой, перенести кнопку в правый список, после чего отпустить кнопку мыши.

Рис. 7.11. Окно мастера проектирования панелей инструментов

При выполнении любого из этих действий требуемая кнопка перемещается в правый список и одновременно добавляется на панель инструментов.

Чтобы отредактировать наименование или изменить значок кнопки, располагаемой на панели инструментов в верхней части окна мастера, нажмите данную кнопку. Откроется диалоговое окно Button Attributes (Атрибуты кнопки) (рис. 7.12), в котором можно изменить требуемые параметры. Для изменения значка нажмите кнопку Change Bitmap и с помощью открывшегося диалогового окна выберите графический файл для изображения, размещаемого на кнопке.

Рис. 7.12. Диалоговое окно Button Attributes

Кнопка Reset (Сброс) возвращает панель инструментов в исходное состояние, устанавливаемое мастером по умолчанию. Изменить последовательность кнопок на панели инструментов можно кнопками перемещения позиций в списке. Следует иметь в виду, что кнопки перемещения позиций управляют только правым списком.

Используя кнопку Load an External Bitmap or Icon можно добавить на панель инструментов свою кнопку. Пользовательская кнопка размещается в правом списке и на панели инструментов.

Элемент управления ToolBar

Элемент управления ToolBar предоставляет возможность применять в приложении обычные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls 6.0, выбрав команду Components (Компоненты) меню Project (Проект). В открывшемся при выполнении этой команды окне Components необходимо найти в списке указанную библиотеку, установить располагаемый с левой стороны флажок и нажать кнопку ОК. После подключения этой библиотеки элемент управления TooiBar появится на панели элементов управления.

Панель инструментов ToolBar является контейнером и может содержать следующие элементы управления:

  • кнопку PushButton, работающую как обычная кнопка формы;
  • кнопку-флажок CheckButton, которая работает как флажок и может находиться в состояниях нажато/отжато;
  • группу кнопок-переключателей ButtonGroup, работающих как аналог переключателя в форме, то есть нажата может быть только одна кнопка из группы;
  • кнопку-разделитель Separator, используемую для создания интервалов между кнопками;
  • кнопку-заменитель Placeholder, служащую для резервирования места на панели для других типов элементов управления, таких как раскрывающийся список ComboBox, список ListBox, переключатель OptionBox, текстовое поле TextBox;
  • кнопку раскрывающегося списка DropDown, работающую аналогично раскрывающемуся списку формы.

Управлять панелью можно при помощи основных свойств, описанных в табл. 7.7.

Таблица 7.7. Основные свойства панели инструментов
Свойство | Назначение
AllowCustomize | Позволяет настраивать панель инструментов при работе приложения, то есть добавлять, удалять, перемещать кнопки панели
BorderStyle | Задает тип обрамления панели
ButtonHeight | Задает высоту кнопок панели, при этом автоматически вычисляется высота самой панели
ButtonWidth | Задает ширину кнопок панели
Enabled | Управляет доступом к выполнению действий на панели инструментов
ShowTips | Устанавливает режим отображения подсказки для кнопок панели инструментов
Visible | Задает видимость панели инструментов
Wrappable | Устанавливает режим автоматического переноса кнопок на другой ряд при недостатке места

Возможности настройки панели инструментов рассмотрим на примере. Для этого сконструируем небольшую панель инструментов в приложении MyMDIApp, созданном для проверки свойств интерфейса в стиле MD1. Выполните для этого следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls 6.0, в которой содержится элемент управления ToolBar, воспользовавшись диалоговым окном Components (Компоненты).

2. Добавьте в родительскую форму объект ToolBar, дважды щелкнув мышью кнопку ToolBar на панели элементов управления.

3. Откройте окно свойств, выбрав команду Properties Window (Окно свойств) в меню View (Вид) при выделенной в форме панели инструментов.

4. Используя свойство Name, присвойте панели имя tbrTools.

5. Панель инструментов создана, теперь необходимо разместить на ней кнопки. Для этого вызовем окно проектирования панели, нажав на ней правую кнопку мыши и выбрав в появившемся контекстном меню команду Properties (Свойства).

6. В открывшемся диалоговом окне Property Pages (рис. 7.13) по умолчанию выбрана вкладка General (Основная), позволяющая установить основные свойства панели. Оставим параметры в исходном состоянии. Выберите вкладку Buttons (Кнопки), с помощью которой создаются кнопки панели инструментов.

7. Нажмите кнопку Insert Button (Вставить кнопку) для добавления новой кнопки на панель инструментов. Эту кнопку будем использовать для вызова нового дочернего окна формы, то есть как аналог команды Новая форма меню Файл родительского окна.

Рис. 7.13. Диалоговое окно Property Pages

8. В полях, управляющих свойствами кнопок, задайте следующие значения:

  • в поле Caption (Надпись) введите Новая. Данный текст появится на кнопке;
  • в поле Key (Ключ) введите идентификатор кнопки для использования в программном коде ToolsNewForm;
  • в поле ToolTipText (Подсказка) введите текст Открыть новое дочернее окно, который будет появляться в виде подсказки под курсором при его установке на кнопку;
  • в поле Style (Стиль) оставьте значение 0-tbrDefault, определяющее обычную кнопку. Размер кнопки будет адекватен введенному тексту в поле Caption и изменению недоступен. Заметим, что удалять кнопки можно при помощи кнопки Remove Button (Исключить кнопку).

9. Запрограммируем действие, выполняемое при нажатии новой кнопки. Для вызова редактора кода дважды щелкните мышью на панели tbrTools. При этом будет автоматически использован шаблон для действия, выполняемого при нажатии на кнопку панели инструментов. Введите следующий программный код:

Private Sub tbrTools_ButtonClick (ByVal Button As MSComctlLib. Button)

Select Case Button.Key

Case Is = "ToolsNewForm"

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " +

Str(frmCount)

frmNewForm.Show

End Select

End Sub

Замечание

Несмотря на то, что кнопка на панели инструментов всего одна, в коде применена конструкция Select Case для отработки действий других добавляемых на панель кнопок.

На рис. 7.14 показано приложение, содержащее панель инструментов с одной кнопкой.

Рис. 7.14. Пример приложения с использованием панели инструментов

Вместо текста на кнопке можно разместить графическое изображение, как это обычно и делается для экономии места. Для этого необходимо сначала создать файл графического изображения, а затем подключить его к кнопке панели. В качестве объекта для хранения списка графических изображений можно использовать элемент управления imageList. Создадим такой список в нашем приложении. Данный элемент управления находится в той же библиотеке, что и панель инструментов, поэтому дополнительного подключения библиотек не потребуется. Для размещения в форме элемента управления imageList выполните следующие действия:

1. Разместите в родительской форме объект imageList, дважды щелкнув мышью кнопку ImageList (Я на панели элементов управления.

2. В окне свойств задайте имя созданного объекта imlimageListTools.

3. Выделите объект, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Откроется диалоговое окно Property Pages (Страницы свойств), с помощью которого создадим список графических изображений (рис. 7.15).

4. Выберите вкладку Images (Изображения).

Рис. 7.15. Диалоговое окно Property Pages объекта ImageList

5. Для идентификации списка изображений введите в поле Key (Ключ) имя списка imITools.

6. Чтобы добавить в список графическое изображение, нажмите кнопку Insert Picture (Вставить изображение). Откроется диалоговое окно поиска графических файлов. Выберите требуемый файл и нажмите кнопку Открыть. Графическое изображение добавляется в список. Для добавления следующего элемента списка опять нажмите кнопку Insert Picture. Завершив формирование всего списка графических изображений, нажмите кнопку ОК для закрытия диалогового окна Property Pages.

Замечание

Для создания панели инструментов в своем приложении мы воспользуемся графическими файлами New.bmp и Open.bmp из каталога \Visual Basic \Common\Grafics\Bitmaps\OffCtrlBr\Small\Color.

7. Список изображений готов. Для подключения созданного списка изображений к панели необходимо вызвать окно свойств панели и на вкладке General (Общие) выбрать наименование созданного графического списка в открывающемся списке ImageList (Список изображений).

Для размещения графического изображения на кнопке панели инструментов выполните следующие действия:

1. Откройте диалоговое окно Property Pages (Страница свойств) для проектируемой панели.

2. На вкладке General (Общие) выберите из списка ImageList наименование

созданного нами списка изображений imlImageListTools.

3. Перейдите на вкладку Buttons (Кнопки).

4. Установите в поле Index (Индекс) значение 1, указывая, что выбирается первая кнопка.

5. Установите в поле Image (Изображение) значение 1, указывая, что выбирается первое изображение из списка. На кнопке после этого появляется требуемое изображение. При этом размеры кнопки автоматически устанавливаются в соответствии с размером изображения.

Приложение, содержащее на панели инструментов графическую кнопку, показано на рис. 7.16.

Рис. 7.16. Панель инструментов приложения содержит графическую кнопку

Совет

Для создания интервалов между кнопками используются кнопки, для которых свойство Style установлено в значение tbrSeparator.

Элемент управления CoolBar

С помощью элемента управления coolBar можно создавать в приложении улучшенные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls-3 6.0, воспользовавшись диалоговым окном Components (Компоненты), открываемым при выборе команды Components (Компоненты) меню Project (Проект).

В отличие от объекта ToolBar, элемент управления CoolBar более универсален и кроме кнопок может содержать другие элементы управления, в том числе и панели типа ToolBar. Усовершенствованная панель представляет собой контейнер, причем он состоит из маленьких контейнеров Band (Полоса), которые являются объектами и непосредственно включают в себя все элементы управления, вводимые в CoolBar.

Для создания в проекте панели инструментов типа CoolBar выполните следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls-3 6.0, в которой содержится элемент управления CoolBar.

2. Добавьте в родительскую форму объект coolBar, дважды щелкнув мышью кнопку CooiBar на панели элементов управления.

3. Присвойте новой панели инструментов имя cbrTools.

4. Выделите объект CoolBar, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Открывается диалоговое окно Property Pages (рис. 7.17), предназначенное для создания панели типа CoolBar.

5. Используя кнопку Insert Band (Вставить полосу), добавьте на панель инструментов еще несколько объектов Band.

Рис. 7.17. Диалоговое окно Property Pages для объекта CooiBar

Теперь новую панель можно настраивать, добавляя на нее необходимые объекты или удаляя их. Добавим, например, кнопку управления для вызова дочернего окна. Для этого выполните следующие действия:

1. Используя кнопку CommandButton на панели элементов управления, разместите на создаваемой панели инструментов CoolBar кнопку управления.

2. Скорректируйте в окне Properties (Свойства) для созданной командной кнопки следующие свойства:

  • в правый столбец свойства Name введите наименование объекта cbNewCoolBar,
  • в свойство Caption введите текст Новая, который будет размещен на кнопке;
  • в свойство Height кнопки введите значение 300;
  • для свойства тор задайте значение 25.

3. Для создания кода, выполняемого при нажатии новой кнопки на панели инструментов, в окне редактора кода введите следующие команды, осуществляющие вызов дочерней формы:

Private Sub cbNewCoolBar_Click ()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

4. Запустите приложение на выполнение. Работающее приложение с панелью инструментов типа CoolBar показано на рис. 7.18.

Рис. 7.18. Приложение с панелью инструментов типа CooiBar

Диалоговые окна

В Visual Basic 6 существует специальный вид окон — диалоговые. В распоряжении разработчика имеется хорошо развитый инструментарий для их создания. Диалоговые окна бывают двух типов — модальные и немодальные. Модальное диалоговое окно — это окно, из которого нельзя перейти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Примером такого диалогового окна в программе Visual Basic является окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно — это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немодального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации.

Простейшие из диалоговых окон — это окна сообщений и окна, предназначенные для ввода информации. В дополнение к ним в Visual Basic 6 существует набор более сложных стандартных диалоговых окон для приложений:

  • Open (Открыть) — диалоговое окно для поиска в файловой структуре нужного файла;
  • Save As (Сохранить как) — для поиска места хранения файла и ввода его имени;
  • Font (Шрифт) — для выбора и установки шрифта;
  • Color (Цвет) — для выбора цветовой палитры;
  • Print (Печать) — для настройки режима печати;
  • Help (Справка) — для работы со справочной системой приложения. Рассмотрим эти диалоговые окна более подробно.

Окно сообщения (MsgBox)

Диалоговое окно сообщения (рис. 7.19) не требует проектирования и вызы вается из программы командой MsgBox или с помощью аналогичной функции MsgBox о, имеющей следующий синтаксис:

MsgBox (prompt[, buttons] [, title] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • buttons — числовое выражение, которое задает параметры для кнопок управления и значков в диалоговом окне и составлено из констант, указанных в табл. 7.8 и 7.9. Если значение не указано, то по умолчанию присваивается значение 0;
  • title — текст заголовка диалогового окна;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Необходимо иметь в виду, что для задания нескольких параметров кнопок и значков одновременно, следует просто сложить соответствующие константы.

Для примера введите в командном окне среды проектирования Immediate следующую команду и нажмите клавишу <Enter>:

MsgBox "Приветствуем Вас!", vbYesNo + vbExclamation,"Окно сообщений"

В ответ получите диалоговое окно, показанное на рис. 7.19.

Рис. 7.19. Диалоговое окно сообщения

Таблица 7.8. Константы параметров для значков диалогового окна сообщения
Значок | Константа | Значение | Тип сообщения
 | vbExclamation | 48 | Предупреждение
 | vbQuestion | 32 | Запрос
 | vbInformation | 64 | Информация
 | vbCritical | 16 | Ошибка

В диалоговых окнах сообщении можно управлять отображаемыми в окне сообщения кнопками и установкой фокуса на одной из кнопок при открытии окна. Для этого можно использовать константы, приведенные в табл. 7.9.

Таблица 7.9. Константы параметров наличия кнопок в окне сообщения и установки фокуса на кнопку
Константа | Значение | Набор кнопок в диалоговом окне
vbOkOnly | 0 | OK
vbOkCancel | 1 | OK, Отмена
vbAbortRetryIgnore | 2 | Стоп, Повтор, Пропустить
vbYesNoCancel | 3 | Да, Нет, Отмена
vbYesNo | 4 | Да,Нет
vbRetryCancel | 5 | Повтор, Отмена
vbDefaultButton1 | 0 | Устанавливает фокус на первой кнопке
vbDefaultButton2 | 256 | Устанавливает фокус на второй кнопке
vbDefaultButton3 | 512 | Устанавливает фокус на третьей кнопке
vbDefaultButton4 | 768 | Устанавливает фокус на четвертой кнопке
vbApplicationModal | 0 | Назначает модальность приложения. Диалоговое окно будет модальным, то есть требующим обязательного закрытия для перехода в другие окна
vbSystemModal | 4096 | Назначает модальность системы. Диалоговое окно будет модальным на уровне системы, то есть пока диалоговое окно не закрыто, в любое другое приложение перейти нельзя
vbMsgBoxHelpButton | 16384 | Добавляет в диалоговое окно кнопку Справка
VbMsgBoxSetForeground | 65536 | Объявляет диалоговое окно фоновым окном
vbMsgBoxRight | 524288 | Выравнивает текст в диалоговом окне по правому краю
vbMsgBoxRtIReading | 1 048 576 | Переворачивает текст для чтения справа налево

В зависимости от выбора кнопки диалоговое окно MsgBox возвращает одно из значений, заданных системными константами. Это необходимо для анализа нажатой кнопки и выполнения соответствующих действий в программе. В исходном коде для этого можно использовать константы, указанные в табл. 7.10.

Таблица 7.10. Значения констант, возвращаемые кнопками окна сообщения
Кнопка | Константа | Значение при нажатии на кнопку
ОК | vb0k | 1
Отмена | vbCancel | 2
Стоп | vbAbort | 3
Повтор | vbRetry | 4
Пропустить | vblgnore | 5
Да | vbYes | 6
Нет | vbNo | 7

Диалоговое окно ввода информации (InputBox)

Достаточно часто в диалоговом окне необходимо не только нажать кнопки выбора действия, но и ввести определенную информацию, которая затем анализируется программой. Для выполнения такого рода действий в Visual Basic можно использовать диалоговое окно ввода информации InputBox (рис. 7.20). Функция InputBox имеет следующий синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • title — текст заголовка диалогового окна;
  • default — значение текстового поля ввода по умолчанию. Если параметр отсутствует, строка остается пустой;
  • xpos — позиция по горизонтали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • ypos — позиция по вертикали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Для примера введите в командном окне среды проектирования Immediate следующую команду:

strUserTest = InputBox ("Введите пароль", "Запуск приложения", "****")

В результате получите диалоговое окно, показанное на рис. 7.20.

Рис. 7.20. Диалоговое окно ввода

В отличие от диалогового окна MsgBox, в окне InputBox всегда имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel — закрывает диалоговое окно без ввода данных.

Использование элемента управления CommonDialog для создания диалоговых окон

Все диалоговые окна, перечисленные в начале раздела "Диалоговые окна", можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подключить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования.

Для вызова диалоговых окон необходимо использовать соответствующие каждому из этих окон методы элемента управления commonDialog, указанные в табл. 7.11.

Таблица 7.11. Методы элемента управления CommonDialoq
Метод | Описание
ShowOpen | Вызывает диалоговое окно, используемое для открытия файла
ShowSave | Вызывает диалоговое окно, используемое для сохранения файла
ShowColor | Вызывает диалоговое окно настройки цветовой палитры
ShowFont | Вызывает диалоговое окно настройки шрифтов текста
ShowPrinter | Вызывает диалоговое окно настройки печати и диалоговое окно печати
ShowHelp | Подключает справочную систему в стиле Windows

Для изучения диалоговых окон, образуемых с помощью элемента управления CommonDialog, создадим небольшой проект. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в открывшемся диалоговом окне дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MySmallProject. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда примет вид MySmallProject Properties (Свойства MySmallProject).

3. Подключите к проекту библиотеку Microsoft Common Dialog Control 6.0. Для этого в меню Project (Проект) выберите команду Components, в открывшемся диалоговом окне Components (Компоненты) установите флажок, расположенный рядом с названием этой библиотеки, и нажмите кнопку ОК.

4. Задайте наименование формы проекта FormForControlCommDiaiog.

5. Используя свойство caption формы, введите заголовок окна Форма для проверки диалогов CommonDialog.

6. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления. Если эта панель отсутствует на экране, то в меню View (Вид) выберите команду TooIBox (Панель инструментов).

7. Присвойте элементу управления CommonDialog наименование cdMyDialog.

8. Добавьте в форму кнопку управления типа commandButton и назовите ее cbControl. Эта кнопка будет использоваться нами для вызова диалогового окна по событию click.

9. Используя свойство caption, введите название кнопки Проверка диалогов CommonDialog.

Полученное приложение представлено на рис. 7.21. Этот проект, содержащий элемент управления commonDialog, будем использовать для создания диалоговых окон и знакомства с ними, размещая в событии click кнопки cbControl код настройки параметров требуемого диалогового окна и вызова соответствующего ему метода.

Рис. 7.21. Проект MySmallProject для проверки диалоговых окон, создаваемых с помощью элемента управления CommonDialog

Диалоговое окно открытия файла

Диалоговое окно открытия файла предназначено для поиска файлов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла (рис. 7.22) необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.ShowOpen

End Sub

Рис. 7.22. Диалоговое окно открытия файла, созданное с помощью объекта CornmonDialog

Для ввода кода достаточно дважды щелкнуть на объекте cbcontroi левой кнопкой мыши. При этом открывается редактор кода с шаблоном кода для события click этой кнопки.

Значения для свойства cdlMyDialog. Flags указаны в табл. 7.12.

Таблица 7.12. Значения для метода Flags диалогового окна открытия файла
Константа | Значение | Описание
cdlOFNAllowMultiselect | &H200 | Устанавливает возможность множественного выбора файлов в диалоговом окне. Возвращаемые имена файлов находятся в свойстве FileName элемента управления CornmonDialog и разделены пробелами
cdlOFNCreatePrompt | &H2000 | Устанавливает для диалогового окна запрос на подтверждение создания нового файла, если он не существует
cdlOFNExplorer | &H80000 | Назначает диалоговому окну стиль проводника
cdlOFNExtensionDifferent | &H400 | Сообщает, что расширение файла отличается от установленного по умолчанию в свойстве DefaultExt
cdlOFNFileMustExist | &H1000 | Устанавливает возможность ввода в диалоговом окне только имен существующих файлов. При вводе несуществующего файла выдается сообщение об ошибке
cdlOFNHelpButton | &H10 | Указывает на необходимость размещения в диалоговом окне кнопки Справка
cdlOFNHideReadOnly | &H4 | Файлы только для чтения не отображаются
cdlOFNLongNames | &H200000 | Разрешает использование длинных имен файлов
cdlOFNNoChangeDi r | &H8 | " Назначает папку, открываемую по умолчанию при запуске диалогового окна
cdlOFNNoLongNames | &H40000 | Запрещает использование длинных имен файлов
cdlOFNNoReadOniyReturn | &H8000 | Указывает, что выводимые в диалоговом окне файлы не должны быть предназначены только для чтения и не находятся в каталоге, защищенном от записи (Write-protected)
cdlOFNNoValidate | &H100 | Сообщает о вводе недопустимых символов в имени файла
cdlOFNOverwritePrompt | &H2 | Устанавливает для диалогового окна запрос на подтверждение перезаписи существующего файла
cdlOFNPathMustExist | &H800 | Устанавливает требование указания полного пути к файлу
cdlOFNReadOnly CdlOFNShareAware | &H1 &H4000 | Задает проверку флажка Только чтение Задает игнорирование ошибки типа блокировки, занятости файла (Sharing violation errors)

Диалоговое окно сохранения файла

Для поиска файла, в котором будут сохранены данные из программы, используется диалоговое окно сохранения файла (рис. 7.23). Это диалоговое окно вызывается так же, как окно открытия файла. Для его создания в событии click кнопки cbControl приложения MySmallProject необходимо заменить код на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowSave

End Sub

Рис. 7.23. Диалоговое окно сохранения файла, созданное с помощью объекта CommonDialog

Как видно из рисунка, это диалоговое окно аналогично окну, предназначенному для открытия файла. Флаги этого диалогового окна перечислены в табл. 7.12.

Диалоговое окно настройки цветовой палитры

Для настройки цвета фона формы и расположенных в форме элементов можно использовать диалоговое окно настройки цветовой палитры (рис. 7.24). Для вызова этого диалогового окна необходимо заменить код в событии click кнопки cbcontrol приложения MySmallProject на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowColor

End Sub

Рис. 7.24. Диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog

Константы, используемые для настройки диалогового окна выбора цветовой палитры, перечислены в табл. 7.13. Расширенное диалоговое окно настройки цветовой палитры можно создать с помощью объекта CommonDialog (рис. 7.25).

Таблица 7.13. Значения для метода Flags диалогового окна цветовой палитры
Константа | Значение | Описание
cdlCCFullOpen | &H2 | Помещает в диалоговое окно дополнительную кнопку Добавить в набор и цветовое поле с маркером и линейкой назначения оттенка для добавления цветов в поля Дополнительные цвета диалогового окна цветовой палитры (рис. 7.25)
cdlCCShowHelp | &H8 | Добавляет в диалоговое окно кнопку Справка
cdlCCPreventFullOpen | &H4 | Скрывает кнопку Добавить в набор
cdlCCRGBInit | &H1 | Восстанавливает в диалоговом окне исходный набор цветов

Рис. 7.25. Расширенное диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog с флагомcdlCCFullOpen

Диалоговое окно настройки шрифтов текста

Для вызова диалогового окна настройки шрифтов (рис. 7.26) необходимо в событие click кнопки cbcontrol ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlCFBoth + cdlCFEffects

cdlMyDialog.ShowFont

End Sub

Рис. 7.26. Диалоговое окно настройки шрифта, открытое с использованием объекта CommonDialog

Флаги диалогового окна настройки шрифтов перечислены в табл. 7.14.

Таблица 7.14. Значения для метода Flags диалогового окна настройки шрифтов
Константа | Значение | Описание
cdlCFANSIOnly | &H400 | Назначает выбор только из системных наборов шрифтов Windows
cdlCFApply | &H200 | Добавляет в диалоговое окно кнопку Применить
cdlCFBoth | &H3 | Назначает использование экранных шрифтов принтера, указанного в свойстве hDC
CdlCFEffects | &H100 | Указывает на необходимость размещения в диалоговом окне элементов управления, задающих эффект подчеркивания, зачеркивания и цвета
cdlCFForceFontExis | it &H10000 | Назначает вывод предупреждения об ошибке при выборе несуществующего шрифта
cdlCFHelpButton | &H4 | Добавляет в диалоговое окно кнопку Справка
cdlCFLimitSize | &H2000 | Назначает выбор размеров шрифтов в интервале, указанном в свойствах Min и Мах
cdlCFNoFaceSel | &H80000 | Отключает выбор наименования шрифта
cdlCFNoSizeSel | &H1000 | Отключает выбор размера шрифта
cdlCFNoSimulations | &H200000 | Отключает в диалоговом окне графические шрифты
cdlCFNoStyleSel | &H100000 | Отключает выбор стиля шрифта
cdlCFNoVectorFonts | &H800 | Отключает выбор векторных шрифтов
cdlCFPrinterFonts | &H2 | Назначает выбор только шрифтов принтера, который указан в свойстве hDC
cdlCFScreenFonts | &H1 | Назначает выбор только экранных шрифтов системы
cdlCFTTOnly | &H40000 | Назначает только выбор шрифтов типа True Type
CdlCFWYSIWYG | &H8000 | Назначает выбор только тех шрифтов, которые подходят одновременно и для принтера, и для экрана. При этом должны дополнительно использоваться флаги cdlCFBoth и cdlCFScalableOnly

Диалоговое окно печати

Диалоговое окно печати можно вызвать с помощью элемента управления

commonDialog, заменив код в событии click кнопки с наименованием cbControl на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowPrinter

End Sub

Открытое диалоговое окно показано на рис. 7.27.

Если требуется предварительно настраивать печать, то необходимо установить для свойства Flags значение cdlPDPrintSetup. В этом случае код будет выглядеть следующим образом:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlPDPrintSetup

cdlMyDialog.ShowPrinter

End Sub

Запустив приложение MySmallProject, вы получите диалоговое окно, показанное на рис. 7.28.

Рис. 7.27. Диалоговое окно печати, открытое с использованием объекта CommonDialog

Рис. 7.28. Диалоговое окно настройки печати, созданное с помощью объекта CommonDialog

Допустимые флаги диалоговых окон печати и настройки печати перечислены в табл. 7.15.

Таблица 7.15. Значения для метода Flags диалогового окна печати
Константа | Значение | Описание
cdlPDAllPages | &НО | Возвращает или устанавливает состояние переключателя печати всех страниц
cdlPDDisablePrintToFile | &H80000 | Делает недоступным флажок диалогового окна Печать в файл
cdlPDHelpButton | &H800 | Добавляет в диалоговое окно кнопку Справка
cdlPDHidePrintToFile | &H100000 | Скрывает флажок диалогового окна Печать в файл
cdlPDNoPageNums | &H8 | Скрывает элементы управления в группе Печатать
cdlPDNoWarning | &H80 | Отменяет предупреждение об отсутствии принтера по умолчанию
cdlPDPageNums | &H2 | Делает недоступными элементы управления, расположенные в области Печатать
cdlPDPrintSetup | &H40 | Выводит диалоговое окно настройки печати перед диалогом печати
cdlPDPrintToFile | &H20 | Возвращает или устанавливает состояние флажка Печать в файл
cdlPDReturnDefault | &H400 | Возвращает имя принтера, используемое по умолчанию
cdlPDUseDevModeCopies | &H40000 | Если драйвер принтера не поддерживает создание копий, делает недоступным счетчик Число копий. Если копирование поддерживается, указывает, что номер копии хранится в свойстве Copies

Справочная система в стиле Windows

Флаги диалогового окна справочной системы перечислены в табл. 7.16. Для использования этого диалогового окна необходимо создать справочную систему для приложения (файл справки).

Таблица 7.16. Значения для метода Flags диалогового окна справочной системы
Константа | Значение | Описание
cdlHelpCommandHelp | &Н102 | Вызывает справочную систему отдельной командой
cdlHeIpContents | &НЗ | Вызывает содержание справочной системы
cdlHelpContext | &H1 | Вызывает отдельную тему справочной системы
cdlHelpContextPopup | &H8 | Вызывает тему справки по индексу
cdlHelpIndex | &H3 | Вызывает указатель справочной системы
cdlHelpKey | &H101 | Вызывает справочную систему по ключевому слову

Строка состояния

Строка состояния — это специальный элемент окна, состоящий из нескольких панелей для отображения текущей информации о состоянии и режиме работы приложения. На рис. 7.29 показана строка состояния, отображающая состояние приложения, дату и текущее системное время. Этот элемент интерфейса обычно размещается в нижней части родительского окна приложения, если не требуется специально установить его в другом месте окна. Такое положение строки состояния является стандартным.

Рис. 7.29. Строка состояния приложения

Для добавления строки состояния в форму используется элемент управления statusBar. Чтобы этот объект можно было использовать в приложении, необходимо в окне Components (Компоненты) подключить к выбранному проекту библиотеку Microsoft Window Common Control 6.0. После подключения библиотеки элемент управления StatusBar появляется на панели элементов управления среды проектирования и его можно добавить в форму стандартным способом, как и все другие элементы управления.

Строка состояния состоит из набора панелей, каждая из которых является объектом и имеет следующие основные свойства:

  • Alignment — задает выравнивание текста на панели строки состояния;
  • Bevel — устанавливает затенение для придания объемности панелям;
  • Minwidth — определяет минимальный размер панелей строки состояния;
  • picture — задает графическое изображение, которое будет помещено на панель;
  • Style — определяет тип панели. Может принимать значения, указанные в табл. 7.17;
  • Text — задает текст, размещаемый на панели. Как правило, этот текст формируется программно;
  • ToolTip — задает текст подсказки для панели. Выводится при задержке указателя мыши на панели.

Таблица 7.17. Значения свойства Style панелей строки состояния
Стиль | Значение | Описание
sbrText | 0 | Дает возможность отображать текст или изображение в свойствах панели Text и Picture, соответственно
sbrCaps | 1 | Отображает состояние клавиши <Caps Lock>. Если эта клавиша нажата, текст CAPS на панели яркий, если отжата — затененный
sbrNum | 2 | Отображает состояние клавиши <Num Lock>
sbrIns | 3 | Отображает состояние клавиши <lns>
sbrScrl | 4 | Отображает состояние клавиши <Scroll Lock>
sbrTime | 5 | Выводит текущее время
sbrDate | 6 | Выводит текущую дату

Настройка строки состояния и управление ею выполняется при помощи окна свойств Property Pages (Страница свойств) этого элемента управления, открываемого при выборе команды Properties (Свойства) контекстного меню объекта (рис. 7.30).

Рис. 7.30. Диалоговое окно Property Pages для строки состояния

Рассмотрим создание строки состояния на примере нашего приложения MyMDIApp. Откроите приложение и выполните следующие действия:

1. Добавьте в форму элемент управления StatusBar, дважды щелкнув мышью

гвг кнопку StatusBar на панели элементов управления.

2. После появления в форме строки состояния присвойте ей имя sbStatusBar.

3. Установите курсор на строку состояния, нажмите правую кнопку мыши и выберите из появившегося контекстного меню команду Properties (Свойства). Откроется диалоговое окно Property Pages для настройки строки состояния.

4. С помощью кнопки Insert Panel (Вставить панель), добавьте в строку состояния еще две панели.

Замечание

По умолчанию строка состояния содержит одну панель.

5. Используя счетчик Index (Индекс), перейдите к настройке панели 1. Панели строки состояния проектируются независимо друг от друга, переключение с одной на другую выполняется при помощи счетчика Index.

6. Первую панель будем использовать для отображения текстовой информации. Установите для нее свойство Style в значение 0 -sbrText, затем в свойство Text этой панели введите значение Текст подсказки.

7. Перейдите к настройке второй панели, установив для счетчика Index значение 2.

8. Вторая панель будет использоваться для отображения текущей даты. Установите для свойства style значение 0 -sbrDate.

Рис. 7.31. Работа приложения, содержащего строку состояния

9. Перейдите к настройке третьей панели, установив для счетчика Index значение 3.

10. Установите для свойства Style значение 0 -sbrCaps. Это будет панель, отображающая состояние клавиши <Caps Lock>.

11. Запустите полученное приложение на выполнение командой Start меню Run. Созданное приложение представлено на рис. 7.31.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 7. Разработка пользовательского интерфейса.

Интерфейс — это внешняя оболочка приложения вместе с программами управления доступом и другими скрытыми от пользователя механизмами управления, дающая возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами. Главная цель любого приложения — обеспечить максимальное удобство и эффективность работы с информацией: документами, базами данных, графикой или изображениями. Поэтому интерфейс является, пожалуй, самой важной частью любого приложения.

Хорошо разработанный интерфейс гарантирует удобство работы с приложением и, в конечном итоге, его коммерческий успех. В данной главе описаны виды интерфейсов и процесс создания интерфейса со всеми его основными элементами управления: меню, контекстным меню, панелями инструментов, строкой состояния.

Проектирование интерфейса — процесс циклический. На этом этапе разработки приложения желательно чаще общаться с пользователями и заказчиками приложения для выработки наиболее приемлемых по эффективности. удобству и внешнему виду интерфейсных решений.

Выбор того или иного типа интерфейса зависит от сложности разрабатываемого приложения, поскольку каждый из них имеет некоторые недостатки и ограничения и предназначен для решения определенных задач. При этом необходимо ответить на ряд вопросов: какое количество типов документов обрабатывается в приложении, имеют ли данные древовидную иерархию, потребуется ли панель инструментов, какое количество документов обраба-тывается за некоторый интервал времени (например, за день) и т. д. Toлько после этого можно выбирать конкретный тип интерфейса.

Рассмотрим возможные типы интерфейсов и их характерные особенности, влияющие на выбор интерфейсного решения приложения.

Общие советы по разработке интерфейса

При разработке интерфейса необходимо руководствоваться следующими принципами:

  • Стандартизация. Рекомендуется использовать стандартные, проверенные многими программистами и пользователями интерфейсные решения. Для Visual Basic это, разумеется, решения Microsoft. Причем в качестве стандарта (образца для "подражания") может служить любое из приложений — Word, Excel или другие приложения Microsoft. Под решениями подразумеваются дизайн форм, распределение элементов управления в формах, их взаимное расположение, значки на кнопках управления, названия команд меню.
  • Удобство и простота работы. Интерфейс должен быть интуитивно понятным. Желательно, чтобы все действия легко запоминались и не требовали утомительных процедур: выполнения дополнительных команд, лишних нажатий на кнопки, вызова промежуточных диалоговых окон.
  • Внешний дизайн. Нельзя, чтобы интерфейс утомлял зрение. Он должен быть рассчитан на длительную работу пользователя с приложением в течение дня.
  • Неперегруженность форм. Формы должны быть оптимально загружены элементами управления. При необходимости можно использовать вкладки или дополнительные страницы форм.
  • Группировка. Элементы управления в форме необходимо группировать по смыслу, используя элементы группировки: рамки, фреймы.
  • Разреженность объектов форм. Элементы управления следует располагать на некотором расстоянии, а не лепить друг на друга; для выделения элементов управления можно организовать пустые пространства в форме.

Здесь перечислены основные принципы, которые следует учитывать при проектировании интерфейса приложения, но они не являются догмой. Со временем в процессе работы с пользователями и накоплением практического опыта будут вырабатываться и свои оптимальные принципы построения интерфейса.

Типы интерфейсов

В настоящее время для приложений, разрабатываемых в среде Windows при помощи Visual Basic б, используется три типа интерфейса: однодокументный SDl (Single-Document Interface), многодокументный MDI (Multiple-Document Interface) и интерфейс типа проводник (Explorer).

Замечание

Под документом в этом случае нужно понимать форму, предназначенную для работы с данными, а не с конкретным документом.

В этой главе основное внимание будет уделено первым двум типам интерфейса, поскольку они наиболее часто применяются для разработки пользовательских приложений. Интерфейс типа проводника используется в приложениях не так часто, поэтому мы дадим только его краткое описание.

Однодокументный интерфейс — это тип интерфейса, в котором предоставляется возможность работы только с одним документом в одном окне. Примером может служить редактор Microsoft WordPad. Для работы с несколькими документами в таком интерфейсе необходимо многократно запускать приложение. Для каждого типа данных и документов требуется своя форма и, соответственно, свое приложение с интерфейсом типа SDI. В принципе, это тоже один из возможных вариантов, но он подходит только для работы с небольшим количеством форм документов. При загрузке большого количества SDI-приложений начинает переполняться оперативная память компьютера и приложения работают очень медленно. Каждый раз при запуске SDI-приложения в память загружаются одни и те же данные (меню, панель и элементы управления), выполняющие одинаковые действия, что приводит к неэффективной и медленной работе запускаемых приложений.

Однако полностью отказываться от интерфейса типа SDI не стоит, поскольку он вполне годится для работы с одним или двумя документами (например, для копирования из одного документа в другой). Есть и положительные стороны приложений такого типа интерфейса — они занимают меньше места на диске и в оперативной памяти, да и на их разработку уходит гораздо меньше времени, что также немаловажно.

Интерфейс типа MDI дает возможность работать в одном приложении с любым количеством открытых окон.

SDI-интерфейс

Интерфейс типа SDI показан на рис. 7.1. Он состоит из следующих элементов:

  • главного меню;
  • панели инструментов с элементами управления;
  • окна приложения для размещения элементов управления данными (в таком случае это окно с заголовком "Документ WordPad");
  • элементов управления для работы с данными. На рис. 7.1 это одно большое поле для работы с текстом;
  • строки состояния.

Рис. 7.1. Пример интерфейса типа SDI

Этот тип интерфейса подходит для приложений, созданных для работы с документом одного типа с небольшим количеством полей (иначе форма перегружается элементами управления и интерфейс становится сложным и неудобным).

MDI-интерфейс

Главная особенность MDI заключается в том, что для этого типа интерфейса можно многократно открывать форму одного вида документа для нескольких разных по содержанию документов. Примером интерфейса типа MDI может служить программа Microsoft Word (рис. 7.2).

Рис. 7.2. Пример интерфейса типа MDI

Для интерфейса такого типа характерно наличие одного главного окна (MDI-окно), которое обычно именуется родительским окном (на рис. 7.2 это окно с заголовком Microsoft Word), и необходимого для работы количества подчиненных (вложенных) окон, называемых дочерними (на рис. 7.2 это окна с заголовками Документ1, Документ2, Документ4). Количество открытых дочерних окон ограничено лишь возможностями компьютера.

Подчеркнем, что родительское окно для MDI-интерфейса может быть только одно, при этом оно является контейнером для всех дочерних окон. Это означает, что при минимизации родительского окна вместе с ним минимизируются и все дочерние окна.

В свою очередь, дочерние окна могут находиться только внутри родительского, то есть при раскрытии на весь экран дочерние окна раскрываются полностью только в границах родительского окна и не могут быть вынесены или перемещены за эти границы.

В состав интерфейса MDI входят следующие элементы:

  • главное меню;
  • панель инструментов с элементами управления;
  • главное окно приложения (MDI-окно);
  • дочерние окна;
  • элементы управления для работы с данными, расположенные в дочерних окнах (на рис. 7.2 это одно большое поле для работы с текстом своего документа в каждом из окон);
  • строка состояния.

Рассмотрим подробнее элементы интерфейса и технологию их создания при помощи инструментальных средств Visual Basic.

Родительское окно MDI-интерфейса

Для добавления родительской формы в проект можно выполнить одно из следующих действий:

  • в меню Project (Проект) выбрать команду Add MDI Form (Добавить MDI-форму);
  • в окне проводника нажать правую кнопку мыши и выбрать из контекстного меню команду Add, а затем значение MDI Form.

    Замечание

    При наличии MDI-формы в проекте эта команда недоступна.

MDI-форма показана на рис. 7.3.

Рис. 7.3. Форма родительского окна интерфейса типа MDI

Родительское и дочернее окна имеют набор основных свойств, описанных в табл. 7.1. Доступ к этим свойствам можно получить при помощи окна Properties (Свойства).

Таблица 7.1. Набор основных свойств родительских и дочерних окон
Свойство | Назначение
BackColor | Определяет цвет фона формы. Выбирается из предлагаемой палитры
BorderStyie | Определяет тип обрамления, а также управляет изменениями размеров формы. Дополнительно определяет наличие кнопок в строке заголовка окна
Caption | Задает текст, выводимый в заголовке формы
ControlBox | Определяет наличие в левом верхнем углу окна кнопки в виде значка, открывающей оконное меню
Font | Задает шрифт в окне
ForeColor | Задает цвет выводимого в окне текста. Рекомендуется использовать стандартные цвета как фона, так и текста
Height | Задает высоту формы. При конструировании автоматически модифицируется при изменении размеров при помощи мыши
Icon | Задает значок для формы
Left | Задает расстояние от формы до левого края экрана
MaxButton | Управляет наличием кнопки развертывания (максимизации) окна
MinButton | Управляет наличием кнопки свертывания (минимизации) окна
MDIChild | Управляет возможностью превращения окна типа MDI в дочернее. Принимает значения True или False. По умолчанию принимает значение False
Name | Задает уникальное имя формы для использования в программных модулях и тексте кода. При назначении имени рекомендуется использовать префикс frm или mdi
ScaleMode | Задает единицу измерения свойств Width, Height, Left и Top
ShowInTaskbar | Управляет отображением значка окна на панели задач системы Windows
Width | Определяет ширину формы
WindowState | Управляет состоянием формы при запуске и может принимать следующие значения: 0-Normal— нормальное состояние, 1-Mini-mized — минимизированное состояние и 2-Maximized — максимизированное состояние

Свойство BorderStyle определяет тип обрамления окна и может принимать значения, приведенные в табл. 7.2.

Таблица 7.2. Тип обрамления окна. задаваемый свойством BorderStyle
Значение свойства | Тип обрамления
0-Мопе | Отсутствует рамка окна. Изменение размеров и перемещение окна запрещено. Отсутствуют основные атрибуты окна: заголовок, меню, кнопки свертывания, развертывания и закрытия
1-Rxed Single | Окно с рамкой в виде одинарной линии и с фиксированными размерами. Изменение размеров окна с помощью мыши запрещено. Основные атрибуты заголовка формы, упомянутые выше, доступны для этого значения
2-Sizable | Окно имеет рамку, размеры которой можно изменить при помощи мыши. Разрешено также перемещение окна. Все атрибуты заголовка окна присутствуют. Это значение устанавливается по умолчанию при создании формы
3-Fixed Dialog | Окно имеет рамку, размеры которой изменить нельзя, при этом разрешено перемещение окна. В заголовке расположена только кнопка закрытия окна. Это значение свойства BorderStyle используется, в основном, для диалоговых окон
4-Fixed ToolWindow | Аналогично значению 3-Fixed Dialog. При этом заголовок уже и содержит только кнопку закрытия окна
5-Sizable ToolWindow | Аналогично значению 2-Sizable, однако кнопки свертывания и развертывания окна при этом недоступны

Свойство ScaleMode задает единицу измерения свойств width, Height, Left и Top и может принимать значения, описанные в табл. 7.3.

Таблица 7.3. Значения, принимаемые свойством ScaieMode
Значение | Единица измерения
0-User | Пользовательская
1-Twip | Твип. Является стандартной единицей измерения для Visual Basic и устанавливается по умолчанию при создании формы. В одном дюйме содержится 1440 твипов
2-Point | Точка. Необходимо иметь в виду, что в дюйме 72 точки
3-Pixel | Пиксел. Базовая аппаратная единица измерения. Определяет минимальный допустимый размер точки экрана или точки при выводе на принтер
4-Character | Символ
5-Inch | Дюйм
6-Milimeter | Миллиметр
7-Centimeter | Сантиметр

Свойства окон можно изменять в режиме проектирования. Кроме того, Visual Basic дает возможность изменять свойства окон из программы в ре-жиме выполнения.

Здесь следует заметить, что в отличие от дочернего, для родительского окна доступна только часть из перечисленных свойств. Например, недоступны свойства MaxButton, MinButton или controiBox, управляющие кнопками в заголовке окна.

В свою очередь, существуют свойства, характерные только для родительского окна. Это свойства AutoShowChildren И ScrollBars. Если свойство AutoShowChildren имеет значение True (это значение используется по умол чанию), то при загрузке родительского окна автоматически загружается дочернее окно. Свойство ScrollBars определяет наличие полос прокрутки в родительском окне для дочерних окон, выходящих за границы видимости. По умолчанию это свойство имеет значение True, разрешающее отображение полосы прокрутки.

В табл. 7.4 приведены основные события, которые чаще всего используются для форм. В процессе программирования вы познакомитесь с ними более подробно.

Таблица 7.4. События, используемые формами
Событие | Описание
Activate | Происходит в тот момент, когда форма становится активной. Связано с событиями Initialize, Load, GotFocus. При открытии формы сначала происходит событие initialize, затем Load, после этого непосредственно Activate и завершает процесс открытия событие GotFocus
Click | Происходит при щелчке кнопки мыши
DblClick | Двойной щелчок кнопки мыши
Deactivate | Событие, противоположное Activate. Происходит, когда форма становится неактивной
GotFocus | Происходит при установке фокуса на активизируемой форме
Initialize | Инициализация формы
KeyUp | Происходит при нажатии клавиши на клавиатуре
Load | Происходит при загрузке формы в память до ее появления на экране
MouseUp | Происходит при нажатии кнопки мыши
Resize | Происходит при изменении размеров формы
Unload | Противоположное событию Load. Происходит перед выгрузкой формы из памяти и удалением ее с экрана

При проектировании можно просмотреть список событий, связанных с формой, в окне редактора кода формы. Для этого необходимо выполнить команду Code (Код) меню View (Вид) или переместить указатель в поле конструирования формы и дважды щелкнуть кнопкой мыши. В верхней части окна редактора кода расположены два списка. Выберите из левого списка объектов текущую форму. При этом в правом списке будут расположены все события формы.

При программировании событий Visual Basic 6 сразу же при выборе события предоставляет готовую конструкцию (шаблон кода) для программирования действий по событию. Имя процедуры обработки события всегда связано с его именем. Например, для обработки события Load автоматически предоставляется такой шаблон:

Private Sub Form_Load()

... код процедуры обработки события

End Sub

Дочернее окно MDI-интерфейса

Дочернее окно (рис. 7.4) обладает всеми описанными в табл. 7.1 свойствами окон. Практически все они доступны при проектировании.

Рис. 7.4. Форма дочернего окна интерфейса типа MDI

Основные особенности дочерних окон:

  • дочерняя форма всегда располагается в границах родительской;
  • дочернюю форму нельзя переместить за границы родительской формы;
  • дочернее окно сворачивается только внутри родительского;
  • при разворачивании дочернее окно занимает все внутреннее пространство родительского окна.

Расположением дочерних окон в родительском окне можно управлять при помощи метода Arrange родительского окна и набора переменных, которые задают способы размещения дочерних окон (табл. 7.5).

Таблица 7.5. Значения констант для метода Arrange
Константа | Значение | Описание
vbCascade | 0 | Каскадное расположение дочерних форм, при этом каждая последующая сдвинута вниз и вправо примерно на ширину заголовка формы
vbTileVertical | 1 | Расположение в виде вертикальной мозаики, при этом дочерние формы имеют высоту родительской формы и такую ширину, чтобы разместиться по всей ширине родительского окна
vbTileHorizontal | 2 | Расположение в виде горизонтальной мозаики, при этом дочерние формы имеют ширину родительской формы и такую высоту, чтобы разместиться по всей высоте родительского окна
vbArrangeIcon | 3 | При минимизации окна располагаются на нижнем крае родительского окна

Для добавления дочерней формы в проект необходимо выполнить команду Add Form (Добавить форму) меню Project (Проект). В качестве дочерней формы можно использовать автоматически создаваемую при выборе нового проекта форму. При этом свойство MDIchild следует установить в значение True.

Для исследования характеристик и взаимодействия родительского и дочернего окон создадим небольшое приложение. Для этого выполните следующие действия:

1. Создайте новый проект. Для этого в меню File (Файл) выберите команду New Project (Создать проект) и дважды щелкните на значке Standard ЕХЕ.

2. Откройте окно свойств проекта, выбрав команду ProjectName Properties в меню Project.

3. В поле Project Name введите имя проекта MyMDIApp и нажмите кнопку ОК для закрытия диалогового окна.

4. Чтобы автоматически использовать созданную форму проекта в качестве дочерней, откройте окно свойств, вызвав его командой Properties Window (Окно свойств) в меню View (Вид), и установите для свойства MDichild значение True.

5. Используя свойство Name, введите имя формы frmChildMDI.

6. В поле свойства caption введите заголовок окна Дочернее окно MDI.

7. Добавьте в проект MDI-форму, выполнив команду Add MDI Form (Добавить MDI-форму) меню Project (Проект).

8. Воспользовавшись свойством Name, введите имя формы mdiParentMDI.

9. Используя свойство Caption, введите заголовок окна Родительское окно MDI

10. Для демонстрации некоторых действий нам понадобится простое меню. Создадим его по шагам (редактор меню описан в разделе "Меню" данной главы).

  • Выберите родительское окно.
  • Вызовите редактор меню командой Menu Editor (Редактор меню) из меню Tools (Сервис).
  • В поле Name (Имя) введите имя тли file.
  • В поле Caption (Заголовок) введите заголовок меню Файл.
  • Теперь создайте пункт этого меню. Нажмите кнопку Next (Следующий) и кнопку с направленной вправо стрелкой. В поле Name введите имя меню mnufileNewForm, а в поле Caption его заголовок Новая форма.

Небольшое приложение готово к работе. Для проверки запустите его при помощи команды Start (Запустить) меню Run (Запуск). Остановка приложения выполняется командой End (Остановить) того же меню.

11. Запрограммируем вызов нескольких дочерних форм. Для этого выделите родительскую форму в конструкторе форм и дважды щелкните левой кнопкой мыши для вызова редактора кода родительского окна.

12. В списке объектов (левый раскрывающийся список) выберите пункт меню mnuFileNewForm, в левом списке событий выберите событие click и напишите для него следующий код :

Private Sub nmuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmNewForm.Show

End Sub

В тексте кода мы объявили объектную переменную frmNewForm для ссылки на вновь созданный экземпляр окна. Затем с помощью метода show новый экземпляр визуализируется в родительском окне. Для вычисления номера дочернего окна используется переменная frmCount. Этот код выполняется при выборе команды Новая форма из меню Файл родительского окна.

13. При помощи этого простого приложения можно проверить все основные характеристики родительского и дочернего MDI-окон. Для проверки возможностей упорядочения дочерних окон в родительском окне (свойство Arrange) добавим в меню пункт Окно и команду меню, выполняющую упорядочение. Для этого откройте редактор меню и добавьте пункт Окно и необходимую команду. Присвойте пункту меню имя mnuwindow, а команде, предназначенной для расположения окон каскадом, имя mnuwindowTileVertical. Программный код должен выглядеть следующим образом:

Private Sub mnuwindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Ниже приведен полный текст кода созданного нами простого приложения:

Dim frmCount As Integer

Private Sub MDIForm_Load()

frmChildMDI.Caption = "Дочерняя форма 1"

frmCount = 1

End Sub

Private Sub mnuFileNewForm Click()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

Private Sub mnuWindowTileVertical Click()

mdiParentMDI.Arrange vbTileVertical

End Sub

Работающее приложение с упорядоченными окнами представлено на рис. 7.5.

Рис. 7.5. Работа простого приложения в стиле интерфейса MDI

Аналогично можно запрограммировать другие способы упорядочивания дочерних окон в родительском.

Интерфейс типа проводник

Интерфейс типа проводник разрабатывается для доступа к иерархическим древовидным структурам, то есть к таким, где встречается вложенность. Примером вложенности могут служить папки и файлы. Файлы лежат в папках, которые в свою очередь лежат в вышестоящих папках и так далее. Примером такого интерфейса является проводник Windows (рис. 7.6). На рисунке наглядно видна структура хранения папок и файлов, образующая иерархическое дерево. По своей сути это аналог интерфейса SDI, разработанный специально для древовидных структур.

Интерфейс приложения типа проводник содержит следующие элементы:

  • главное меню;
  • окно приложения для размещения элементов управления данными (в нашем случае это окно с заголовком "Проводник — Microsoft Visual Studio");
  • иерархический список элементов древовидной структуры. Это могут быть папки и файлы, документы, если они организованы в иерархическую структуру;
  • элементы управления для работы с данными: кнопки, поля, флажки и т. п.;
  • строка состояния.

Рис. 7.6. Интерфейс типа проводник (Explorer)

Элементы интерфейса

Рассмотрим подробнее основные элементы интерфейса и возможности их использования в приложениях Visual Basic 6.

Меню

Любое приложение создается для реализации комплекса функций, обеспечивающих выполнение общей задачи приложения. Для быстрого доступа ко всем функциям приложения используется меню: главное меню приложения и контекстное меню отдельных объектов приложения (форм, панелей).

При проектировании меню следует руководствоваться определенными принципами. Главный из них — стандарты. Рекомендуется придерживаться стандартных названий команд меню и их расположения: например, пункт меню для работы с файлами рекомендуется называть в своих приложениях File (Файл), а пункт меню для вызова справочной системы приложения — Help (Справка). При этом пункт меню File желательно располагать самым первым, а пункт Help — последним. На этот стандарт для всех приложений Windows, к которому привыкли многие миллионы пользователей, можно вполне положиться. Приложение будет при этом более понятным пользователю.

В процессе разработки меню желательно группировать команды меню, реализующие функции для решения конкретной задачи (например, работа с файлами), в одно раскрывающееся меню, которое будет соответствовать пункту меню. Например, все команды, реализующие функции работы с файлами, желательно сгруппировать в одно раскрывающееся меню, связанное с пунктом меню File.

В приложениях каждой команде меню, как правило, соответствует "горячая" клавиша (клавиша быстрого доступа). Рекомендуется по возможности использовать стандартные клавиши, например, как в Microsoft Word. В принципе, это приложение может служить стандартным образцом для создания собственных приложений при разработке не только меню, но и всех других элементов.

Как и любой другой объект приложения, меню имеет набор свойств. Свойства меню доступны для редактирования в окне Properties (Свойства) формы, которой принадлежит меню (рис. 7.7).

Рис. 7.7. Свойства меню

Основные свойства меню приведены в табл. 7.6.

Таблица 7.6. Основные свойства меню
Свойство | Назначение
Name | Наименование (имя) меню. Должно быть уникальным, так как позволяет идентифицировать меню. Желательно пользоваться стандартным присвоением имени, то есть имя должно начинаться с букв mnu
Caption | Текст, отображаемый в пункте меню. Если в этом тексте перед одной из букв поместить символ "&", то буква в пункте меню будет подчеркнута и клавиша этой буквы будет назначена "горячей" клавишей для быстрого доступа к данному пункту меню
Checked | Если это свойство имеет значение True, при работе приложения слева от наименования выбранного пункта меню появляется галочка
Enabled | Свойство, определяющее возможность выполнения команды (пункта) меню. В зависимости от контекста объекта команды запрещаются или разрешаются
HelpContextID | Идентификатор справочной системы, соответствующий справке об этом меню
Index | Идентификатор пункта меню в массиве элементов управления приложения
NegotiatePosition | Определяет положение меню на экране
Shortcut | Комбинация клавиш для быстрого выполнения пункта меню
Visible | Определяет видимость на экране пункта меню. При работе приложения с помощью этого свойства пункты меню можно динамически прятать или показывать
WindowList | Назначает свойство формирования динамического списка окон. При установке этого свойства в меню будет добавляться список окон по мере их запуска при работе приложения. Это свойство обычно используется для пункта меню самого верхнего уровня и для родительского окна приложений с интерфейсом типа MDI

Редактор меню Menu Editor

Для проектирования меню всех видов используется редактор меню Menu Editor (Редактор меню) среды проектирования IDE (рис. 7.8). Редактор меню вызывается одним из следующих способов:

  • командой Menu Editor (Редактор меню) меню Tools (Инструменты);
  • нажатием кнопки Menu Editor на стандартной панели инструментов;
  • нажатием комбинации клавиш <Ctrl>+<E>.

Редактор создает меню для активного в данный момент окна, то есть, если активно MDI-OKHO, проектируется меню для него, если активна дочерняя форма, проектируется меню для дочерней формы. На рис. 7.8 показан редактор меню родительского окна, созданного автоматически мастером приложения Application Wizard.

Редактор меню состоит из двух групп: элементов управления свойствами и элементов конструирования структуры меню. Управлять основными свойствами меню, о которых было сказано выше, можно с помощью следующих элементов редактора меню:

  • поле Caption (Заголовок) — наименование пункта меню, то есть текст, появляющийся в меню;
  • поле Name (Имя) — имя меню. Используется для идентификации объекта при написании программных кодов;
  • раскрывающийся список Shortcut (Оперативная клавиша) — назначает комбинацию клавиш для быстрого вызова команды меню;
  • поле HelpContextID (Идентификатор справки) — ссылка на тему в справочной системе;
  • флажок Enabled (Доступно) — доступ к пункту меню;
  • флажок Visible (Видимость) — определяет, будет ли виден на экране элемент меню;
  • флажок WindowList (Список окон) — определяет наличие списка открытых окон.

Рис. 7.8. Окно редактора меню Menu Editor

Элементы группы конструирования структуры меню позволяют добавлять и удалять новые пункты меню, перемещать пункты по вертикали, меняя порядок их следования, и по горизонтали, меняя расположение пунктов в иерархии системы меню:

  • кнопки с направленными вправо и влево стрелками перемещают пункты или команды меню в иерархии меню;
  • кнопки с направленными вверх и вниз стрелками перемещают пункты или команды меню по структуре меню;
  • Next (Следующий) — перемещает указатель к следующему пункту меню. Если указатель находится на последнем пункте меню, то создается новый пункт меню или новая команда меню такого же уровня иерархии;
  • Insert (Вставить) — добавляет пункт меню или команду в пункт меню;
  • Delete (Удалить) — удаляет пункт меню или команду из пункта меню.

Для добавления пункта меню выполните следующие шаги:

1. Выберите место в имеющейся структуре меню.

2. Добавьте пункт меню, нажав кнопку Insert (Вставить).

3. В поле Caption (Заголовок) введите название пункта меню, которое будет отображаться в строке меню при запуске приложения на выполнение.

4. В поле Name (Имя) введите имя пункта меню, по которому он иденти фицируется в программном коде.

Контекстное меню

Для приложения любого типа можно использовать удобное средство быстрого доступа к функциям — контекстное меню. Контекстное меню связано с некоторым действием (обычно это щелчок правой кнопки мыши на объекте) и вызывается в любом месте приложения. В исходном состоянии контекстное меню невидимо и визуализируется рядом с указателем мыши после вызова. Контекстным такое меню называется потому, что оно появляется рядом с выбранным объектом, и его состав зависит от содержания (контекста) этого объекта. После выбора команды из контекстного меню оно исчезает.

Проектируется контекстное меню как один из пунктов верхнего уровня строки меню. Поскольку меню должно быть скрыто и вызываться определенным действием, свойство visible проектируемого пункта меню необходимо установить в значение False.

Для визуализации контекстного меню на экране необходимо использовать метод popUpMenu формы. Например, для вызова меню File (Файл) при нажатии правой кнопки мыши достаточно написать такую условную конструкцию для события MouseUp формы:

If Button = vbRightButton

Then Form1.PopUpMenu mnuFile

End If

В этом примере при выполнении в форме события MouseUp (Нажатие на кнопку мыши) проверяется, какая кнопка нажата. В данном случае, при помощи внутренней константы Visual Basic 6 vbRightButton (Правая кнопка) проверяется нажатие на правую кнопку мыши и запускается метод PopUpMenu. В качестве параметра задается имя требуемого контекстного меню.

Панели инструментов

В дополнение к строке состояния и контекстному меню, в настоящее время большой популярностью пользуются панели инструментов, позволяющие ускорить доступ к функциям приложения. Обычно панель инструментов содержит наиболее часто используемые команды строки меню или контекстных меню. При разработке приложении можно применять панели двух видов: обычную панель ToolBar (рис. 7.9) и улучшенную панель CoolBar (рис. 7.10).

Рис. 7.9. Обычная панель инструментов

Рис. 7.10. Улучшенная панель инструментов

Для проектирования панелей инструментов в Visual Basic 6 используются:

  • мастер панелей инструментов, входящий в состав мастера приложений;
  • элемент управления ToolBar для создания обычной панели инструментов;
  • элемент управления CoolBar для создания улучшенной панели инструментов.

Мастер панелей инструментов Toolbar Wizard

Для проектирования панелей инструментов в программе Visual Basic можно использовать мастер панелей инструментов, работающий в составе мастера приложений VB Application Wizard.

Замечание

Запуск и работу данного мастера мы рассмотрели в главе 2.

Диалоговое окно мастера показано на рис. 7.11. В верхней части окна мастера расположена предлагаемая по умолчанию панель инструментов, ниже расположены два списка. Левый список содержит набор кнопок, который может быть добавлен на панель инструментов. Правый список отображает набор кнопок, уже размещенных на панели инструментов.

Для добавления кнопки на панель инструментов необходимо выбрать в левом списке требуемую кнопку и перенести ее в правый список, выполнив одно из следующих действий:

  • дважды щелкнуть мышью;
  • нажать расположенную между списками кнопку с изображением направленной вправо стрелкой;
  • использовать механизм перенести-и-оставить, то есть нажать кнопку мыши и, удерживая ее нажатой, перенести кнопку в правый список, после чего отпустить кнопку мыши.

Рис. 7.11. Окно мастера проектирования панелей инструментов

При выполнении любого из этих действий требуемая кнопка перемещается в правый список и одновременно добавляется на панель инструментов.

Чтобы отредактировать наименование или изменить значок кнопки, располагаемой на панели инструментов в верхней части окна мастера, нажмите данную кнопку. Откроется диалоговое окно Button Attributes (Атрибуты кнопки) (рис. 7.12), в котором можно изменить требуемые параметры. Для изменения значка нажмите кнопку Change Bitmap и с помощью открывшегося диалогового окна выберите графический файл для изображения, размещаемого на кнопке.

Рис. 7.12. Диалоговое окно Button Attributes

Кнопка Reset (Сброс) возвращает панель инструментов в исходное состояние, устанавливаемое мастером по умолчанию. Изменить последовательность кнопок на панели инструментов можно кнопками перемещения позиций в списке. Следует иметь в виду, что кнопки перемещения позиций управляют только правым списком.

Используя кнопку Load an External Bitmap or Icon можно добавить на панель инструментов свою кнопку. Пользовательская кнопка размещается в правом списке и на панели инструментов.

Элемент управления ToolBar

Элемент управления ToolBar предоставляет возможность применять в приложении обычные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls 6.0, выбрав команду Components (Компоненты) меню Project (Проект). В открывшемся при выполнении этой команды окне Components необходимо найти в списке указанную библиотеку, установить располагаемый с левой стороны флажок и нажать кнопку ОК. После подключения этой библиотеки элемент управления TooiBar появится на панели элементов управления.

Панель инструментов ToolBar является контейнером и может содержать следующие элементы управления:

  • кнопку PushButton, работающую как обычная кнопка формы;
  • кнопку-флажок CheckButton, которая работает как флажок и может находиться в состояниях нажато/отжато;
  • группу кнопок-переключателей ButtonGroup, работающих как аналог переключателя в форме, то есть нажата может быть только одна кнопка из группы;
  • кнопку-разделитель Separator, используемую для создания интервалов между кнопками;
  • кнопку-заменитель Placeholder, служащую для резервирования места на панели для других типов элементов управления, таких как раскрывающийся список ComboBox, список ListBox, переключатель OptionBox, текстовое поле TextBox;
  • кнопку раскрывающегося списка DropDown, работающую аналогично раскрывающемуся списку формы.

Управлять панелью можно при помощи основных свойств, описанных в табл. 7.7.

Таблица 7.7. Основные свойства панели инструментов
Свойство | Назначение
AllowCustomize | Позволяет настраивать панель инструментов при работе приложения, то есть добавлять, удалять, перемещать кнопки панели
BorderStyle | Задает тип обрамления панели
ButtonHeight | Задает высоту кнопок панели, при этом автоматически вычисляется высота самой панели
ButtonWidth | Задает ширину кнопок панели
Enabled | Управляет доступом к выполнению действий на панели инструментов
ShowTips | Устанавливает режим отображения подсказки для кнопок панели инструментов
Visible | Задает видимость панели инструментов
Wrappable | Устанавливает режим автоматического переноса кнопок на другой ряд при недостатке места

Возможности настройки панели инструментов рассмотрим на примере. Для этого сконструируем небольшую панель инструментов в приложении MyMDIApp, созданном для проверки свойств интерфейса в стиле MD1. Выполните для этого следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls 6.0, в которой содержится элемент управления ToolBar, воспользовавшись диалоговым окном Components (Компоненты).

2. Добавьте в родительскую форму объект ToolBar, дважды щелкнув мышью кнопку ToolBar на панели элементов управления.

3. Откройте окно свойств, выбрав команду Properties Window (Окно свойств) в меню View (Вид) при выделенной в форме панели инструментов.

4. Используя свойство Name, присвойте панели имя tbrTools.

5. Панель инструментов создана, теперь необходимо разместить на ней кнопки. Для этого вызовем окно проектирования панели, нажав на ней правую кнопку мыши и выбрав в появившемся контекстном меню команду Properties (Свойства).

6. В открывшемся диалоговом окне Property Pages (рис. 7.13) по умолчанию выбрана вкладка General (Основная), позволяющая установить основные свойства панели. Оставим параметры в исходном состоянии. Выберите вкладку Buttons (Кнопки), с помощью которой создаются кнопки панели инструментов.

7. Нажмите кнопку Insert Button (Вставить кнопку) для добавления новой кнопки на панель инструментов. Эту кнопку будем использовать для вызова нового дочернего окна формы, то есть как аналог команды Новая форма меню Файл родительского окна.

Рис. 7.13. Диалоговое окно Property Pages

8. В полях, управляющих свойствами кнопок, задайте следующие значения:

  • в поле Caption (Надпись) введите Новая. Данный текст появится на кнопке;
  • в поле Key (Ключ) введите идентификатор кнопки для использования в программном коде ToolsNewForm;
  • в поле ToolTipText (Подсказка) введите текст Открыть новое дочернее окно, который будет появляться в виде подсказки под курсором при его установке на кнопку;
  • в поле Style (Стиль) оставьте значение 0-tbrDefault, определяющее обычную кнопку. Размер кнопки будет адекватен введенному тексту в поле Caption и изменению недоступен. Заметим, что удалять кнопки можно при помощи кнопки Remove Button (Исключить кнопку).

9. Запрограммируем действие, выполняемое при нажатии новой кнопки. Для вызова редактора кода дважды щелкните мышью на панели tbrTools. При этом будет автоматически использован шаблон для действия, выполняемого при нажатии на кнопку панели инструментов. Введите следующий программный код:

Private Sub tbrTools_ButtonClick (ByVal Button As MSComctlLib. Button)

Select Case Button.Key

Case Is = "ToolsNewForm"

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " +

Str(frmCount)

frmNewForm.Show

End Select

End Sub

Замечание

Несмотря на то, что кнопка на панели инструментов всего одна, в коде применена конструкция Select Case для отработки действий других добавляемых на панель кнопок.

На рис. 7.14 показано приложение, содержащее панель инструментов с одной кнопкой.

Рис. 7.14. Пример приложения с использованием панели инструментов

Вместо текста на кнопке можно разместить графическое изображение, как это обычно и делается для экономии места. Для этого необходимо сначала создать файл графического изображения, а затем подключить его к кнопке панели. В качестве объекта для хранения списка графических изображений можно использовать элемент управления imageList. Создадим такой список в нашем приложении. Данный элемент управления находится в той же библиотеке, что и панель инструментов, поэтому дополнительного подключения библиотек не потребуется. Для размещения в форме элемента управления imageList выполните следующие действия:

1. Разместите в родительской форме объект imageList, дважды щелкнув мышью кнопку ImageList (Я на панели элементов управления.

2. В окне свойств задайте имя созданного объекта imlimageListTools.

3. Выделите объект, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Откроется диалоговое окно Property Pages (Страницы свойств), с помощью которого создадим список графических изображений (рис. 7.15).

4. Выберите вкладку Images (Изображения).

Рис. 7.15. Диалоговое окно Property Pages объекта ImageList

5. Для идентификации списка изображений введите в поле Key (Ключ) имя списка imITools.

6. Чтобы добавить в список графическое изображение, нажмите кнопку Insert Picture (Вставить изображение). Откроется диалоговое окно поиска графических файлов. Выберите требуемый файл и нажмите кнопку Открыть. Графическое изображение добавляется в список. Для добавления следующего элемента списка опять нажмите кнопку Insert Picture. Завершив формирование всего списка графических изображений, нажмите кнопку ОК для закрытия диалогового окна Property Pages.

Замечание

Для создания панели инструментов в своем приложении мы воспользуемся графическими файлами New.bmp и Open.bmp из каталога \Visual Basic \Common\Grafics\Bitmaps\OffCtrlBr\Small\Color.

7. Список изображений готов. Для подключения созданного списка изображений к панели необходимо вызвать окно свойств панели и на вкладке General (Общие) выбрать наименование созданного графического списка в открывающемся списке ImageList (Список изображений).

Для размещения графического изображения на кнопке панели инструментов выполните следующие действия:

1. Откройте диалоговое окно Property Pages (Страница свойств) для проектируемой панели.

2. На вкладке General (Общие) выберите из списка ImageList наименование

созданного нами списка изображений imlImageListTools.

3. Перейдите на вкладку Buttons (Кнопки).

4. Установите в поле Index (Индекс) значение 1, указывая, что выбирается первая кнопка.

5. Установите в поле Image (Изображение) значение 1, указывая, что выбирается первое изображение из списка. На кнопке после этого появляется требуемое изображение. При этом размеры кнопки автоматически устанавливаются в соответствии с размером изображения.

Приложение, содержащее на панели инструментов графическую кнопку, показано на рис. 7.16.

Рис. 7.16. Панель инструментов приложения содержит графическую кнопку

Совет

Для создания интервалов между кнопками используются кнопки, для которых свойство Style установлено в значение tbrSeparator.


Гл 7.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления CoolBar

С помощью элемента управления coolBar можно создавать в приложении улучшенные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls-3 6.0, воспользовавшись диалоговым окном Components (Компоненты), открываемым при выборе команды Components (Компоненты) меню Project (Проект).

В отличие от объекта ToolBar, элемент управления CoolBar более универсален и кроме кнопок может содержать другие элементы управления, в том числе и панели типа ToolBar. Усовершенствованная панель представляет собой контейнер, причем он состоит из маленьких контейнеров Band (Полоса), которые являются объектами и непосредственно включают в себя все элементы управления, вводимые в CoolBar.

Для создания в проекте панели инструментов типа CoolBar выполните следующие действия:

1. Подключите к проекту библиотеку Microsoft Windows Common Controls-3 6.0, в которой содержится элемент управления CoolBar.

2. Добавьте в родительскую форму объект coolBar, дважды щелкнув мышью кнопку CooiBar на панели элементов управления.

3. Присвойте новой панели инструментов имя cbrTools.

4. Выделите объект CoolBar, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Открывается диалоговое окно Property Pages (рис. 7.17), предназначенное для создания панели типа CoolBar.

5. Используя кнопку Insert Band (Вставить полосу), добавьте на панель инструментов еще несколько объектов Band.

Рис. 7.17. Диалоговое окно Property Pages для объекта CooiBar

Теперь новую панель можно настраивать, добавляя на нее необходимые объекты или удаляя их. Добавим, например, кнопку управления для вызова дочернего окна. Для этого выполните следующие действия:

1. Используя кнопку CommandButton на панели элементов управления, разместите на создаваемой панели инструментов CoolBar кнопку управления.

2. Скорректируйте в окне Properties (Свойства) для созданной командной кнопки следующие свойства:

  • в правый столбец свойства Name введите наименование объекта cbNewCoolBar,
  • в свойство Caption введите текст Новая, который будет размещен на кнопке;
  • в свойство Height кнопки введите значение 300;
  • для свойства тор задайте значение 25.

3. Для создания кода, выполняемого при нажатии новой кнопки на панели инструментов, в окне редактора кода введите следующие команды, осуществляющие вызов дочерней формы:

Private Sub cbNewCoolBar_Click ()

Dim frmNewForm As New frmChildMDI

frmCount = frmCount + 1

frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)

frmNewForm.Show

End Sub

4. Запустите приложение на выполнение. Работающее приложение с панелью инструментов типа CoolBar показано на рис. 7.18.

Рис. 7.18. Приложение с панелью инструментов типа CooiBar

Диалоговые окна

В Visual Basic 6 существует специальный вид окон — диалоговые. В распоряжении разработчика имеется хорошо развитый инструментарий для их создания. Диалоговые окна бывают двух типов — модальные и немодальные. Модальное диалоговое окно — это окно, из которого нельзя перейти в другое окно, не закрыв текущее. Данный вид диалоговых окон используется для выдачи сообщений о ходе работы приложения, его настройки или ввода каких-либо данных, необходимых для работы. Примером такого диалогового окна в программе Visual Basic является окно About. Модальное диалоговое окно вынуждает пользователя совершать некоторые действия или отвечать на запрос приложения вводом информации или выполнением какого-либо действия.

Немодальное диалоговое окно — это окно, позволяющее перемещать фокус на другое окно или форму без закрытия текущего окна. Данный тип диалоговых окон используется редко. Примером немодального диалогового окна в Visual Basic является окно Find (Поиск), дающее возможность осуществлять поиск нужной информации.

Простейшие из диалоговых окон — это окна сообщений и окна, предназначенные для ввода информации. В дополнение к ним в Visual Basic 6 существует набор более сложных стандартных диалоговых окон для приложений:

  • Open (Открыть) — диалоговое окно для поиска в файловой структуре нужного файла;
  • Save As (Сохранить как) — для поиска места хранения файла и ввода его имени;
  • Font (Шрифт) — для выбора и установки шрифта;
  • Color (Цвет) — для выбора цветовой палитры;
  • Print (Печать) — для настройки режима печати;
  • Help (Справка) — для работы со справочной системой приложения. Рассмотрим эти диалоговые окна более подробно.

Окно сообщения (MsgBox)

Диалоговое окно сообщения (рис. 7.19) не требует проектирования и вызы вается из программы командой MsgBox или с помощью аналогичной функции MsgBox о, имеющей следующий синтаксис:

MsgBox (prompt[, buttons] [, title] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • buttons — числовое выражение, которое задает параметры для кнопок управления и значков в диалоговом окне и составлено из констант, указанных в табл. 7.8 и 7.9. Если значение не указано, то по умолчанию присваивается значение 0;
  • title — текст заголовка диалогового окна;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Необходимо иметь в виду, что для задания нескольких параметров кнопок и значков одновременно, следует просто сложить соответствующие константы.

Для примера введите в командном окне среды проектирования Immediate следующую команду и нажмите клавишу <Enter>:

MsgBox "Приветствуем Вас!", vbYesNo + vbExclamation,"Окно сообщений"

В ответ получите диалоговое окно, показанное на рис. 7.19.

Рис. 7.19. Диалоговое окно сообщения

Таблица 7.8. Константы параметров для значков диалогового окна сообщения
Значок | Константа | Значение | Тип сообщения
 | vbExclamation | 48 | Предупреждение
 | vbQuestion | 32 | Запрос
 | vbInformation | 64 | Информация
 | vbCritical | 16 | Ошибка

В диалоговых окнах сообщении можно управлять отображаемыми в окне сообщения кнопками и установкой фокуса на одной из кнопок при открытии окна. Для этого можно использовать константы, приведенные в табл. 7.9.

Таблица 7.9. Константы параметров наличия кнопок в окне сообщения и установки фокуса на кнопку
Константа | Значение | Набор кнопок в диалоговом окне
vbOkOnly | 0 | OK
vbOkCancel | 1 | OK, Отмена
vbAbortRetryIgnore | 2 | Стоп, Повтор, Пропустить
vbYesNoCancel | 3 | Да, Нет, Отмена
vbYesNo | 4 | Да,Нет
vbRetryCancel | 5 | Повтор, Отмена
vbDefaultButton1 | 0 | Устанавливает фокус на первой кнопке
vbDefaultButton2 | 256 | Устанавливает фокус на второй кнопке
vbDefaultButton3 | 512 | Устанавливает фокус на третьей кнопке
vbDefaultButton4 | 768 | Устанавливает фокус на четвертой кнопке
vbApplicationModal | 0 | Назначает модальность приложения. Диалоговое окно будет модальным, то есть требующим обязательного закрытия для перехода в другие окна
vbSystemModal | 4096 | Назначает модальность системы. Диалоговое окно будет модальным на уровне системы, то есть пока диалоговое окно не закрыто, в любое другое приложение перейти нельзя
vbMsgBoxHelpButton | 16384 | Добавляет в диалоговое окно кнопку Справка
VbMsgBoxSetForeground | 65536 | Объявляет диалоговое окно фоновым окном
vbMsgBoxRight | 524288 | Выравнивает текст в диалоговом окне по правому краю
vbMsgBoxRtIReading | 1 048 576 | Переворачивает текст для чтения справа налево

В зависимости от выбора кнопки диалоговое окно MsgBox возвращает одно из значений, заданных системными константами. Это необходимо для анализа нажатой кнопки и выполнения соответствующих действий в программе. В исходном коде для этого можно использовать константы, указанные в табл. 7.10.

Таблица 7.10. Значения констант, возвращаемые кнопками окна сообщения
Кнопка | Константа | Значение при нажатии на кнопку
ОК | vb0k | 1
Отмена | vbCancel | 2
Стоп | vbAbort | 3
Повтор | vbRetry | 4
Пропустить | vblgnore | 5
Да | vbYes | 6
Нет | vbNo | 7

Диалоговое окно ввода информации (InputBox)

Достаточно часто в диалоговом окне необходимо не только нажать кнопки выбора действия, но и ввести определенную информацию, которая затем анализируется программой. Для выполнения такого рода действий в Visual Basic можно использовать диалоговое окно ввода информации InputBox (рис. 7.20). Функция InputBox имеет следующий синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

где:

  • prompt — текст сообщения в диалоговом окне. Максимальная длина текста 1024 символа. В этот текст можно вставить в качестве разделителей строк перевод каретки Chr(13), перевод строки Chr(lO) или их комбинацию;
  • title — текст заголовка диалогового окна;
  • default — значение текстового поля ввода по умолчанию. Если параметр отсутствует, строка остается пустой;
  • xpos — позиция по горизонтали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • ypos — позиция по вертикали левого верхнего угла диалогового окна относительно левого верхнего угла экрана. По умолчанию присваивается значение, соответствующее середине экрана;
  • helpfile — ссылка на файл справочной системы;
  • context — ссылка на содержание в файле справочной системы.

Для примера введите в командном окне среды проектирования Immediate следующую команду:

strUserTest = InputBox ("Введите пароль", "Запуск приложения", "****")

В результате получите диалоговое окно, показанное на рис. 7.20.

Рис. 7.20. Диалоговое окно ввода

В отличие от диалогового окна MsgBox, в окне InputBox всегда имеются только две кнопки управления: ОК и Cancel. Кнопка ОК подтверждает ввод данных, кнопка Cancel — закрывает диалоговое окно без ввода данных.

Использование элемента управления CommonDialog для создания диалоговых окон

Все диалоговые окна, перечисленные в начале раздела "Диалоговые окна", можно создать с помощью элемента управления commonDialog. Прежде чем его использовать, необходимо подключить к проекту библиотеку Microsoft Common Dialog Control 6.0 через диалоговое окно Components (Компоненты) среды проектирования.

Для вызова диалоговых окон необходимо использовать соответствующие каждому из этих окон методы элемента управления commonDialog, указанные в табл. 7.11.

Таблица 7.11. Методы элемента управления CommonDialoq
Метод | Описание
ShowOpen | Вызывает диалоговое окно, используемое для открытия файла
ShowSave | Вызывает диалоговое окно, используемое для сохранения файла
ShowColor | Вызывает диалоговое окно настройки цветовой палитры
ShowFont | Вызывает диалоговое окно настройки шрифтов текста
ShowPrinter | Вызывает диалоговое окно настройки печати и диалоговое окно печати
ShowHelp | Подключает справочную систему в стиле Windows

Для изучения диалоговых окон, образуемых с помощью элемента управления CommonDialog, создадим небольшой проект. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в открывшемся диалоговом окне дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MySmallProject. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда примет вид MySmallProject Properties (Свойства MySmallProject).

3. Подключите к проекту библиотеку Microsoft Common Dialog Control 6.0. Для этого в меню Project (Проект) выберите команду Components, в открывшемся диалоговом окне Components (Компоненты) установите флажок, расположенный рядом с названием этой библиотеки, и нажмите кнопку ОК.

4. Задайте наименование формы проекта FormForControlCommDiaiog.

5. Используя свойство caption формы, введите заголовок окна Форма для проверки диалогов CommonDialog.

6. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления. Если эта панель отсутствует на экране, то в меню View (Вид) выберите команду TooIBox (Панель инструментов).

7. Присвойте элементу управления CommonDialog наименование cdMyDialog.

8. Добавьте в форму кнопку управления типа commandButton и назовите ее cbControl. Эта кнопка будет использоваться нами для вызова диалогового окна по событию click.

9. Используя свойство caption, введите название кнопки Проверка диалогов CommonDialog.

Полученное приложение представлено на рис. 7.21. Этот проект, содержащий элемент управления commonDialog, будем использовать для создания диалоговых окон и знакомства с ними, размещая в событии click кнопки cbControl код настройки параметров требуемого диалогового окна и вызова соответствующего ему метода.

Рис. 7.21. Проект MySmallProject для проверки диалоговых окон, создаваемых с помощью элемента управления CommonDialog

Диалоговое окно открытия файла

Диалоговое окно открытия файла предназначено для поиска файлов, используемых в программе. Имя выбранного файла или списка файлов возвращается в свойстве FileName объекта CommonDialog. Для вызова диалогового окна открытия файла (рис. 7.22) необходимо в событии click кнопки cbControl приложения MySmallProject ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.ShowOpen

End Sub

Рис. 7.22. Диалоговое окно открытия файла, созданное с помощью объекта CornmonDialog

Для ввода кода достаточно дважды щелкнуть на объекте cbcontroi левой кнопкой мыши. При этом открывается редактор кода с шаблоном кода для события click этой кнопки.

Значения для свойства cdlMyDialog. Flags указаны в табл. 7.12.

Таблица 7.12. Значения для метода Flags диалогового окна открытия файла
Константа | Значение | Описание
cdlOFNAllowMultiselect | &H200 | Устанавливает возможность множественного выбора файлов в диалоговом окне. Возвращаемые имена файлов находятся в свойстве FileName элемента управления CornmonDialog и разделены пробелами
cdlOFNCreatePrompt | &H2000 | Устанавливает для диалогового окна запрос на подтверждение создания нового файла, если он не существует
cdlOFNExplorer | &H80000 | Назначает диалоговому окну стиль проводника
cdlOFNExtensionDifferent | &H400 | Сообщает, что расширение файла отличается от установленного по умолчанию в свойстве DefaultExt
cdlOFNFileMustExist | &H1000 | Устанавливает возможность ввода в диалоговом окне только имен существующих файлов. При вводе несуществующего файла выдается сообщение об ошибке
cdlOFNHelpButton | &H10 | Указывает на необходимость размещения в диалоговом окне кнопки Справка
cdlOFNHideReadOnly | &H4 | Файлы только для чтения не отображаются
cdlOFNLongNames | &H200000 | Разрешает использование длинных имен файлов
cdlOFNNoChangeDi r | &H8 | " Назначает папку, открываемую по умолчанию при запуске диалогового окна
cdlOFNNoLongNames | &H40000 | Запрещает использование длинных имен файлов
cdlOFNNoReadOniyReturn | &H8000 | Указывает, что выводимые в диалоговом окне файлы не должны быть предназначены только для чтения и не находятся в каталоге, защищенном от записи (Write-protected)
cdlOFNNoValidate | &H100 | Сообщает о вводе недопустимых символов в имени файла
cdlOFNOverwritePrompt | &H2 | Устанавливает для диалогового окна запрос на подтверждение перезаписи существующего файла
cdlOFNPathMustExist | &H800 | Устанавливает требование указания полного пути к файлу
cdlOFNReadOnly CdlOFNShareAware | &H1 &H4000 | Задает проверку флажка Только чтение Задает игнорирование ошибки типа блокировки, занятости файла (Sharing violation errors)

Диалоговое окно сохранения файла

Для поиска файла, в котором будут сохранены данные из программы, используется диалоговое окно сохранения файла (рис. 7.23). Это диалоговое окно вызывается так же, как окно открытия файла. Для его создания в событии click кнопки cbControl приложения MySmallProject необходимо заменить код на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowSave

End Sub

Рис. 7.23. Диалоговое окно сохранения файла, созданное с помощью объекта CommonDialog

Как видно из рисунка, это диалоговое окно аналогично окну, предназначенному для открытия файла. Флаги этого диалогового окна перечислены в табл. 7.12.

Диалоговое окно настройки цветовой палитры

Для настройки цвета фона формы и расположенных в форме элементов можно использовать диалоговое окно настройки цветовой палитры (рис. 7.24). Для вызова этого диалогового окна необходимо заменить код в событии click кнопки cbcontrol приложения MySmallProject на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowColor

End Sub

Рис. 7.24. Диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog

Константы, используемые для настройки диалогового окна выбора цветовой палитры, перечислены в табл. 7.13. Расширенное диалоговое окно настройки цветовой палитры можно создать с помощью объекта CommonDialog (рис. 7.25).

Таблица 7.13. Значения для метода Flags диалогового окна цветовой палитры
Константа | Значение | Описание
cdlCCFullOpen | &H2 | Помещает в диалоговое окно дополнительную кнопку Добавить в набор и цветовое поле с маркером и линейкой назначения оттенка для добавления цветов в поля Дополнительные цвета диалогового окна цветовой палитры (рис. 7.25)
cdlCCShowHelp | &H8 | Добавляет в диалоговое окно кнопку Справка
cdlCCPreventFullOpen | &H4 | Скрывает кнопку Добавить в набор
cdlCCRGBInit | &H1 | Восстанавливает в диалоговом окне исходный набор цветов

Рис. 7.25. Расширенное диалоговое окно настройки цветовой палитры, созданное с помощью объекта CommonDialog с флагомcdlCCFullOpen

Диалоговое окно настройки шрифтов текста

Для вызова диалогового окна настройки шрифтов (рис. 7.26) необходимо в событие click кнопки cbcontrol ввести следующий код:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlCFBoth + cdlCFEffects

cdlMyDialog.ShowFont

End Sub

Рис. 7.26. Диалоговое окно настройки шрифта, открытое с использованием объекта CommonDialog

Флаги диалогового окна настройки шрифтов перечислены в табл. 7.14.

Таблица 7.14. Значения для метода Flags диалогового окна настройки шрифтов
Константа | Значение | Описание
cdlCFANSIOnly | &H400 | Назначает выбор только из системных наборов шрифтов Windows
cdlCFApply | &H200 | Добавляет в диалоговое окно кнопку Применить
cdlCFBoth | &H3 | Назначает использование экранных шрифтов принтера, указанного в свойстве hDC
CdlCFEffects | &H100 | Указывает на необходимость размещения в диалоговом окне элементов управления, задающих эффект подчеркивания, зачеркивания и цвета
cdlCFForceFontExis | it &H10000 | Назначает вывод предупреждения об ошибке при выборе несуществующего шрифта
cdlCFHelpButton | &H4 | Добавляет в диалоговое окно кнопку Справка
cdlCFLimitSize | &H2000 | Назначает выбор размеров шрифтов в интервале, указанном в свойствах Min и Мах
cdlCFNoFaceSel | &H80000 | Отключает выбор наименования шрифта
cdlCFNoSizeSel | &H1000 | Отключает выбор размера шрифта
cdlCFNoSimulations | &H200000 | Отключает в диалоговом окне графические шрифты
cdlCFNoStyleSel | &H100000 | Отключает выбор стиля шрифта
cdlCFNoVectorFonts | &H800 | Отключает выбор векторных шрифтов
cdlCFPrinterFonts | &H2 | Назначает выбор только шрифтов принтера, который указан в свойстве hDC
cdlCFScreenFonts | &H1 | Назначает выбор только экранных шрифтов системы
cdlCFTTOnly | &H40000 | Назначает только выбор шрифтов типа True Type
CdlCFWYSIWYG | &H8000 | Назначает выбор только тех шрифтов, которые подходят одновременно и для принтера, и для экрана. При этом должны дополнительно использоваться флаги cdlCFBoth и cdlCFScalableOnly

Диалоговое окно печати

Диалоговое окно печати можно вызвать с помощью элемента управления

commonDialog, заменив код в событии click кнопки с наименованием cbControl на следующий:

Private Sub cbControl_Click()

cdlMyDialog.ShowPrinter

End Sub

Открытое диалоговое окно показано на рис. 7.27.

Если требуется предварительно настраивать печать, то необходимо установить для свойства Flags значение cdlPDPrintSetup. В этом случае код будет выглядеть следующим образом:

Private Sub cbControl_Click()

cdlMyDialog.Flags = cdlPDPrintSetup

cdlMyDialog.ShowPrinter

End Sub

Запустив приложение MySmallProject, вы получите диалоговое окно, показанное на рис. 7.28.

Рис. 7.27. Диалоговое окно печати, открытое с использованием объекта CommonDialog

Рис. 7.28. Диалоговое окно настройки печати, созданное с помощью объекта CommonDialog

Допустимые флаги диалоговых окон печати и настройки печати перечислены в табл. 7.15.

Таблица 7.15. Значения для метода Flags диалогового окна печати
Константа | Значение | Описание
cdlPDAllPages | &НО | Возвращает или устанавливает состояние переключателя печати всех страниц
cdlPDDisablePrintToFile | &H80000 | Делает недоступным флажок диалогового окна Печать в файл
cdlPDHelpButton | &H800 | Добавляет в диалоговое окно кнопку Справка
cdlPDHidePrintToFile | &H100000 | Скрывает флажок диалогового окна Печать в файл
cdlPDNoPageNums | &H8 | Скрывает элементы управления в группе Печатать
cdlPDNoWarning | &H80 | Отменяет предупреждение об отсутствии принтера по умолчанию
cdlPDPageNums | &H2 | Делает недоступными элементы управления, расположенные в области Печатать
cdlPDPrintSetup | &H40 | Выводит диалоговое окно настройки печати перед диалогом печати
cdlPDPrintToFile | &H20 | Возвращает или устанавливает состояние флажка Печать в файл
cdlPDReturnDefault | &H400 | Возвращает имя принтера, используемое по умолчанию
cdlPDUseDevModeCopies | &H40000 | Если драйвер принтера не поддерживает создание копий, делает недоступным счетчик Число копий. Если копирование поддерживается, указывает, что номер копии хранится в свойстве Copies

Справочная система в стиле Windows

Флаги диалогового окна справочной системы перечислены в табл. 7.16. Для использования этого диалогового окна необходимо создать справочную систему для приложения (файл справки).

Таблица 7.16. Значения для метода Flags диалогового окна справочной системы
Константа | Значение | Описание
cdlHelpCommandHelp | &Н102 | Вызывает справочную систему отдельной командой
cdlHeIpContents | &НЗ | Вызывает содержание справочной системы
cdlHelpContext | &H1 | Вызывает отдельную тему справочной системы
cdlHelpContextPopup | &H8 | Вызывает тему справки по индексу
cdlHelpIndex | &H3 | Вызывает указатель справочной системы
cdlHelpKey | &H101 | Вызывает справочную систему по ключевому слову

Строка состояния

Строка состояния — это специальный элемент окна, состоящий из нескольких панелей для отображения текущей информации о состоянии и режиме работы приложения. На рис. 7.29 показана строка состояния, отображающая состояние приложения, дату и текущее системное время. Этот элемент интерфейса обычно размещается в нижней части родительского окна приложения, если не требуется специально установить его в другом месте окна. Такое положение строки состояния является стандартным.

Рис. 7.29. Строка состояния приложения

Для добавления строки состояния в форму используется элемент управления statusBar. Чтобы этот объект можно было использовать в приложении, необходимо в окне Components (Компоненты) подключить к выбранному проекту библиотеку Microsoft Window Common Control 6.0. После подключения библиотеки элемент управления StatusBar появляется на панели элементов управления среды проектирования и его можно добавить в форму стандартным способом, как и все другие элементы управления.

Строка состояния состоит из набора панелей, каждая из которых является объектом и имеет следующие основные свойства:

  • Alignment — задает выравнивание текста на панели строки состояния;
  • Bevel — устанавливает затенение для придания объемности панелям;
  • Minwidth — определяет минимальный размер панелей строки состояния;
  • picture — задает графическое изображение, которое будет помещено на панель;
  • Style — определяет тип панели. Может принимать значения, указанные в табл. 7.17;
  • Text — задает текст, размещаемый на панели. Как правило, этот текст формируется программно;
  • ToolTip — задает текст подсказки для панели. Выводится при задержке указателя мыши на панели.

Таблица 7.17. Значения свойства Style панелей строки состояния
Стиль | Значение | Описание
sbrText | 0 | Дает возможность отображать текст или изображение в свойствах панели Text и Picture, соответственно
sbrCaps | 1 | Отображает состояние клавиши <Caps Lock>. Если эта клавиша нажата, текст CAPS на панели яркий, если отжата — затененный
sbrNum | 2 | Отображает состояние клавиши <Num Lock>
sbrIns | 3 | Отображает состояние клавиши <lns>
sbrScrl | 4 | Отображает состояние клавиши <Scroll Lock>
sbrTime | 5 | Выводит текущее время
sbrDate | 6 | Выводит текущую дату

Настройка строки состояния и управление ею выполняется при помощи окна свойств Property Pages (Страница свойств) этого элемента управления, открываемого при выборе команды Properties (Свойства) контекстного меню объекта (рис. 7.30).

Рис. 7.30. Диалоговое окно Property Pages для строки состояния

Рассмотрим создание строки состояния на примере нашего приложения MyMDIApp. Откроите приложение и выполните следующие действия:

1. Добавьте в форму элемент управления StatusBar, дважды щелкнув мышью

гвг кнопку StatusBar на панели элементов управления.

2. После появления в форме строки состояния присвойте ей имя sbStatusBar.

3. Установите курсор на строку состояния, нажмите правую кнопку мыши и выберите из появившегося контекстного меню команду Properties (Свойства). Откроется диалоговое окно Property Pages для настройки строки состояния.

4. С помощью кнопки Insert Panel (Вставить панель), добавьте в строку состояния еще две панели.

Замечание

По умолчанию строка состояния содержит одну панель.

5. Используя счетчик Index (Индекс), перейдите к настройке панели 1. Панели строки состояния проектируются независимо друг от друга, переключение с одной на другую выполняется при помощи счетчика Index.

6. Первую панель будем использовать для отображения текстовой информации. Установите для нее свойство Style в значение 0 -sbrText, затем в свойство Text этой панели введите значение Текст подсказки.

7. Перейдите к настройке второй панели, установив для счетчика Index значение 2.

8. Вторая панель будет использоваться для отображения текущей даты. Установите для свойства style значение 0 -sbrDate.

Рис. 7.31. Работа приложения, содержащего строку состояния

9. Перейдите к настройке третьей панели, установив для счетчика Index значение 3.

10. Установите для свойства Style значение 0 -sbrCaps. Это будет панель, отображающая состояние клавиши <Caps Lock>.

11. Запустите полученное приложение на выполнение командой Start меню Run. Созданное приложение представлено на рис. 7.31.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 8. Использование стандартных элементов управления Visual Basic.

В главе 3 мы познакомились с наиболее часто используемыми элементами управления Visual Basic и их основными свойствами. Продолжим изучение этих элементов, а также рассмотрим стандартные элементы управления Microsoft и их использование при создании приложений.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Метка

Как уже было сказано в главе 3, для размещения в форме текстовой информации, которая не может быть изменена пользователем приложения, используется элемент управления Label (Метка). Рассмотрим более подробно его свойства. Откройте окно свойств Properties данного объекта. Для этого выделите его и выберите в контекстном меню команду Properties (Свойства).

Текст метки задается свойством caption. Он может быть установлен в окне Properties или программно. Шрифт текстовой информации определяется свойством Font (Шрифт). Для выбора шрифта в окне свойств установите курсор в данное свойство и нажмите кнопку с тремя точками в правом столбце свойства. Открывается диалоговое окно Выбор шрифта (рис. 8.1), содержащее три списка, позволяющих указать наименование, начертание и размер шрифта.

Используя свойства ForeColor и Backcolor, можно задать цвет текстовой информации и цвет фона элемента управления. Свойство BorderStyle (Стиль рамки) определяет тип обрамления вокруг объекта Label, позволяя оформить надпись в виде текстового поля. Для этого вместо используемого по умолчанию значения None необходимо выбрать для свойства значение Fixed Single.

Свойство Appearance позволяет придать тексту некоторую объемность.

Свойство Alignment (Выравнивание) определяет выравнивание текста в элементе управления по правому, левому краю или по ширине. Если информация в объекте размещена на нескольких строках, то выравнивание осуществляется на каждой строке.

Рис. 8.1. Диалоговое окно Выбор шрифта

Оформление надписей в элементе управления Label меняется в зависимости ОТ значения СВОЙСТВ Alignment, Appearance И BorderStyle (рис. 8.2).

Рис. 8.2. Оформление надписей

Текст, задаваемый объектом Label, может иметь достаточно большой размер и занимать несколько строк. Максимальное количество его символов — 65528. Задать размеры надписи можно с помощью следующих средств:

  • мыши;
  • клавиши-стрелки при нажатой клавише <Shift>;
  • свойства Height (Высота) и width (Ширина);
  • свойства AutoSize и Wordwrap.

Первые три способа задания размера текстового объекта удобны в тех случаях, когда он имеет небольшой конкретно заданный размер. Но хотя пользователь приложения не может изменять текст, отображаемый с помощью объекта Label, его можно изменять программно. В этом случае точный размер текстового объекта заранее не известен, и для задания его размера удобно использовать свойства Autosize и wordwrap. Рассмотрим их более подробно.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойство AutoSize

Свойство Autosize может иметь два значения. При установке значения False размер объекта остается постоянным и не зависит от длины заданного свойством caption текста. Если длина текста превышает длину объекта Label, часть информации, не поместившаяся в объект, будет не видна. При установке для свойства Autosize значения True длина объекта устанавливается таким образом, чтобы в нем поместилась задаваемая свойством caption текстовая информация.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойство Wordwrap

Свойство Wordwrap аналогично свойству Autosize, но в данном случае изменяется высота объекта, а ширина остается неизменной. При установке для данного свойства значения False размер объекта Label может изменяться только в горизонтальном направлении. Если значение свойства wordwrap равно True, размеры объекта Label будут увеличиваться в вертикальном направлении вниз, пока не поместится весь текст. При этом осуществляется автоматический перенос слов. В табл. 8.1 указаны размеры текстового объекта в зависимости от значения свойств wordwrap и Autosize.

Таблица 8.1. Значения свойств wordwrap и Autosize
Значения свойств | Размер объекта Label
WordWrap= False AutoSize= False | Объект Label имеет первоначально заданные для него размеры
WordWrap= True AutoSize= False | Объект Label имеет первоначально заданные для него размеры
Wordwraps False AutoSize= True | Если информация, заданная свойством Caption, не помещается в объекте, изменяется размер поля в горизонтальном направлении при неизменной высоте
Wordwraps True AutoSize= True | Если информация, заданная свойством caption, не помещается в объекте, изменяется размер поля в вертикальном направлении при неизменной ширине

Совет

Свойства AutoSize и Wordwrap удобно использовать для надписей, размеры которых могут изменяться в процессе выполнения формы. Чтобы при изменении размера объекта в вертикальном направлении не изменилась его ширина, необходимо сначала установить значение True для свойства Wordwrap, и лишь затем аналогичное значение для свойства AutoSize.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойство UseMnemonic

Свойство UseMnemonic элемента управления Label позволяет определить, как будет интерпретироваться символ амперсанда (&), размещенный в свойстве caption. Если установлено значение True, то амперсанд из текста удаляется, а символ, перед которым он расположен, подчеркивается. Эта возможность применяется для определения клавиш быстрого доступа. При использовании метки в качестве клавиши быстрого доступа пользователь может комбинацией клавиш <А11>+<подчеркнутая клавиша в метке> устанавливать фокус на элемент управления, следующий по порядку для клавиши <ТаЬ> за меткой.

Рассмотрим такой пример. В форме расположено несколько элементов управления. Среди них имеется текстовое поле, в которое вы хотите перейти нажатием клавиши быстрого доступа. В этом случае выполните следующие действия:

1. Создайте метку для текстового поля.

2. Откройте окно свойств Properties метки.

3. Выделите свойство Caption и в текст метки перед символом, который вы хотите использовать в качестве клавиши быстрого доступа, поместите символ амперсанда.

4. С помощью свойства Tabindex метки и текстового поля, установите для метки значение на единицу меньшее, чем у текстового поля.

Замечание

Если элемент управления имеет свойство Caption (например, элемент CheckBox), то для задания клавиши быстрого доступа необходимо использовать его собственное свойство.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Текстовое поле

Элемент управления TextBox, размещенный в форме, служит для ввода пользователем информации во время работы приложения или отображения информации, задаваемой свойством Text программно или при разработке. Объект TextBox, так же как и метка, отличается большим набором свойств. Рассмотрим их более подробно.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства, определяющие оформление текста

Для задания стиля рамки текстового поля применяется свойство Borderstyle (Стиль рамки). Оно содержит два значения. По умолчанию используется значение Fixed Single, при котором поле выделено рамкой. При установке значения None рамка вокруг поля отсутствует. Свойство Appearance позволяет придать объемность текстовому полю, имеющему рамку.

Свойства Backcolor и ForeColor позволяют соответственно задать цвет фона и цвет текста, размещаемого в элементе управления TextBox.

С помощью свойства Alignment (Выравнивание) можно задать вариант выравнивания информации в поле: по центру, по левому или правому краю.

Для задания наименования, размера и начертания шрифта, отображаемого в текстовом поле, используется свойство Font (Шрифт).


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Многострочные текстовые поля

По умолчанию предполагается, что текстовое поле служит для ввода одной строки текста. Свойства Multi-Line и ScrollBar элемента управления TextBox позволяют настроить объект таким образом, что он будет использоваться для ввода нескольких строк или даже большого блока текстовой информации (табл. 8.2).

Таблица 8.2. Предназначение свойств MultiLine и ScrollBar

Свойство

Назначение

MultiLine

Определяет способ отображения поля. При установленном значении True текст автоматически переносится по словам на несколько строк. При вводе информации в поле для перехода на новую строку необходимо использовать клавишу <Enter>

ScrollBar

Данное свойство используется, если свойство MultiLine имеет значение True и размер поля не позволяет отобразить заданный в свойстве Text текст. Свойство может принимать одно из следующих значений:

0-None — полоса прокрутки отсутствует 1-Horizontal — горизонтальная полоса прокрутки 2-Vertical — вертикальная полоса прокрутки 3-Both — горизонтальная и вертикальная полосы прокрутки

Вид текстового поля меняется в зависимости от значения свойств MultiLine и ScrollBar (рис. 8.3).

Рис. 8.3. Вид текстового поля в зависимости от значения свойств MultiLine и ScrollBar


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Управление текстом в объекте TextBox

Программа Visual Basic позволяет во время выполнения программы управлять текстом, отображаемым в текстовом поле, с помощью свойств SelStart, SelLength И SelText.

В случае, когда фокус впервые переходит на текстовое поле, курсор по умолчанию устанавливается слева от находящегося в поле текста. В результате ввода или просмотра информации курсор может перемещаться в пределах поля. При последующем возвращении фокуса на поле курсор устанавливается в то место, куда он был установлен в последний раз.

Используя свойство Seistart объекта TextBox, можно указать место размещения курсора в поле при установке фокуса. Значение 0 соответствует крайней левой позиции. Свойство SelLength задает ширину точки ввода. По умолчанию она равна 0, т. е. в том месте, где курсор установлен, можно начинать ввод символов, не удаляя расположенной в нем информации. Рассмотрим следующий пример. Необходимо, чтобы в форме, предназначенной для ввода данных, размещенные данные замещались новой информацией. Для этого при установке фокуса на поле символы должны выделяться инверсным цветом (рис. 8.4) и при вводе данных удаляться. Свойство SelText позволяет задать текст, который заменит во время выполнения программы выделенный фрагмент.

Рассмотрим пример создания небольшого приложения, содержащего форму, представленную на рис. 8.4. Форма содержит заголовок и текстовое поле, в котором при установке фокуса выделяется размещенный в нем по умолчанию текст. При создании приложения будем использовать рассмотренные нами элементы управления Label и TextBox.

Рис. 8.4. Программное выделение информации, размещенной в текстовом поле

1. Для создания нового приложения в меню File (Файл) выберите команду New Project (Новый проект). Открывается окно Project с расположенной в нем новой формой.

2. Чтобы разместить в форме заголовок, нажмите кнопку Label на панели элементов управления. Затем установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера.

3. Откройте окно свойств. Для этого щелкните правой кнопкой мыши на созданном объекте и выберите в контекстном меню команду Properties.

4. Выделите свойство caption (Надпись) и введите в правом столбце текст заголовка.

5. Чтобы сохранить первоначальную ширину заголовка и расположить текст в две строки, установите для свойства wordwrap значение True.

6. Для задания точной ширины заголовка присвойте свойству Autosize значение True.

7. По умолчанию текст заголовка выровнен по левому краю. Чтобы его отцентрировать, выделите свойство Alignment (Выравнивание). Затем в правом столбце нажмите кнопку раскрытия списка и выберите из него значение Center.

8. Для задания используемого в оформлении заголовка наименования шрифта, его размера и начертания воспользуйтесь свойством Font (Шрифт). Нажмите в правом столбце свойства кнопку с тремя точками и в открывшемся диалоговом окне Выбор шрифта установите необходимые параметры.

9. Разместим теперь в форме текстовое поле. Нажмите на панели элементов управления кнопку TextBox, установите курсор в форму и нарисуйте рамку требуемого размера.

10. Чтобы задать текст, отображаемый в текстовом поле при выполнении формы, выделите свойство Text и введите в правом столбце требуемый текст, например, Текстовое поле.

11. Так как мы хотим, чтобы при установке фокуса на текстовое поле в нем выделялся размешенный текст, необходимо создать процедуру обработки события. Для открытия окна редактора кода дважды щелкните мышью на объекте TextBox.

12. В окне редактора кода из списка Object выбрано значение Text1, указывающее наименование текстового поля. Выберите из правого списка Procedure значение GotFocus, позволяющее задать процедуру обработки события получения текстовым полем фокуса.

13. В области создания процедуры между операторами private sub Text1_Got Focus () и End Sub расположите следующие команды:

Text1.SelStart = 0

Text1.SelLength = Len(Text1.Text)

Первая команда задает начальное положение выделяемого в поле текста. Вторая команда процедуры задает длину выделяемого фрагмента текста. Используемая в ней функция Len вычисляет длину текста, размещенного в текстовом поле и заданного свойством Text. На рис. 8.5 показано окно редактора кода с введенными командами.

Рис. 8.5. Окно редактора кода

Совет

Если вы хотите во время выполнения программы заменить выделенную в текстовом поле информацию другим текстом, то можете использовать свойство SelText и вставить в процедуру следующую команду: Text1.SelText = "Информация, вводимая с помощью свойства SelText". В кавычках располагается размещаемый в текстовом поле новый текст.

14. После ввода текста процедуры закройте окно редактора кода, выбрав команду Close системного меню окна или нажав кнопку Закрыть, расположенную в верхнем правом углу заголовка окна.

15. Запустите программу на выполнение, выбрав в меню Run команду Start или нажав клавишу <F5>. Результат представлен на рис. 8.4. Информация в текстовом поле выделена, и вы можете сразу же вводить на ее место новую.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Нередактируемые текстовые поля

Как мы уже говорили, текстовые поля, в отличие от меток, предназначены для ввода информации пользователями приложения. Но в том случае, если вы хотите, чтобы данные просматривались, но не редактировались, то можете воспользоваться свойством Locked. При установке значения True пользователь сможет просматривать данные без возможности их редактирования. В этом случае изменение информации в текстовом поле может выполняться только программно.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Проверка правильности ввода данных

При работе с текстовыми полями возникает необходимость проверки вводимых пользователем данных. В Visual Basic для этих целей предназначено событие validate. Например, размещенное в форме поле служит для ввода даты и вы хотите, чтобы при вводе информации в ином формате появлялось соответствующее предупреждение. Для этого выполните следующие действия:

1. Разместите в форме текстовое поле.

2. Для задания процедуры обработки события validate откройте окно редактора кода, дважды щелкнув кнопку мыши на текстовом поле.

3. Из списка Object по умолчанию выбрано значение Text1, указывающее наименование элемента управления TextBox. Из правого списка Procedure выберите значение Validate, позволяющее задать процедуру проверки. вводимых в поле данных.

4. Создайте следующую процедуру:

Private Sub Text1_Validate

If Not IsDate(Textl) Then MsgBox "Вводимые данные должны быть датой"

End Sub

5. Закройте окно редактора кода.

6. Разместите в форме еще одно текстовое поле, которое будет использовано в качестве объекта, на который можно перевести фокус после ввода информации в первое поле.

7. Запустите приложение на выполнение.

8. Введите в созданное поле информацию в каком-либо произвольном формате, например текстовую, и нажмите клавишу <ТаЬ> для перемещения фокуса на второе поле. На экране появится предупреждение, аналогичное представленному на рис. 8.6.

Рис. 8.6. Предупреждение, появляющееся при вводе данных, не отвечающих заданным условиям


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование текстового поля для ввода пароля

Текстовое поле в Visual Basic характеризуется двумя свойствами, позволяющими использовать их при создании полей, предназначаемых для ввода пароля:

  • passwordchar — задает символ, отображаемый в поле вместо вводимых символов;
  • MaxLength — максимальное число символов, вводимых в поле.

На рис. 8.7 показана форма, в которой в качестве символа, отображаемого в текстовом поле при вводе пароля, используется символ звездочки.

Рис. 8.7. Форма, предназначенная для ввода пароля


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Подсказка

Visual Basic позволяет с помощью свойства ToolTipText (Текст подсказки) создавать текст краткого пояснения, появляющийся ниже курсора, когда он установлен на поле (рис. 8.8). Чтобы задать текст пояснения к текстовому полю, введите текст подсказки в правый столбец свойства.

Рис. 8.8. Свойство ToolTipText позволяет задать подсказку, появляющуюся под курсором


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Кнопки управления

В главе 3 вы познакомились с основными свойствами объекта, называемого кнопкой управления. Это один из наиболее часто используемых элементов управления. Рассмотрим еще несколько свойств, характеризующих данный элемент.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Клавиши быстрого доступа

Для кнопки управления можно задать клавиши быстрого доступа, что весьма удобно пользователям, использующим при работе с формой только клавиатуру. В этом случае для нажатия кнопки, размещенной в форме, достаточно будет нажать комбинацию клавиш <Alt>+< подчеркнутая клавиша в названии кнопки> Печать. Чтобы задать клавишу быстрого доступа, необходимо при вводе названия кнопки в поле свойства Caption перед соответствующей буквой наименования кнопки расположить амперсанд (&). В названии кнопки эта буква будет выделена подчеркиванием.

Замечание

Если вы не хотите, чтобы символ амперсанда интерпретировался как назначение клавиши быстрого доступа, вам необходимо поместить два символа амперсанда.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства Default и Cancel

Одну из кнопок, размещаемых в форме, можно сделать кнопкой по умолчанию, т. е. помещать в нее фокус при запуске формы на выполнение. Для этого используется свойство Default. В этом случае для нажатия данной кнопки достаточно нажать клавишу <Enter>. Чтобы сделать кнопку используемой по умолчанию, необходимо для свойства Default установить значение True.

Используя свойство cancel кнопки, можно сделать ее кнопкой отмены. Если для свойства Cancel установлено значение True, кнопка будет выбираться при нажатии клавиши <Esc>.

Замечание

При присвоении свойствам Default или Cancel кнопки значения True, аналогичные свойства других размещенных в форме кнопок получат значения False.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стиль оформления кнопки

Для управления внешним видом кнопки используется свойство Style (Стиль). Оно содержит два значения. По умолчанию установлено значение Standard, предполагающее, что кнопка будет содержать текст, задаваемый свойством caption. Вы можете использовать в форме графические кнопки. В этом случае вместо текстовой надписи на кнопке размещается графическое изображение, задаваемое свойством picture, а свойство Style должно иметь значение Graphical.

Для задания графического изображения, помещаемого на кнопке, выделите свойство picture и нажмите кнопку, расположенную в правом столбце. В результате откроется диалоговое окно Load Picture (рис. 8.9), используя которое вы можете выбрать на диске файл, содержащий изображение.

Рис. 8.9. Диалоговое окно Load Picture, предназначенное для выбора изображения, помещаемого на кнопке

Помимо вышеперечисленных свойств, для управления видом графической кнопки используются также свойства Disabledpicture и DownPicture. Свойство DisabledPicture позволяет задать графическое изображение неактивной кнопки, а DownPicture — графическое изображение, отображаемое на кнопке при ее нажатии.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Способы выбора кнопки управления

Существует несколько способов выбора размещенной в форме кнопки управления при выполнении приложения. Наиболее очевидный — это щелкнуть ее кнопкой мыши. Второй способ вам, вероятно, также знаком.

Он состоит в следующем: перемещая фокус между элементами управления формы нажатием клавиши <ТаЬ>, установите его на кнопку управления и затем нажмите клавишу <Enter> или <Spacebar>.

Кроме того, существует еще три способа выбора кнопки управления, задаваемые при ее создании:

  • клавиша быстрого доступа. Для выбора кнопки необходимо нажать комбинацию клавиш <Alt>+< подчеркнутая клавиша в названии кнопки>;
  • клавиша <Enter>, если для свойства Default кнопки установлено значение True, т. е. она объявлена кнопкой по умолчанию формы;
  • клавиша <Esc>, если для свойства cancel кнопки установлено значение True, т. е. она объявлена кнопкой отказа формы.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Список ListBox

Элемент управления ListBox, размещенный в форме, представляет собой список, из которого пользователь может выбрать одно из предложенных значений. Значения в списке могут размещаться в одну или несколько колонок. Количество колонок задается свойством Columns (Колонки). В том случае, если элементы списка не помещаются в выделенную для них в форме область, появляются полосы прокрутки, позволяющие просмотреть весь список.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление элементов в список

Элементы в список могут добавляться во время разработки и программно с использованием метода Additem. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные не обязательно вводить в алфавитном порядке, т. к. их можно упорядочить, установив для свойства Sorted (Сортировка) значение True. В этом случае вновь вводимые элементы списка также будут располагаться в алфавитном порядке.

Предупреждение

Нежелательно использовать сортировку, если данные в список будут добавляться методом Additem с использованием параметра index.

Для добавления элементов в список программным способом предназначен метод AddItem, имеющий следующий синтаксис:

NameList.AddItem выражение [, index]

где:

  • NameList — наименование списка, задаваемое свойством Name;
  • выражение — элемент списка. Если это символьная величина, то она должна быть помещена в кавычки;
  • index — порядковый номер элемента в списке. Если этот параметр отсутствует, элемент добавляется в конец списка.

    Замечание

    При использовании параметра index необходимо учитывать, что нумерация элементов начинается с 0.

Например, для программного формирования списка городов вам необходимо задать следующую процедуру:

Private Sub Form Load()

List1.AddItem "Москва"

List1.AddItem "С.Петербург"

List1.AddItem "Псков"

List1.AddItem "Новгород"

List1.AddItem "Чебоксары" End Sub

На рис. 8.10 показано окно редактора кода, содержащего процедуру формирования списка городов.

Рис. 8.10. Окно редактора кода с процедурой, формирующей список

Города в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если строку кода List1.Additem "Чебоксары" заменить строкой

List1.Additem "Чебоксары", 0

то в списке городов Чебоксары будут помещены в первую позицию (рис. 8.11).

Рис. 8.11. Использование параметра index позволяет задать порядок элементов в списке


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление элементов из списка

Visual Basic позволяет программно удалять элементы из списка с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.RenioveItem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, чтобы удалить из созданного нами в предыдущем примере списка List1 второй элемент, необходим следующий программный код:

List1.Removeitem 1

Совет

Чтобы удалить все элементы из списка, можно использовать метод clear (Очистить). В этом случае программный код выглядит так: List1.Clear.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойства ListCount и Listlndex

Свойство ListCount позволяет определить количество элементов в списке. Это значение можно использовать, например, в том случае, если вы хотите обрабатывать элементы списка в цикле. Свойство Listlndex показывает номер выбранного элемента. При выборе первого элемента списка значение свойства равно 0 исходя из того, что нумерация элементов начинается с 0. Если выбран пятый элемент, значение свойства Listlndex будет равно 4.

Рассмотрим пример использования свойства Listindex. В форме, содержащей список ListBox, разместим текстовое поле, в котором будет отображаться выбранное из списка значение (рис. 8.12). Откройте окно редактора кода списка и для события click задайте следующую процедуру:

Private Sub List1_Click()

Text1.Text = List1.List(List1.Listindex)

End Sub

Запустите форму на выполнение. Выбираемое из списка значение отображается в расположенном рядом с ним текстовом поле.

Замечание

Свойства ListCount и Listindex доступны только при выполнении.

Рис. 8.12. Использование свойства Listindex для просмотра выбранного из списка элемента


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стиль оформления списка

Для управления внешним видом списка используется свойство style (Стиль). Оно содержит два значения: Standard и CheckBox. По умолчанию используется значение Standard, которое мы уже рассматривали ранее. При установке для свойства style значения CheckBox элементы списка оформлены в виде флажков. На рис. 8.13 показаны два вида списков в зависимости от значения свойства Style.

Рис. 8.13. Два стиля оформления списков в зависимости от значения свойства Style

Совет

Для изменения значения свойства Style во время выполнения приложения можно использовать константы Visual Basic vbListBoxStandard и vbListBoxCheckBox.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Выбор нескольких элементов из списка

Программа Visual Basic позволяет использовать списки, предоставляющие пользователю выбирать из него несколько элементов. Для создания таких списков предназначено свойство Multiselect (Множественный выбор). Оно может принимать значения, представленные в табл. 8.3.

Таблица 8.3. Значения свойства Multiselect
Значение свойства | Описание
0-Non (Нет) | Стандартный список, используемый по умолчанию. Позволяет выбирать одно значение
1-Simple (Простой множественный выбор) | Разрешен выбор нескольких элементов щелчком мыши или нажатием клавиши <Spacebar> (Пробел). Для отмены выбора необходимо щелкнуть мышью или нажать клавишу <Spacebar> еще раз
2-Extended (Расширенный множественный выбор) | Разрешен выбор нескольких элементов с помощью способа, используемого в Windows. Для выбора элементов, расположенных подряд, необходимо при нажатой клавише <Shift> выбрать первый элемент из выбираемых, а затем последний. При этом будут выбраны все размещенные между ними элементы. Для выбора элементов, расположенных не по порядку, необходимо нажать клавишу <Ctrl> и, удерживая ее нажатой, выделить требуемые элементы списка

Для обработки множественного выбора нельзя использовать свойство Listindex, применяемое при работе с обычными списками. Выбор нескольких элементов списка фиксируется в свойстве Selected, являющимся массивом, размерность которого равна количеству элементов в списке (определяется свойством ListCount). Выбранному элементу списка соответствует значение True соответствующего элемента свойства selected, а остальным — False.

Рассмотрим пример использования свойства Selected. Разместим в форме два списка. В первый список введем элементы с использованием свойства List. Список элементов во втором списке будет формироваться при перемещении на него фокуса после выбора элементов первого списка. Таким образом, второй список будет содержать выбранные в первом списке элементы. Для создания приложения выполните следующие действия:

1. Разместите в форме два списка с помощью кнопки ListBox на панели элементов управления.

2. Используя свойство List первого списка, введите элементы списка.

3. Чтобы разрешить выбор из первого списка нескольких элементов, установите для свойства Multiselect значение 1-Simple.

4. Теперь необходимо задать процедуру формирования элементов второго списка при перемещении на него фокуса. Для этого дважды щелкните мышью на втором списке.

5. В открывшемся окне редактора кода из списка Procedure выберите событие GotFocus (Получение фокуса) и введите следующий код:

Private Sub List2_GotFocus()

List2.Clear

For i = 0 To List1.ListCount — 1

If List1.Selected(i) Then List2.Addltem (List1.List (i))

Next

End Sub

На рис. 8.14 представлен полученный результат.

Рис. 8.14. Отображение выбранных значений во втором списке


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Списки типа ComboBox

Списки типа СоmbоВох называют раскрывающимися или полями со списком. Оба этих названия верны. Раскрывающимися их называют потому, что для выбора значения из списка, имеющего установленные по умолчанию свойства, сначала необходимо открыть список, нажав кнопку со стрелкой, расположенную с правой стороны поля ввода. Второе название поле со списком они получили потому, что список типа ComboBox совмещает функции списка и поля ввода. Иными словами, можно не только выбирать данные из списка, но и вводить в поле ввода в верхней части новые значения. Использование списков ListBox дает возможность выдавать большой объем информации, экономя при этом место в форме.

Стилем оформления списка типа comboBox управляет свойство style. Оно может принимать значения, представленные в табл. 8.4.

Таблица 8.4. Значения свойства Style
Значение свойства | Описание
0-Dropdown Combo | Стиль, используемый по умолчанию. Данный список показан на рис. 8.15 слева. Пользователь может ввести значение в текстовое поле, расположенное в верхней части списка, либо открыть список, нажав кнопку с направленной вниз стрелкой с правой стороны поля, и выбрать требуемое значение. Выбранное значение переносится в текстовое поле
1-Simple Combo | Вид данного списка показан на рис. 8.15 в центре. При данном значении список отображается в форме в открытом состоянии. Если все элементы в нем не помещаются, появляется вертикальная полоса прокрутки. Пользователь может ввести значение в текстовое поле, располагающееся в верхней части списка, либо выбрать требуемое значение, которое будет перенесено в текстовое поле
2-Dropdown List | Вид данного списка показан на рис. 8.15 справа

Рис. 8.15. Стили оформления списка типа ComboBox

Замечание

Для установки значения Style можно использовать также внутренние константы Visual Basic vbComboDropDown, vbComboSimple, И vbComboDropDownLis; соответственно.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Добавление элементов в список типа ComboBox

Элементы в список типа ComboBox могут добавляться во время разработки с помощью свойства List и программно с использованием метода Additem так же, как в список типа ListBox. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные, отображаемые списком, можно упорядочить, установив для свойства Sorted (Сортировка) значение True.

Для добавления элементов в список программно используется метод Additem, имеющий приведенный ниже синтаксис:

NameList.AddItem выражение [, index]

где:

  • NameList — наименование списка, задаваемое свойством Name;
  • выражение — элемент списка. Если' это символьная величина, то она должна быть помещена в кавычки;
  • index — порядковый номер элемента в списке.

    Замечание

    Если при добавлении элементов в список параметр index отсутствует, то элемент добавляется в конец списка.

Обычно для программного формирования списка используется процедура Form_Load обработки события. Например, чтобы программно сформировать элементы для списка типа соmbоВох, содержащего список городов, вам достаточно задать следующую процедуру:

Private Sub Form Load()

Combo1.Additem "Москва"

Combo1.Additem "С.Петербург"

Combo1.Additem "Псков"

Combo1.Additem "Новгород"

Combo1. Additem "Чебоксары"

End Sub

Если при формировании списка вы не используете параметр index, элементы в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если к приведенной ниже процедуре добавить строку кода

Combo1.AddItem "Киев",0

то в списке городов Киев будет помещен в первую позицию, а все остальные элементы смещены на одну позицию вниз.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Удаление элементов из списка типа СоmbоВох

Удаление элементов из списка типа СотЬоВох осуществляется с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.Removeltem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, для удаления из списка, имеющего наименование combol, первого элемента, можно использовать следующий код:

Combo 1. RemoveItem 0

Для удаления всех элементов из списка можно использовать метод clear (Очистить). В этом случае программный код выглядит так: combol. clear.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Доступ к элементам списка

Для получения доступа к выбранному элементу списка типа comboBox можно использовать свойство Text. Значением этого свойства является введенное в текстовое поле списка (для списков, у которых значение style равно 0-Dropdown Combo или 1-Simple Combo) или выбранное из списка значение.

Чтобы получить доступ к элементам списка, используйте свойство List. Значения этого свойства являются массивом, размерность которого равна значению свойства ListCount, то есть количеству элементов в списке. Например, значение первого элемента списка будет равно combol. List (0), второго — Combo1.List (1) и т.д.

Для определения положения элемента в списке типа ComboBox можно использовать свойство Listindex. Например, при выборе первого элемента списка значение свойства Listindex будет равно 0.

Замечание

Значение свойства Listindex равно -1, если из списка не выбран элемент, а также если элемент в текстовое поле списка введен пользователем вручную.

Для получения индекса последнего добавленного в список элемента можно использовать свойство Newindex (Новый индекс).


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Линии и контуры

Visual Basic позволяет размещать в форме линии, прямоугольники, скругленные прямоугольники, круги, эллипсы, используемые для объединения в группу схожих по смыслу объектов и улучшения внешнего вида формы.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Линия

Для добавления в форму линии используется кнопка Line (Линия) на панели элементов управления. Установите указатель мыши в то место, где должна начинаться линия, и, не отпуская кнопку мыши, перемещайте его до получения линии нужной длины.

Свойство Borderwidth (Ширина границы) позволяет задать толщину линии. Для изменения толщины, заданной по умолчанию, введите в правый столбец свойства число, которое будет определять толщину линии.

Для изменения размеров линии и ее положения можно использовать мышь и клавиатуру аналогично тому, как это делается для всех элементов управления в форме. Помимо этого, можно использовать свойства X1, X2, YI и Y2, позволяющие изменять перечисленные параметры программно. Свойства X1и YI определяют, соответственно, горизонтальное и вертикальное положение левого края линии, а свойства X2 и Y2 — правого края.

Чтобы задать цвет линии, используйте свойство BorderColor (Цвет границы).

С помощью свойства BorderStyle (Стиль границы) можно указать стиль линии, используя значения, указанные в табл. 8.5.

Таблица 8.5. Значения свойств BorderStyle
Значение | Стиль линии
0-Transparent | Линия отсутствует (имеет цвет фона)
1-Solid | Тонкая линия
2-Dash | Штриховая линия
3-Dot | Пунктирная линия
4-Dash-Dot | Штрихпунктир
5-Dash-Dot-Dot | Штрихпунктир с двойным штрихом
6-lnside Solid | Непрерывная линия

Типы линии в зависимости от значения свойства BorderStyie показаны на рис. 8.16. Для значения 0-Transparent линия не приводится, т. к. она все равно не видна в форме.

Рис. 8.16. Элемент управления Line


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Контуры

Для добавления в форму контура предназначена кнопка Shape (Контур) на панели элементов управления. Она позволяет создавать в форме прямоугольник, квадрат, овал, окружность, прямоугольник и квадрат со скругленными углами.

Чтобы разместить в форме одну из вышеперечисленных фигур, выполните следующие действия:

1. Нажмите кнопку Shape (Контур) на панели элементов управления.

2. Установите указатель мыши в то место, где должен начинаться объект, и, не отпуская кнопку мыши, переместите указатель до получения контура требуемого размера.

3. Для придания созданному объекту требуемой формы, установите одно из следующих значений свойства shape, представленных в табл. 8.6.

Таблица 8.6. Значения свойства shape
Значение свойства | Контур
0-Rectangle | Прямоугольник
1-Square | Квадрат
2-Oval | Овал
3-Circle | Окружность
4-Rounded Rectangle | Прямоугольник со скругленными углами
5-Rounded Square | Квадрат со скругленными углами

На рис. 8.17 приведены стандартные контуры, создаваемые в Visual Basic.

Совет

При создании стандартных контуров можно использовать внутренние константы Visual Basic:vbShapeRectangle, vbShapeSquare,vbShapeOval,vbShapeCircie, vbShapeRoundedRectangle И vbShapeRoundedSquare.

Рис. 8.17. Стандартные контуры

Используя свойство BackStyle, укажите, будет ли созданный объект прозрачным.

С помощью свойства Fillstyle можно задать узор заполнения, используя значения из табл. 8.7.

Таблица 8.7. Значения свойства FillStyle
Значение | Узор заполнения
0-Solid | Сплошное заполнение
1-Transparent | Нет заполнения
2-Horizontal Line | Горизонтальная штриховка
3-Vertical Line | Вертикальная штриховка
4-Upward Diagonal | Штриховка по диагонали слева направо
5-Downward Diagonal | Штриховка по диагонали справа налево
6-Cross | Горизонтально-вертикальная штриховка
7-Diagonal Cross | Штриховка по диагонали в обоих направлениях

Свойство FillColor позволяет задать цвет узора заполнения объекта, а свойство BackColor (Цвет фона) — цвет фона.

Свойство BorderStyle предназначено для задания стиля рамки объекта. Оно содержит те же значения, что и для линии.

Для придания контуру объемности используйте свойство SpecialEffect.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Полосы прокрутки

В Visual Basic существуют элементы управления VScrollBar и HScrollBar, называемые полосами прокрутки (рис. 8.18), для размещения в форме которых используются кнопки VScrollBar и HScrollBar на панели элементов управления. Если вы знакомы с документами программы Microsoft Word и другими программными продуктами, работающими в среде Windows, то имеете представление о полосах прокрутки. С ними мы также сталкивались при работе с многострочными текстовыми полями и списками, в которых информация не помещалась целиком в окне просмотра. Элементы управления VScrollBar и HScrollBar отличаются от полос прокрутки, встроенных в перечисленные элементы, так как существуют самостоятельно и используются для управления вводом параметра, значение которого может меняться в некотором диапазоне.

Рис. 8.18. Элементы управления

VScrollBar и HScrollBar


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Размещение полосы прокрутки и настройка свойств

Основные свойства, характеризующие элементы управления типа VScrollBar и HScrollBar, представлены в табл. 8.8.

Таблица 8.8. Свойства элементов управления VScrollBar и HScrollBar
Свойство | Назначение
LargeChange, SmallChange | Задают величины, на которые будет смещаться ползунок при щелчке кнопкой мыши на полосе или стрелке прокрутки
Min, Max | Задают диапазон вводимых с помощью полосы прокрутки чисел
Value | Целое число, соответствующее положению ползунка на полосе прокрутки

После размещения полосы прокрутки в форме необходимо, используя свойства Min и мах, задать диапазон значений, устанавливаемых с помощью данного элемента управления. Свойство value (Значение) определяет текущее положение бегунка на полосе прокрутки. Значения данных свойств могут быть только целыми числами и лежать в диапазоне от —32768 до +32767. При этом не обязательно, чтобы значение, задаваемое свойством Min, было меньше значения свойства мах. Вы можете использовать бегунок для отображения данных от большего значения к меньшему.

Значение свойства value меняется при перемещении бегунка и щелчке мыши на полосе прокрутки или на стрелках, расположенных по краям полосы. Для задания величины, на которую будет меняться значение свойства value при щелчке мыши на стрелках, находящихся по краям полосы прокрутки, используется свойство SmallChange (Малое смещение). С помощью свойства LargeChange (Большое смещение) можно задать величину, на которую будет смещаться ползунок при щелчке кнопкой мыши на полосе прокрутки. По умолчанию оба этих свойства имеют значение 1. На практике, свойство smallchange используют для более плавного изменения значения свойства value. Для свойства LargeChange устанавливают значение, равное, примерно, 10% от диапазона изменения свойства value.

Элементы управления типа VScrollBar и HScrollBar для отображения свойства value используют следующие события:

Событие | Назначение
Change | Событие наступает после перемещения бегунка в момент отпускания кнопки мыши или после щелчка мышью в области полосы прокрутки или на кнопках с изображениями стрелок
Load формы | Позволяет получить начальное значение свойства Value при загрузке формы
Scroll | Позволяет получить значение свойства Value при перемещении бегунка до возникновения события change

Рассмотрим пример использования в форме полос прокрутки. Разместим в форме элемент управления shape. Затем добавим в форму элементы управления vscroliBar и HScrollBar. Значение горизонтальной полосы прокрутки будем использовать для изменения формы объекта, задаваемой свойством shape, а значение вертикальной — для задания стиля оформления контура (рис. 8.19).

Рис. 8.19. Использование элементов управления VScrollBar и HScrollBar

Выполните следующие действия:

1. Используя кнопку Shape на панели элементов управления, разместите в форме контур.

2. Разместите в форме горизонтальную и вертикальную полосы прокрутки, воспользовавшись, соответственно, кнопками HScrollBar и VScrollBar на панели элементов управления.

3. Горизонтальную полосу прокрутки будем использовать для изменения типа контура. Свойству Min присвоите значение 0, а свойству мах — значение 5, так как свойство shape (Контур) может принимать значения от О до 5.

4. Вертикальная полоса прокрутки будет служить для изменения стиля оформления контура. Свойству Min присвойте значение 0, а свойству мах — значение 6, так как свойство BorderStyle (Стиль границы) может принимать значения от 0 до 6.

5. В окне редактора кода, используя событие Change, возникающее после перемещения бегунка в момент отпускания кнопки мыши, а также после щелчка мышью в области полосы'прокрутки или на кнопках с изображениями стрелок, расположите следующий код:

Private Sub HScroll1_Change()

Shape1.Shape = HScroll1.Value

End Sub

Private Sub VScroll1_Change()

Shapel.BorderStyle = VScroll1.Value

End Sub

Запустите форму на выполнение. Перемещая поочередно движки полос прокрутки, вы сможете наблюдать, как изменяется тип контура и стиль обрамления.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Frame

Элемент управления Frame является контейнером и служит для объединения других элементов в группу, после чего помещенными в него объектами можно управлять как единым целым. Например, элемент управления Frame можно использовать для объединения в группу размещенных в форме и функционально связанных переключателей.

Для настройки внешнего вида элемента управления Frame применяются свойства, указанные в табл. 8.9.

Таблица 8.9. Свойства элемента управления Frame
Свойство | Назначение
Appearance | Свойство может принимать значения 0-Flat или 1-3D, задающие плоский или объемный вид рамки
BorderStyle | Определяет, будет ли вокруг группы присутствовать рамка. Может принимать значения 0-None (рамка и ее заголовок отсутствуют) и 1-Fixed Single (рамка присутствует)
Caption | Определяет текст, располагающийся в левом верхнем углу рамки. Если из свойства удалить текст, то группа будет объединена сплошной рамкой

На рис. 8.20 показано, как выглядит элемент управления Frame в зависимости от свойств объекта.

Рис. 8.20. Вид элемента управления Frame в зависимости от его свойств


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание группы элементов

Элемент управления Frame (Рамка) используется в формах в основном для объединения элементов в группы. Например, вы хотите разместить в форме две группы переключателей, чтобы с помощью первой группы переключателей выбирать страну, а используя вторую группу — наименование города. Все добавляемые в форму переключатели автоматически объединяются в одну группу, если только вы предварительно не разместите в форме два объекта типа Frame и не будете помещать создаваемые переключатели в соответствующую рамку.

При использовании рамки для создания группы элементов выполните следующую последовательность действий:

1. Создайте в форме объект типа Frame с помощью кнопки Frame (Рамка) на панели элементов управления.

2. Разместите в рамке объединяемые в группу элементы (рис. 8.21). Для этого щелкните соответствующую кнопку на панели элементов управления, поместите указатель мыши в рамку и перемещайте его, не отпуская кнопку мыши, до получения требуемого размера создаваемого объекта.

Совет

Чтобы проверить, создана ли группа из расположенных в рамке элементов, выделите элемент управления Frame и переместите его. Если вместе с рамкой переместились расположенные внутри нее объекты, то они все объединены в группу.

Рис. 8.21. Размещенные внутри объекта Frame элементы являются группой

Нельзя поместить в группу элемент управления, размещенный в форме, простым перемещением. Если вы хотите переместить в группу находящийся в форме элемент, выполните следующие действия:

1. Выделите перемещаемый элемент.

2. Выполните команду Cut (Вырезать) меню Edit (Правка).

3. Установите указатель внутрь объекта Frame.

4. Выполните команду Paste (Вставить) меню Edit (Правка).

5. Переместите вставленный объект внутри рамки в требуемое место.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Таймер

В Visual Basic существует элемент управления, который обрабатывает данные системных часов. Этот объект называется таймером. Его можно использовать для выполнения определенных действий через заданный интервал времени.

Для размещения в форме таймера используется кнопка Timer (Таймер) на панели элементов управления формы. Объект данного типа обладает следующими свойствами:

Свойство | Назначение
Interval (Интервал) | Интервал активизации объекта в миллисекундах. Может принимать значение от 0 до 64767 (от 0 до 64,8 секунды)
Enabled .(Доступно) | Устанавливает режим работы таймера. Если значение свойства равно True (Истина), то таймер начинает отсчитывать время сразу же после запуска формы. В противном случае вы должны запустить таймер по какому-либо внешнему событию (например, при нажатии на кнопку). Установка для свойства значения False приостанавливает операции таймера

Событие Timer (Таймер) объекта-таймера наступает через каждый установленный в свойстве interval промежуток времени. В процедуре обработки данного события необходимо определить действия, выполняемые с заданной частотой.

Для запуска таймера можно использовать метод Reset (Установить). Этот метод не связан с каким-либо событием, поэтому вы должны выполнить его при наступлении каких-либо других событий, например при нажатии на кнопку запуска таймера.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование таймера

Использование объекта-таймера рассмотрим на примере формы, в которой через заданный интервал времени на экран будет выводиться системное время компьютера. Для создания данной формы выполните следующие действия:

1. Откройте окно для создания нового проекта.

2. Поместите в форму метку для отображения текущего системного времени. Создайте пояснительную надпись к метке.

3. Для создания объекта-таймера нажмите кнопку Timer (Таймер) на панели элементов управления и расположите его в форме.

Замечание

Размещенный в форме элемент управления Timer изображается в виде значка, показанного на рис. 8.22. При запуске формы на выполнение он становится невидимым пользователю приложения.

Рис. 8.22. форма с размещенным в ней объектом Timer

4. Определите интервал времени, через который необходимо производить обновление времени в форме. Для этого воспользуйтесь свойством interval, значение которого задается в миллисекундах. Для обновления времени каждую секунду введите значение 1000.

5. Откройте окно редактора кода и создайте простую процедуру, присваивающую свойству caption метки текущее время:

Private Sub Timer1 Timer()

Label1.Caption = Time

End Sub

Форма с размещенными элементами управления показана на рис. 8.22.

6. Сохраните созданную форму и запустите ее на выполнение. Вы увидите время, обновляемое каждую секунду (рис. 8.23).

Рис. 8.23. Использование таймера в форме


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование в форме графики

В Visual Basic для отображения в форме графики используются элементы управления image (Изображение) и picture (Графическое окно), создаваемые с помощью кнопок Image и PictureBox на панели элементов управления. Объект image позволяет разместить в форме графические изображения. Более широкое назначение имеет объект Picture, используемый как для размещения графических изображений, так и в качестве контейнера для других элементов управления.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Image

Для размещения изображения в форме выполните следующие действия:

1. Нажмите кнопку Image.

2. Установите указатель мыши в том месте формы, где вы хотите разместить изображение, и, удерживая кнопку мыши в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка требуемого размера.

3. Откройте окно свойств Properties для созданного объекта.

4. Для задания имени графического файла предназначено свойство picture (Изображение). Выберите данное свойство, а затем нажмите кнопку, расположенную в правом столбце. Откроется диалоговое окно Load Picture.

Замечание

Чтобы указать наименование графического файла, задаваемого объектом Image, во время выполнения приложения, можно использовать функцию LoadPicture.

5. Выберите графический файл в одном из следующих форматов:

  • Bitmap — растровое изображение с расширением bmp или dib;
  • ICON — растровое изображение с-расширением ico, имеющее размер 16х16 или 32х32 пикселов и называемое значком;
  • Cursor — растровое изображение с изображением курсора. Имеет расширение сиг;
  • Metafile — метафайл, представляющий собой изображение в виде закодированных линий и образов. Расширение — wmf и emf (расширенный метафайл);
  • файлы в формате jpeg или gif.

6. Нажмите кнопку Открыть. Изображение разместится в форме (рис 8.24).

Рис. 8.24. Размещение графического изображения в форме

Размещенное в форме графическое изображение можно поместить в рамку, выбрав значение 1-Fixed Single свойства BorderStyle. Если при использовании рамки свойство Appearance (Оформление) имеет значение 1-3D, то рамка будет придавать изображению объемность.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Свойство Stretch

Для настройки свойств размещенного в форме графического объекта можно использовать свойство stretch (Растягивание). По умолчанию установлено значение False, указывающее, что при изменении размеров объекта Image размер изображения остается неизменным. Если для свойства Stretch установлено значение True, то при изменении размеров объекта будут соответственно меняться размеры изображения, что может привести к искажению изображения при несоответствии размеров объекта и изображения (рис. 8.25).

Рис. 8.25. Установка для свойства Stretch значения True может привести к искажению изображения

Объекты Image распознают событие click (Нажатие), что позволяет использовать их в качестве графических кнопок управления, например, при создании панели инструментов приложения. При этом необходимо учитывать, что нажатие объекта image не приводит к его вдавливанию, наблюдаемому при нажатии кнопки.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Способы загрузки изображения

Загружать графическое изображение в объект image можно в процессе разработки приложения, а также программно при его выполнении.

Чтобы загрузить изображение при разработке, можно применить два способа. Первый из них мы рассмотрели. Он состоит в использовании свойства Picture: после размещения в форме объекта image вы открываете окно свойств Properties, в правом столбце свойства picture нажимаете кнопку с тремя точками, а затем в открывшемся диалоговом окне Load Picture выбираете требуемый файл.

Второй способ предполагает использование графического изображения, подготовленного в другом приложении, и перенесенного в форму с помощью буфера обмена Windows. Он состоит в следующем:

1. Подготовьте в графическом редакторе изображение.

2. Скопируйте его в буфер обмена Windows.

3. Перейдите в программу Visual Basic.

4. Разместите в форме объект image, используя одноименную кнопку на панели элементов управления.

5. Выберите элемент управления image, чтобы он стал активен.

6. Вставьте в него изображение из буфера обмена, выбрав команду Paste (Вставить) меню Edit (Правка) или нажав комбинацию клавиш <Ctrl>+<V>.

На рис. 8.26 показано графическое изображение, вставленное в объект image формы из буфера обмена Windows.

Рис. 8.26. Вставленное из буфера обмена Windows в объект Image графическое изображение

Для загрузки изображения в объект image во время выполнения приложения используется свойство picture и функция LoadPicture следующего вида:

Image1.Picture = LoadPicture ("имяфайла")

где имяФайла — это имя файла с указанием полного пути к нему. Например, если графический файл Test_image.bmp расположен в папке \Sample диска С, то функция будет выглядеть так:

Imagel.Picture = LoadPicture ("с:\Sample\Test_image.bmp")

Для того чтобы очистить элемент управления image от размещенного в нем изображения, можно воспользоваться функцией LoadPicture следующего вида:

Image1.Picture = LoadPicture


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Picture

Элемент управления picture (Графическое окно), размещаемый в форме с помощью кнопки PictureBox на панели элементов управления, обладает более широким набором свойств и методов, чем объект image. Он может использоваться для следующих целей:

  • для отображения графических изображений;
  • в качестве контейнера для других элементов управления;
  • в виде графического окна для вывода текста, графических элементов, анимации.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Отображение графических изображений

Для отображения графических изображений с помощью элемента управления picture используется свойство picture, значением которого является наименование графического файла. Объект данного типа позволяет отображать в форме графические файлы тех же форматов, что и элемент управления Image.

Для загрузки изображения в объект picture во время выполнения приложения применяется свойство Picture и функция LoadPicture следующего вида:

Picture1.Picture = LoadPicture ("имяФайла")

где имяФайла — это имя файла с указанием полного пути к нему.

Объект Picture характеризуется свойством AutoSize. Если это свойство имеет значение True, то при изменении размера графического изображения меняются и размеры объекта. При установке значения False усекается нс поместившаяся в объект часть изображения.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование объекта Picture в роли контейнера

Элемент управления picture можно использовать в качестве контейнера для объединения объектов в группы аналогично объекту Frame. Расположенные в графическом окне элементы будут перемещаться вместе с ним, что удобно при создании панелей инструментов, строки состояния.

Замечание

Для создания строки состояния удобнее использовать стандартный элемент управления Microsoft StatusBar (Строка состояния).


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Использование объекта Picture для вывода текста и графических элементов

Объект picture можно использовать в качестве графического окна, в которое выводится текст и графические элементы.

Для вывода в графическое окно текста предназначен метод print. Программное размещение графических элементов осуществляется с использованием методов circle (Окружность), Line (Линия), Point (Точка), Pset (Набор точек). Метод PaintPicture позволяет создавать в графическом окне анимацию.

Замечание

Чтобы объект picture можно было использовать для вывода графических элементов и их перевывода при изменении размеров графического окна, необходимо установить значение его свойства AutoRedraw в True.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Стандартные элементы управления Microsoft

Все рассмотренные нами ранее элементы управления, помещаемые в формы, по умолчанию были помещены на панель элементов управления. Помимо них, в состав Visual Basic входит группа элементов для разработки программ,' называемая стандартными элементами управления Microsoft. С их помощью можно создавать панели управления, строки состояния, отображать данные различными способами. В табл. 8.10 приведен список стандартных элементов управления Microsoft с их кратким описанием.

Таблица 8.10. Стандартные элементы управления Microsoft
Элемент управления | Назначение
Animation | Предназначен для воспроизведения не озвученных видеоклипов
CoolBar | Служит контейнером для других элементов управления и используется для создания панелей инструментов
DTPicker | Используется для ввода дат вручную или выбором из элемента управления MonthView
ImageCombo | Усовершенствованный вариант поля со списком
ImageList | Содержит список графических изображений, предназначенных для использования других элементов управления
ListView | Список, позволяющий осуществлять настройку внешнего вида
MonthView | Элемент управления в виде календаря. Позволяет вводить дату
ProgressBar | Индикатор состояния
Slider | Регулятор в виде ползунка
StatusBar | Строка состояния
TabStrip | Создает в форме вкладки
TreeView | Представляет информацию в виде древовидной структуры
ToolBar | Используется для создания панелей инструментов
UpDown | Позволяет создавать кнопки со стрелками, нажатие которых приводит к изменению значения числового параметра

По умолчанию стандартные элементы управления Microsoft не размещены на панели элементов управления. Чтобы их туда добавить, выполните следующие действия:

1. В меню Project (Проект) выберите команду Components (Компоненты) или нажмите комбинацию клавиш <Ctrl>+<T>. Открывается диалоговое окно Components (рис. 8.27).

Рис. 8.27. Диалоговое окно Components

2. На вкладке Controls (Элементы управления) расположен список групп элементов управления. Требуемые нам стандартные элементы управления Microsoft размещены в следующих группах:

  • Microsoft Windows Common Controls 6,0;
  • Microsoft Windows Common Controls-2 6.0;
  • Microsoft Windows Common Controls-3 6.0. Установите для этих групп флажки.

3. Нажмите кнопку ОК. Выбранные нами элементы управления будут добавлены на панель (рис. 8.28).

Рис. 8.28. Панель элементов управления с добавленными стандартными элементами управления Micrisoft

Замечание

После добавления стандартных элементов управления Microsoft на панель инструментов сохраните проект, в котором вы хотите использовать эти элементы. В следующий раз при открытии этого проекта вам не придется снова размещать стандартные элементы управления Microsoft на панели инструментов, так как они там будут находиться по умолчанию.

Если вы хотите разместить на панели элементов управления не все элементы, а только необходимые вам в проекте, то не обязательно в диалоговом окне Components устанавливать флажки для всех трех групп. Группы содержат следующие элементы управления:

Наименование группы | Элементы управления
Microsoft Windows Common Controls 6.0 | ImageCombo, ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, TreeView, ToolBar
Microsoft Windows Common Controls-2 6.0 | Animation, DTPicker, MonthView, UpDown
Microsoft Windows Common Controls-3 6.0 | CoolBar

Рассмотрим использование некоторых стандартных элементов управления Microsoft в формах.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления ImageList

Элемент управления ImageList является списком, содержащим графические изображения. Изображения, размещенные в этом объекте, не видны во время выполнения, так как объект ImageList используется только для их хранения. Для отображения в форме изображения, расположенного в ImageList, необходимо использовать другие элементы управления, например, ImageCombo.

Чтобы поместить в форму элемент управления ImageList и настроить его свойства, выполните следующее:

1. Нажмите кнопку ImageList на панели элементов управления, установите курсор в форму и нарисуйте рамку небольшого размера.

2. Откройте окно свойств Property Pages (рис. 8.29) для размещенного в форме объекта. Для этого установите на него курсор, нажмите правую кнопку мыши и в открывшемся контекстном меню выберите команду Properties.

3. Откройте вкладку Images, предназначенную для помещения в список графических изображений.

4. Для добавления в список графического изображения нажмите кнопку Insert Picture (Вставить рисунок). С помощью открывшегося диалогового окна Select picture (Выбор рисунка) выберите требуемое изображение и нажмите кнопку Открыть. Изображение будет помещено в область Images одноименной вкладки. В поле Index (Индекс) автоматически появляется значение 1, показывающее индекс размещенного в список графического изображения.

5. В поле Key (Идентификатор) введите имя изображения, по которому можно будет обращаться к данному элементу списка без указания его порядкового номера в списке.

6. Повторяя действия, описанные в пунктах 4 и 5, введите все элементы списка.

Замечание

В графический список imageList можно помещать графические файлы разных форматов. Это могут быть растровые изображения, значки, указатели мыши, файлы в формате GIF и JPEG.

Рис. 8.29. Окно свойств элемента управления ImageList

Управлять (удалять, добавлять, изменять) графическими изображениями в элементе управления imageList можно программно, учитывая при этом, что каждое изображение будет являться частью коллекции с названием ListImages.

Замечание

Понятие коллекция введено в Visual Basic для облегчения изменения свойств группы объектов. Если элементы входят в коллекцию, для изменения их общего свойства можно использовать наименование коллекции и специальную форму оператора цикла For. Иными словами, коллекцию можно сравнить с массивом переменных, так как обращаться к входящим в нее объектам можно как к элементам массива.

Например, чтобы добавить графическое изображение в объект imageList, имеющий название ImageList_test, необходим следующий программный код:

ImageList_test.Add,, LoadPicture("с:\Му bookAPhone.bmp")

Рис. 8.30. Использование элемента управления ImageList для изменения фона формы

Рассмотрим пример использования графического изображения, помещенного в элемент управления imageList, в качестве фонового изображения формы:

1. Добавьте в список элемента управления imageList графическое изображение, которое вы хотите использовать в качестве фона для формы.

2. Откройте окно редактора кода и поместите в нем следующий код:

Private Sub Form Load()

Form1.Picture = ImageList test.Listlmages(6).Picture

End Sub

В этом коде ImageList_test — наименование объекта типа ImageList. ListImages (6) указывает, что выбирается шестой элемент из коллекции. Обращение к элементу списка осуществляется по индексу элемента.

3. Запустите форму на выполнение. Она изменит свой фон (рис. 8.30). Для ее фона использовано графическое изображение из коллекции изображений программы Windows. В нижней части показано открытое окно редактора кода.

Для обращения к элементу списка imageList можно использовать его идентификатор, вводимый в диалоговом окне Property Pages в поле Key. В этом случае программный код будет выглядеть так:

Private Sub Form_Load ()

Form1.Picture = ImageList_test.ListImages("Облака").Picture

End Sub


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления ImageCombo

Элемент управления ImageCombo представляет собой графическое поле со списком и аналогичен рассмотренному нами ранее объекту ComboBox. Но в отличие от последнего, объект типа imagecombo позволяет добавлять в раскрывающийся список не только текст, но и графические объекты.

Изображения, использующиеся в списке ImageCombo, должны быть помещены в элемент управления imageList, рассмотренный нами в предыдущем разделе этой главы.

Элементы списка ImageCombo являются объектами коллекции comboItem. Для них можно определить два индекса, задаваемых свойствами Image и SelImage, имеющими следующее назначение:

  • image — индекс изображения, выводимого в списке;
  • selimage — индекс выбранного или выделенного изображения.

    Замечание

    Если для элемента списка ImageCombo свойство SelImage не задано, то в левой стороне выбранного или выделенного в списке элемента выводится изображение, заданное свойством Image.

Чтобы добавить элементы в список или удалить их из него, используются методы Add (Добавить) и Remove (Удалить).

Рассмотрим пример отображения списком ImageCombo графических изображений, заданных элементом управления ImageList, показанным на рис. 8.29.

1. Откройте форму, содержащую элемент управления imageList с размещенными графическими изображения в виде кнопок. При размещении этого элемента в форме мы присвоили ему имя ImageList_test.

2. Разместите в форме элемент управления imageCombo. Для этого нажмите кнопку ImageCombo на панели элементов управления, установите указатель мыши в форму и нарисуйте рамку требуемого размера.

3. В окно редактора кода поместите следующую процедуру:

Private Sub Form Load()

ImageCombo1.ImageList = ImageList_test

ImageCombo1.ComboItems.Add,, "Звонок", 1

ImageCombo1.ComboItems.Add,, "Календарь", 2

ImageCombo1.ComboItems.Add,, "Чашка", 3

ImageCombo1.ComboItems.Add,, "Телефон", 4

ImageCombo1.ComboItems(3).Selected = True End Sub

Первая строка в программе указывает, что графические изображения для создаваемого нами списка типа ImageCombo выбираются из объекта с наименованием ImageList_test. Четыре строки добавляют в список графические элементы и текстовую информацию к ним с использованием следующего синтаксиса:

Add([Index], [Key], [Text], [Image], [SelImage], [Indentation]) As ComboItem

Параметр Text задает текст элемента списка, а изображение для него выбирается из объекта ImageList_test. Индекс изображения указывается с помощью параметра Image.

Последняя строка процедуры задает значение, выбираемое из списка по умолчанию.

4. Запустите форму на выполнение, и вы получите результат, показанный на рис. 8.31.

В рассмотренном нами примере для указания значения, выбираемого из списка imageCombo по умолчанию, мы использовали свойство selected, установив для него значение True:

ImageCombol.ComboItems(3).Selected = True

Для определения выбранного пользователем элемента списка можно программно опросить значение свойства SelectedItem. Текст выбранного элемента помещается в свойство Text.

Используя свойство indentation, можно задать отступы элементов в списке. Так удобнее отображать вложенную структуру списков. Для установки отступа свойству indentation необходимо присвоить целое значение, учитывая, что каждый уровень отступа равен 10 пикселам. Программный код для формирования списка, представленного на рис. 8.32, выглядит следующим образом:

Private Sub Form Load()

ImageCombo1.ImageList = ImageList test

ImageCombo1.ComboItems.Add,, "Звонок", 1

ImageCombo1.ComboItems.Add,, "Звонок!",,, 1

ImageCombo1.Comboltems.Add,, "Звонок2",,, 1

ImageCombo1.Comboltems.Add,, "Календарь", 2

ImageCombo1.Comboltems.Add,, "Календарь 1",,, 1

ImageCombo1.ComboItems.Add,, "Календарь2",,, 1

ImageCombo1.ComboItems.Add,, "Чашка", 3

ImageCombo1.ComboItems.Add,, "Телефон", 4

End Sub

Рис. 8.31. В верхней части находится форма с элементом управления imageCombo, в нижней — окно редактора кода с текстом программы

Рис. 8.32. С помощью свойства Indentation можно создать список, отдельные элементы которого имеют отступы


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления ProgressBar

Некоторые операции вашего приложения могут выполняться довольно долго, например, обработка большого массива данных или сложная выборка из базы данных, содержащей огромное количество записей. В этой ситуации пользователь начинает беспокоиться, не зависла ли программа. Работа продолжительных задач может сопровождаться отображением на экране индикатора процесса выполнения. Используем для этого стандартный элемент управления Microsoft ProgressBar (рис. 8.33).

Рис. 8.33. Использование в форме элемента управления ProgressBar

Настройка элемента управления ProgressBar достаточно проста. Для его размещения в форме используется кнопка ProgressBar на панели элементов управления. Основные свойства данного элемента управления перечислены в табл. 8.11.

Таблица 8.11. Свойства элемента управления ProgressBar
Свойство | Назначение
Height | Высота индикатора
Width | Ширина индикатора
Min | Минимальное значение свойства value. Задается в целых числах
Мах | Максимальное значение свойства Value. Задается в целых числах
Value | Значение свойства определяет, какая часть индикатора закрашена

Свойства Height и width определяют внешний вид индикатора. Значения данных параметров устанавливаются такими, чтобы ширина была значительно больше высоты. В этом случае процесс индикации более нагляден.

Свойства Min и мах задают диапазон изменения значения свойства value. По умолчанию они равны 0 и 100. Если, например, в вашем приложении определенные действия выполняются в цикле, то значения свойств Min и мах следует устанавливать исходя из параметров цикла. При этом в цикле необходимо обновлять значение свойства Value. Ниже приведен фрагмент программы, показывающий обновление данного свойства:

Dim i As Integer

i = 1

Do While i <= 1000

' На месте этих комментариев должны быть выполняемые в цикле действия ProgressBar1.Value = i

i = i + 1

Loop

Замечание

Значения свойств Min и Мах можно задавать как программно, так и в диалоговом окне Property Pages, открываемом при выборе команды Properties контекстного меню объекта ProgressBar.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления Slider

Элемент управления Slider представляет собой ползунок, позволяющий вводить в программу числовые значения. Он размещается в форме с помощью кнопки Slider на панели элементов управления.

Для управления внешним видом ползунка используются следующие свойства:
Свойство | Назначение
BorderStyle | Управляет наличием вокруг ползунка сплошной рамки. По умолчанию рамка отсутствует (рис. 8.34, слева)
Orientation | Задает горизонтальное или вертикальное расположение ползунка
TickStyle | Задает расположение делений на линейке бегунка (рис. 8.34, справа)
TickFrequency | Определяет частоту делений на линейке бегунка

Свойство TickStyle задает расположение делений на линейке бегунка и может принимать следующие значения:

  • O-sldBottomRight — у горизонтального бегунка деления расположены снизу, у вертикального — справа;
  • 1-sldTopLeft — у горизонтального бегунка деления расположены сверху, у вертикального — слева;
  • 2-sldBoth — деления расположены по обеим сторонам бегунка;
  • 3-sldNoTicks — деления отсутствуют.

Внешний вид бегунка меняется в зависимости от значения свойства Tickstyle (рис. 8.34).

Рис. 8.34. Оформление ползунка в зависимости от значений свойств BorderStyle и TickStyle

Помимо свойств, влияющих на оформление ползунка, он обладает свойствами, определяющими его поведение.

Свойство | Назначение
LargeChange | Задает величину, на которую будет смещаться ползунок при щелчке кнопкой мыши на линейке или нажатии клавиш <Pagellp> и <PageDown>
Small Change | Задает величину, на которую будет смещаться ползунок при нажатии клавиш < <-- > и < --> >
Min, Max | Задают диапазон значений ползунка
SelectRange | Определяет, сколько значений можно выбрать на линейке ползунка — одно или диапазон значений

После размещения бегунка, в форме необходимо задать диапазон значений, используя свойства Min и мах, устанавливаемые с помощью данного элемента управления. В свойстве value (Значение) хранится введенное посредством бегунка значение.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления StatusBar

Со строкой состояния вы постоянно сталкиваетесь при работе в различных приложениях Windows. Например, просматривая текст в Microsoft Word, вы по строке состояния ориентируетесь, на какой странице документа находитесь. При работе с таблицами базы данных вы обращаетесь к строке состояния, чтобы узнать номер обрабатываемой записи. Строка состояния используется в приложении для информирования пользователя о текущем состоянии приложения. Желательно, чтобы разрабатываемое вами приложение также имело строку состояния. До появления элемента управления StatusBar для создания строки состояния применялись искусственно выделяемые области с использованием других элементов управления, например PictureBox, в которых размещались соответствующие надписи.

Для создания в форме строки состояния с помощью стандартного элемента управления StatusBar выполните следующие действия:

1. Нажмите кнопку StatusBar на панели элементов управления.

2. Установите курсор мыши в любое место формы и нарисуйте рамку. Ее размеры и расположение не имеют значения, так как Visual Basic по умолчанию поместит ее внизу формы и растянет на всю ширину (рис. 8.35).

Рис. 8.35. Размещение в форме элемента управления StatusBar

3. Чтобы установить требуемую высоту строки состояния, используйте курсор мыши или свойство Height (Высота).

4. Если вы хотите, чтобы строка состояния располагалась в другом месте, скорректируйте свойство Align. Оно может принимать следующие значения:

  • vbAlignNone — строку состояния можно расположить в любой части формы;
  • vbAlignTop — строка состояния располагается в верхней части формы;
  • vbAlignBottom — строка состояния располагается в нижней части формы. Это значение устанавливается по умолчанию при создании объекта StatusBar. Такое положение формы более привычно для пользователя;
  • vbAlignLeft — строка состояния располагается по левому краю формы;
  • vbAlignRight — строка состояния располагается по правому краю формы.

5. Используя свойство Style, вы можете задать количество панелей, содержащихся в строке состояния. Свойство может принимать следующие значения:

  • sbrNormal — позволяет отобразить в строке состояния несколько панелей, каждая из которых предназначается для вывода параметров. Это значение используется по умолчанию при создании объекта StatusBar. Для настройки свойств панелей строки состояния используется диалоговое окно Property Pages;

    Замечание

    Каждая панель строки состояния является элементом коллекции панелей Panels. Нумерация панелей в коллекции начинается с 1. Количество панелей в строке состояния задается значением свойства count (Количество).

  • sbrSimple — позволяет отобразить в строке состояния одну панель, на которой отображается одна надпись, задаваемая свойством SimpieText.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Настройка панелей строки состояния

Каждая из панелей строки состояния настраивается отдельно. Для настройки панелей можно использовать диалоговое окно Property Pages (рис. 8.36), открываемое при выборе команды Properties контекстного меню объекта StatusBar.

Рис. 8.36. Вкладка Panels диалогового окна Property Pages

В верхней части вкладки Panels (Панели) диалогового окна Property Pages расположено поле index, указывающее номер панели, для которой в данный момент отображаются свойства. Кнопки Insert Panel (Добавить панель) и Remove Panel (Удалить панель) позволяют добавлять или удалять панель из строки состояния.

Замечание

Для программного добавления и удаления панелей используются методы коллекции Panels Add (Добавить) и Remove (Удалить). Для удаления всех панелей из строки состояния используется метод Clear (Очистить).

На вкладке Panels диалогового окна Property Pages можно, используя одноименные поля, настроить свойства панелей, перечисленные в табл. 8.12.

Таблица 8.12. Свойства панелей
Свойство | Назначение
Text | Задает текст, отображаемый на панели. Как правило, значение свойства формируется программно. Чтобы программно изменить значение, выводимое на панель, необходимо присвоить этому свойству текстовое значение. Например: StatusBar1.Panels(1).Text = "Новое значение, выводимое на панель"
ToolTipText | Задает текст подсказки, который будет появляться под курсором при установке его на панель и удерживании там некоторое время
Alignment | Определяет выравнивание информации, отображаемой на панели (по левому краю, по центру, по правому краю)
Style | Задает тип панели
Bevel | Управляет внешним видом панели, устанавливая разные типы эффекта объемности
AutoSize | Определяет, как будет задаваться размер панели
MinWidth | Минимальный размер панели
Picture | Графическое изображение, помещаемое на панель

Свойство style задает тип отображаемой на панели информации. Значения данного свойства представлены в табл. 8.13.

Таблица 8.13. Значения свойства style
Значение свойства | Назначение панели
sbrText | Отображает информацию, задаваемую свойствами Text или Picture
sbrCaps | Отображает состояние, в котором находится клавиша <Caps Lock>. При включении верхнего регистра появляется надпись CAPS
sbrNum | Отображает состояние, в котором находится клавиша <Num Locks». При активной клавише появляется надпись NUM
sbrIns | Отображает состояние, в котором находится клавиша <lnsert>. При активной клавише появляется надпись INS
sbrScrl | Отображает состояние, в котором находится клавиша <Scroll Lock>. При активной клавише появляется надпись SCRL
sbrTime | Показывает текущее время
sbrDate | Показывает текущую дату

Свойство AutoSize определяет, как будет задаваться размер панели из программы, и может принимать следующие значения:

  • NoAutoSize — размер панели задается свойством MinWidth. Это значение свойства Autosize используется по умолчанию;
  • sbrContents — размер панели задается исходя из размера выводимой на ней информации;
  • sbrSpring — размер панелей задается таким образом, чтобы они заполняли всю строку состояния.

Свойство Bevel управляет объемностью панели и может принимать следующие значения:

  • sbrNoBevel — плоская панель;
  • sbrlnsert — вдавленная панель (напоминает текстовое поле). Это значение используется по умолчанию;
  • sbrRaised — выпуклая панель (напоминает кнопку управления).


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления TabStrip

Visual Basic позволяет создавать формы, содержащие несколько вкладок. Объекты данного типа выгодно применять в тех случаях, когда необходимо разместить большой объем информации или для удобства пользователя требуется сгруппировать в одном месте основную, наиболее часто используемую информацию, отделив ее от менее важной.

Для создания вкладок в форме служит элемент управления TabStrip. Изучим, как разместить данный элемент в форме и настроить его свойства:

1. Откройте форму, в которой вы хотите создать вкладки.

2. Нажмите кнопку TabStrip на панели элементов управления.

3. Установите указатель в форму и, удерживая кнопку мыши в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка размером с форму.

4. Откройте окно свойств созданного объекта. Для этого установите на него курсор, нажмите правую кнопку мыши и выберите в контекстном меню команду Properties.

5. В открывшемся диалоговом окне Property Pages перейдите на вкладку Tabs.

6. Используя кнопку Insert Tab, добавьте в объект TabStrip необходимое количество вкладок.

7. Поле Index указывает номер вкладки, для которой настраиваются свойства. Выбирая поочередно номер нужной вкладки, введите их наименования с помощью свойства caption.

8. Нажмите кнопку ОК для закрытия диалогового окна. Ваша форма показана на рис. 8.37.

Замечание

Элемент управления TabStrip не является контейнером. Координаты размещенных в форме элементов управления задаются относительно самой формы, а не элемента управления TabStrip, и при его перемещении остаются на месте. Для того чтобы размещенные в форме элементы не загораживались объектом TabStrip, его необходимо поместить на задний план командой Send to Back.

Рис. 8.37. Элемент управления TabStrip


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления UpDown

Элемент управления UpDown предназначен для ввода пользователем числовой информации и представляет собой две кнопки с направленными в противоположные стороны стрелками (рис. 8.38). Этот объект служит только для совместной работы с элементами управления, которые могут использоваться для ввода числовой информации. Например, вы можете применять его для ввода чисел в текстовое поле. В этом случае каждое нажатие кнопки с направленной вверх стрелкой будет увеличивать, а нажатие кнопки с направленной вниз стрелкой — уменьшать размещенное в поле число на определенное значение.

Замечание

Элемент управления UpDown может быть расположен горизонтально. В этом случае кнопка с направленной влево стрелкой используется для уменьшения, а с направленной вправо стрелкой —для увеличения числового значения.

Рис. 8.38. Элемент управления UpDown, предназначенный для ввода числовых значений

Свойства элемента управления UpDown перечислены в табл. 8.14.

Таблица 8.14. Свойства элемента управления UpDown
Свойство | Назначение
Alignment | Указывает, слева или справа от связанного элемента будет располагаться элемент UpDown
AutoBuddy | При установке для данного свойства значения True в качестве связанного с объектом UpDown элемента управления будет использоваться ближайший подходящий объект
BuddyControl | Имя элемента управления, в который будет вводиться числовое значение с помощью элемента управления UpDown
Increment | Шаг, с которым будет изменяться числовое значение
Max | Максимально допустимое значение, вводимое с помощью элемента управления UpDown
Min | Минимально допустимое значение, вводимое с помощью элемента управления UpDown
Orientation | Определяет вертикальное или горизонтальное расположение кнопок в элементе управления
SyncBaddy | Предписывает обновлять значение связанного с ним элемента управления. Должно иметь значение True
Value | Предназначено для считывания значения, введенного с помощью элемента управления UpDown
Wrap | Служит для установки минимального значения при превышении максимального значения

Предупреждение

Для обновления значения, связанного с объектом UpDown элемента управления, значение свойства SyncBaddy обязательно должно быть равно True. Кроме того, необходимо учитывать, что при вводе в связанное поле информации с использованием клавиатуры, свойство value элемента управления UpDown не изменяется. Возникает ситуация, при которой свойство Value не отражает реального значения связанного с ним элемента управления. Чтобы этого избежать, необходимо обновлять значение свойства Value при возникновении события change для связанного элемента управления.

Помимо этого, элемент управления upDown распознает следующие события:

Событие | Возникает
Change | При изменении свойства Value
DownClick | При нажатии кнопки с направленной вниз стрелкой
UpClick | При нажатии кнопки с направленной вверх стрелкой


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Элемент управления MonthView

Элемент управления Monthview (рис. 8.39) представляет собой календарь, с помощью которого можно выбирать дату. В его верхней части расположены кнопки со стрелками, позволяющие перемещаться по месяцам. По умолчанию в нижней части календаря отображается текущая дата.

Рис. 8.39. Элемент управления Monthview, предназначенный для ввода дат

Для управления внешним видом календаря используются следующие основные свойства:

  • showToday — при установке значения True в нижней части календаря отображается текущая дата;
  • ShowweekNumbers — при установке значения True с левой стороны календаря отображается столбец с номерами недель. По умолчанию установлено значение False;
  • ScrollRate — определяет шаг, с которым будет осуществляться прокрутка календаря при нажатии кнопок перемещения по месяцам.

Метод DayBold позволяет выделить требуемые даты (например, праздники), полужирным шрифтом.

Свойства, перечисленные в табл. 8.15, позволяют изменить используемый по умолчанию цвет разделов календаря.

Таблица 8.15. Свойства, изменяющие цвет разделов календаря
Свойство | Назначение
ForeColor | Задает цвет дней месяца и линии, расположенной под днями недели
MonthBackColor | Задает цвет фона области, на которой расположены дни месяца
TitleBackColor | Задает цвет области заголовка календаря, в которой расположено название месяца
TitleForeColor | Задает цвет названия месяца
TrailingForeColor | Задает цвет дней не текущего месяца, если они отображаются в календаре

Рис. 8.40. Отображение в форме нескольких месяцев

В форме можно отобразить несколько месяцев, используя свойства MonthRows и MonthColunms. Максимально можно отобразить 12 месяцев. На рис. 8.40 показан календарь, для которого свойство MonthRows имеет значение 2, а свойство MonthColumns — 3.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с календарем

Чтобы определить выбранную в элементе управления Monthview дату, необходимо воспользоваться свойством Value. Помимо этого, данный элемент управления характеризуется дополнительными свойствами, позволяющими определить число, месяц и год выбранной из календаря даты, а также номер недели:

  • Day — день месяца;
  • Month — номер месяца;
  • Year — ГОД;
  • week — номер недели от начала года.

Рис. 8.41. Поля формы отображают выбранную из календаря дату

На рис. 8.41 показана форма, содержащая элемент управления Monthview, и поля, отображающие выбранную из календаря дату, номер месяца и год, а также окно редактора кода с командами. Для отображения параметров в процедуру обработки выбора даты из календаря DateClick помещены следующие команды:

Text1.Text = MonthView1.Value

Text2.Text = MonthView1.Day

Text3.Text = MonthView1.Month

Text4.Text = MonthView1.Year

С помощью элемента управления Monthview можно выбирать диапазон дат. Для этого необходимо установить для свойства MultiSelect значение True. После этого для определения диапазона выбранных дат используются значения свойств SelStart И SelEnd.


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 8. Использование стандартных элементов управления Visual Basic.

В главе 3 мы познакомились с наиболее часто используемыми элементами управления Visual Basic и их основными свойствами. Продолжим изучение этих элементов, а также рассмотрим стандартные элементы управления Microsoft и их использование при создании приложений.

Метка

Как уже было сказано в главе 3, для размещения в форме текстовой информации, которая не может быть изменена пользователем приложения, используется элемент управления Label (Метка). Рассмотрим более подробно его свойства. Откройте окно свойств Properties данного объекта. Для этого выделите его и выберите в контекстном меню команду Properties (Свойства).

Текст метки задается свойством caption. Он может быть установлен в окне Properties или программно. Шрифт текстовой информации определяется свойством Font (Шрифт). Для выбора шрифта в окне свойств установите курсор в данное свойство и нажмите кнопку с тремя точками в правом столбце свойства. Открывается диалоговое окно Выбор шрифта (рис. 8.1), содержащее три списка, позволяющих указать наименование, начертание и размер шрифта.

Используя свойства ForeColor и Backcolor, можно задать цвет текстовой информации и цвет фона элемента управления. Свойство BorderStyle (Стиль рамки) определяет тип обрамления вокруг объекта Label, позволяя оформить надпись в виде текстового поля. Для этого вместо используемого по умолчанию значения None необходимо выбрать для свойства значение Fixed Single.

Свойство Appearance позволяет придать тексту некоторую объемность.

Свойство Alignment (Выравнивание) определяет выравнивание текста в элементе управления по правому, левому краю или по ширине. Если информация в объекте размещена на нескольких строках, то выравнивание осуществляется на каждой строке.

Рис. 8.1. Диалоговое окно Выбор шрифта

Оформление надписей в элементе управления Label меняется в зависимости ОТ значения СВОЙСТВ Alignment, Appearance И BorderStyle (рис. 8.2).

Рис. 8.2. Оформление надписей

Текст, задаваемый объектом Label, может иметь достаточно большой размер и занимать несколько строк. Максимальное количество его символов — 65528. Задать размеры надписи можно с помощью следующих средств:

  • мыши;
  • клавиши-стрелки при нажатой клавише <Shift>;
  • свойства Height (Высота) и width (Ширина);
  • свойства AutoSize и Wordwrap.

Первые три способа задания размера текстового объекта удобны в тех случаях, когда он имеет небольшой конкретно заданный размер. Но хотя пользователь приложения не может изменять текст, отображаемый с помощью объекта Label, его можно изменять программно. В этом случае точный размер текстового объекта заранее не известен, и для задания его размера удобно использовать свойства Autosize и wordwrap. Рассмотрим их более подробно.

Свойство AutoSize

Свойство Autosize может иметь два значения. При установке значения False размер объекта остается постоянным и не зависит от длины заданного свойством caption текста. Если длина текста превышает длину объекта Label, часть информации, не поместившаяся в объект, будет не видна. При установке для свойства Autosize значения True длина объекта устанавливается таким образом, чтобы в нем поместилась задаваемая свойством caption текстовая информация.

Свойство Wordwrap

Свойство Wordwrap аналогично свойству Autosize, но в данном случае изменяется высота объекта, а ширина остается неизменной. При установке для данного свойства значения False размер объекта Label может изменяться только в горизонтальном направлении. Если значение свойства wordwrap равно True, размеры объекта Label будут увеличиваться в вертикальном направлении вниз, пока не поместится весь текст. При этом осуществляется автоматический перенос слов. В табл. 8.1 указаны размеры текстового объекта в зависимости от значения свойств wordwrap и Autosize.

Таблица 8.1. Значения свойств wordwrap и Autosize
Значения свойств | Размер объекта Label
WordWrap= False AutoSize= False | Объект Label имеет первоначально заданные для него размеры
WordWrap= True AutoSize= False | Объект Label имеет первоначально заданные для него размеры
Wordwraps False AutoSize= True | Если информация, заданная свойством Caption, не помещается в объекте, изменяется размер поля в горизонтальном направлении при неизменной высоте
Wordwraps True AutoSize= True | Если информация, заданная свойством caption, не помещается в объекте, изменяется размер поля в вертикальном направлении при неизменной ширине

Совет

Свойства AutoSize и Wordwrap удобно использовать для надписей, размеры которых могут изменяться в процессе выполнения формы. Чтобы при изменении размера объекта в вертикальном направлении не изменилась его ширина, необходимо сначала установить значение True для свойства Wordwrap, и лишь затем аналогичное значение для свойства AutoSize.

Свойство UseMnemonic

Свойство UseMnemonic элемента управления Label позволяет определить, как будет интерпретироваться символ амперсанда (&), размещенный в свойстве caption. Если установлено значение True, то амперсанд из текста удаляется, а символ, перед которым он расположен, подчеркивается. Эта возможность применяется для определения клавиш быстрого доступа. При использовании метки в качестве клавиши быстрого доступа пользователь может комбинацией клавиш <А11>+<подчеркнутая клавиша в метке> устанавливать фокус на элемент управления, следующий по порядку для клавиши <ТаЬ> за меткой.

Рассмотрим такой пример. В форме расположено несколько элементов управления. Среди них имеется текстовое поле, в которое вы хотите перейти нажатием клавиши быстрого доступа. В этом случае выполните следующие действия:

1. Создайте метку для текстового поля.

2. Откройте окно свойств Properties метки.

3. Выделите свойство Caption и в текст метки перед символом, который вы хотите использовать в качестве клавиши быстрого доступа, поместите символ амперсанда.

4. С помощью свойства Tabindex метки и текстового поля, установите для метки значение на единицу меньшее, чем у текстового поля.

Замечание

Если элемент управления имеет свойство Caption (например, элемент CheckBox), то для задания клавиши быстрого доступа необходимо использовать его собственное свойство.

Текстовое поле

Элемент управления TextBox, размещенный в форме, служит для ввода пользователем информации во время работы приложения или отображения информации, задаваемой свойством Text программно или при разработке. Объект TextBox, так же как и метка, отличается большим набором свойств. Рассмотрим их более подробно.

Свойства, определяющие оформление текста

Для задания стиля рамки текстового поля применяется свойство Borderstyle (Стиль рамки). Оно содержит два значения. По умолчанию используется значение Fixed Single, при котором поле выделено рамкой. При установке значения None рамка вокруг поля отсутствует. Свойство Appearance позволяет придать объемность текстовому полю, имеющему рамку.

Свойства Backcolor и ForeColor позволяют соответственно задать цвет фона и цвет текста, размещаемого в элементе управления TextBox.

С помощью свойства Alignment (Выравнивание) можно задать вариант выравнивания информации в поле: по центру, по левому или правому краю.

Для задания наименования, размера и начертания шрифта, отображаемого в текстовом поле, используется свойство Font (Шрифт).

Многострочные текстовые поля

По умолчанию предполагается, что текстовое поле служит для ввода одной строки текста. Свойства Multi-Line и ScrollBar элемента управления TextBox позволяют настроить объект таким образом, что он будет использоваться для ввода нескольких строк или даже большого блока текстовой информации (табл. 8.2).

Таблица 8.2. Предназначение свойств MultiLine и ScrollBar

Свойство

Назначение

MultiLine

Определяет способ отображения поля. При установленном значении True текст автоматически переносится по словам на несколько строк. При вводе информации в поле для перехода на новую строку необходимо использовать клавишу <Enter>

ScrollBar

Данное свойство используется, если свойство MultiLine имеет значение True и размер поля не позволяет отобразить заданный в свойстве Text текст. Свойство может принимать одно из следующих значений:

0-None — полоса прокрутки отсутствует 1-Horizontal — горизонтальная полоса прокрутки 2-Vertical — вертикальная полоса прокрутки 3-Both — горизонтальная и вертикальная полосы прокрутки

Вид текстового поля меняется в зависимости от значения свойств MultiLine и ScrollBar (рис. 8.3).

Рис. 8.3. Вид текстового поля в зависимости от значения свойств MultiLine и ScrollBar

Управление текстом в объекте TextBox

Программа Visual Basic позволяет во время выполнения программы управлять текстом, отображаемым в текстовом поле, с помощью свойств SelStart, SelLength И SelText.

В случае, когда фокус впервые переходит на текстовое поле, курсор по умолчанию устанавливается слева от находящегося в поле текста. В результате ввода или просмотра информации курсор может перемещаться в пределах поля. При последующем возвращении фокуса на поле курсор устанавливается в то место, куда он был установлен в последний раз.

Используя свойство Seistart объекта TextBox, можно указать место размещения курсора в поле при установке фокуса. Значение 0 соответствует крайней левой позиции. Свойство SelLength задает ширину точки ввода. По умолчанию она равна 0, т. е. в том месте, где курсор установлен, можно начинать ввод символов, не удаляя расположенной в нем информации. Рассмотрим следующий пример. Необходимо, чтобы в форме, предназначенной для ввода данных, размещенные данные замещались новой информацией. Для этого при установке фокуса на поле символы должны выделяться инверсным цветом (рис. 8.4) и при вводе данных удаляться. Свойство SelText позволяет задать текст, который заменит во время выполнения программы выделенный фрагмент.

Рассмотрим пример создания небольшого приложения, содержащего форму, представленную на рис. 8.4. Форма содержит заголовок и текстовое поле, в котором при установке фокуса выделяется размещенный в нем по умолчанию текст. При создании приложения будем использовать рассмотренные нами элементы управления Label и TextBox.

Рис. 8.4. Программное выделение информации, размещенной в текстовом поле

1. Для создания нового приложения в меню File (Файл) выберите команду New Project (Новый проект). Открывается окно Project с расположенной в нем новой формой.

2. Чтобы разместить в форме заголовок, нажмите кнопку Label на панели элементов управления. Затем установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера.

3. Откройте окно свойств. Для этого щелкните правой кнопкой мыши на созданном объекте и выберите в контекстном меню команду Properties.

4. Выделите свойство caption (Надпись) и введите в правом столбце текст заголовка.

5. Чтобы сохранить первоначальную ширину заголовка и расположить текст в две строки, установите для свойства wordwrap значение True.

6. Для задания точной ширины заголовка присвойте свойству Autosize значение True.

7. По умолчанию текст заголовка выровнен по левому краю. Чтобы его отцентрировать, выделите свойство Alignment (Выравнивание). Затем в правом столбце нажмите кнопку раскрытия списка и выберите из него значение Center.

8. Для задания используемого в оформлении заголовка наименования шрифта, его размера и начертания воспользуйтесь свойством Font (Шрифт). Нажмите в правом столбце свойства кнопку с тремя точками и в открывшемся диалоговом окне Выбор шрифта установите необходимые параметры.

9. Разместим теперь в форме текстовое поле. Нажмите на панели элементов управления кнопку TextBox, установите курсор в форму и нарисуйте рамку требуемого размера.

10. Чтобы задать текст, отображаемый в текстовом поле при выполнении формы, выделите свойство Text и введите в правом столбце требуемый текст, например, Текстовое поле.

11. Так как мы хотим, чтобы при установке фокуса на текстовое поле в нем выделялся размешенный текст, необходимо создать процедуру обработки события. Для открытия окна редактора кода дважды щелкните мышью на объекте TextBox.

12. В окне редактора кода из списка Object выбрано значение Text1, указывающее наименование текстового поля. Выберите из правого списка Procedure значение GotFocus, позволяющее задать процедуру обработки события получения текстовым полем фокуса.

13. В области создания процедуры между операторами private sub Text1_Got Focus () и End Sub расположите следующие команды:

Text1.SelStart = 0

Text1.SelLength = Len(Text1.Text)

Первая команда задает начальное положение выделяемого в поле текста. Вторая команда процедуры задает длину выделяемого фрагмента текста. Используемая в ней функция Len вычисляет длину текста, размещенного в текстовом поле и заданного свойством Text. На рис. 8.5 показано окно редактора кода с введенными командами.

Рис. 8.5. Окно редактора кода

Совет

Если вы хотите во время выполнения программы заменить выделенную в текстовом поле информацию другим текстом, то можете использовать свойство SelText и вставить в процедуру следующую команду: Text1.SelText = "Информация, вводимая с помощью свойства SelText". В кавычках располагается размещаемый в текстовом поле новый текст.

14. После ввода текста процедуры закройте окно редактора кода, выбрав команду Close системного меню окна или нажав кнопку Закрыть, расположенную в верхнем правом углу заголовка окна.

15. Запустите программу на выполнение, выбрав в меню Run команду Start или нажав клавишу <F5>. Результат представлен на рис. 8.4. Информация в текстовом поле выделена, и вы можете сразу же вводить на ее место новую.

Нередактируемые текстовые поля

Как мы уже говорили, текстовые поля, в отличие от меток, предназначены для ввода информации пользователями приложения. Но в том случае, если вы хотите, чтобы данные просматривались, но не редактировались, то можете воспользоваться свойством Locked. При установке значения True пользователь сможет просматривать данные без возможности их редактирования. В этом случае изменение информации в текстовом поле может выполняться только программно.

Проверка правильности ввода данных

При работе с текстовыми полями возникает необходимость проверки вводимых пользователем данных. В Visual Basic для этих целей предназначено событие validate. Например, размещенное в форме поле служит для ввода даты и вы хотите, чтобы при вводе информации в ином формате появлялось соответствующее предупреждение. Для этого выполните следующие действия:

1. Разместите в форме текстовое поле.

2. Для задания процедуры обработки события validate откройте окно редактора кода, дважды щелкнув кнопку мыши на текстовом поле.

3. Из списка Object по умолчанию выбрано значение Text1, указывающее наименование элемента управления TextBox. Из правого списка Procedure выберите значение Validate, позволяющее задать процедуру проверки. вводимых в поле данных.

4. Создайте следующую процедуру:

Private Sub Text1_Validate

If Not IsDate(Textl) Then MsgBox "Вводимые данные должны быть датой"

End Sub

5. Закройте окно редактора кода.

6. Разместите в форме еще одно текстовое поле, которое будет использовано в качестве объекта, на который можно перевести фокус после ввода информации в первое поле.

7. Запустите приложение на выполнение.

8. Введите в созданное поле информацию в каком-либо произвольном формате, например текстовую, и нажмите клавишу <ТаЬ> для перемещения фокуса на второе поле. На экране появится предупреждение, аналогичное представленному на рис. 8.6.

Рис. 8.6. Предупреждение, появляющееся при вводе данных, не отвечающих заданным условиям

Использование текстового поля для ввода пароля

Текстовое поле в Visual Basic характеризуется двумя свойствами, позволяющими использовать их при создании полей, предназначаемых для ввода пароля:

  • passwordchar — задает символ, отображаемый в поле вместо вводимых символов;
  • MaxLength — максимальное число символов, вводимых в поле.

На рис. 8.7 показана форма, в которой в качестве символа, отображаемого в текстовом поле при вводе пароля, используется символ звездочки.

Рис. 8.7. Форма, предназначенная для ввода пароля

Подсказка

Visual Basic позволяет с помощью свойства ToolTipText (Текст подсказки) создавать текст краткого пояснения, появляющийся ниже курсора, когда он установлен на поле (рис. 8.8). Чтобы задать текст пояснения к текстовому полю, введите текст подсказки в правый столбец свойства.

Рис. 8.8. Свойство ToolTipText позволяет задать подсказку, появляющуюся под курсором

Кнопки управления

В главе 3 вы познакомились с основными свойствами объекта, называемого кнопкой управления. Это один из наиболее часто используемых элементов управления. Рассмотрим еще несколько свойств, характеризующих данный элемент.

Клавиши быстрого доступа

Для кнопки управления можно задать клавиши быстрого доступа, что весьма удобно пользователям, использующим при работе с формой только клавиатуру. В этом случае для нажатия кнопки, размещенной в форме, достаточно будет нажать комбинацию клавиш <Alt>+< подчеркнутая клавиша в названии кнопки> Печать. Чтобы задать клавишу быстрого доступа, необходимо при вводе названия кнопки в поле свойства Caption перед соответствующей буквой наименования кнопки расположить амперсанд (&). В названии кнопки эта буква будет выделена подчеркиванием.

Замечание

Если вы не хотите, чтобы символ амперсанда интерпретировался как назначение клавиши быстрого доступа, вам необходимо поместить два символа амперсанда.

Свойства Default и Cancel

Одну из кнопок, размещаемых в форме, можно сделать кнопкой по умолчанию, т. е. помещать в нее фокус при запуске формы на выполнение. Для этого используется свойство Default. В этом случае для нажатия данной кнопки достаточно нажать клавишу <Enter>. Чтобы сделать кнопку используемой по умолчанию, необходимо для свойства Default установить значение True.

Используя свойство cancel кнопки, можно сделать ее кнопкой отмены. Если для свойства Cancel установлено значение True, кнопка будет выбираться при нажатии клавиши <Esc>.

Замечание

При присвоении свойствам Default или Cancel кнопки значения True, аналогичные свойства других размещенных в форме кнопок получат значения False.

Стиль оформления кнопки

Для управления внешним видом кнопки используется свойство Style (Стиль). Оно содержит два значения. По умолчанию установлено значение Standard, предполагающее, что кнопка будет содержать текст, задаваемый свойством caption. Вы можете использовать в форме графические кнопки. В этом случае вместо текстовой надписи на кнопке размещается графическое изображение, задаваемое свойством picture, а свойство Style должно иметь значение Graphical.

Для задания графического изображения, помещаемого на кнопке, выделите свойство picture и нажмите кнопку, расположенную в правом столбце. В результате откроется диалоговое окно Load Picture (рис. 8.9), используя которое вы можете выбрать на диске файл, содержащий изображение.

Рис. 8.9. Диалоговое окно Load Picture, предназначенное для выбора изображения, помещаемого на кнопке

Помимо вышеперечисленных свойств, для управления видом графической кнопки используются также свойства Disabledpicture и DownPicture. Свойство DisabledPicture позволяет задать графическое изображение неактивной кнопки, а DownPicture — графическое изображение, отображаемое на кнопке при ее нажатии.

Способы выбора кнопки управления

Существует несколько способов выбора размещенной в форме кнопки управления при выполнении приложения. Наиболее очевидный — это щелкнуть ее кнопкой мыши. Второй способ вам, вероятно, также знаком.

Он состоит в следующем: перемещая фокус между элементами управления формы нажатием клавиши <ТаЬ>, установите его на кнопку управления и затем нажмите клавишу <Enter> или <Spacebar>.

Кроме того, существует еще три способа выбора кнопки управления, задаваемые при ее создании:

  • клавиша быстрого доступа. Для выбора кнопки необходимо нажать комбинацию клавиш <Alt>+< подчеркнутая клавиша в названии кнопки>;
  • клавиша <Enter>, если для свойства Default кнопки установлено значение True, т. е. она объявлена кнопкой по умолчанию формы;
  • клавиша <Esc>, если для свойства cancel кнопки установлено значение True, т. е. она объявлена кнопкой отказа формы.

Список ListBox

Элемент управления ListBox, размещенный в форме, представляет собой список, из которого пользователь может выбрать одно из предложенных значений. Значения в списке могут размещаться в одну или несколько колонок. Количество колонок задается свойством Columns (Колонки). В том случае, если элементы списка не помещаются в выделенную для них в форме область, появляются полосы прокрутки, позволяющие просмотреть весь список.

Добавление элементов в список

Элементы в список могут добавляться во время разработки и программно с использованием метода Additem. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные не обязательно вводить в алфавитном порядке, т. к. их можно упорядочить, установив для свойства Sorted (Сортировка) значение True. В этом случае вновь вводимые элементы списка также будут располагаться в алфавитном порядке.

Предупреждение

Нежелательно использовать сортировку, если данные в список будут добавляться методом Additem с использованием параметра index.

Для добавления элементов в список программным способом предназначен метод AddItem, имеющий следующий синтаксис:

NameList.AddItem выражение [, index]

где:

  • NameList — наименование списка, задаваемое свойством Name;
  • выражение — элемент списка. Если это символьная величина, то она должна быть помещена в кавычки;
  • index — порядковый номер элемента в списке. Если этот параметр отсутствует, элемент добавляется в конец списка.

    Замечание

    При использовании параметра index необходимо учитывать, что нумерация элементов начинается с 0.

Например, для программного формирования списка городов вам необходимо задать следующую процедуру:

Private Sub Form Load()

List1.AddItem "Москва"

List1.AddItem "С.Петербург"

List1.AddItem "Псков"

List1.AddItem "Новгород"

List1.AddItem "Чебоксары" End Sub

На рис. 8.10 показано окно редактора кода, содержащего процедуру формирования списка городов.

Рис. 8.10. Окно редактора кода с процедурой, формирующей список

Города в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если строку кода List1.Additem "Чебоксары" заменить строкой

List1.Additem "Чебоксары", 0

то в списке городов Чебоксары будут помещены в первую позицию (рис. 8.11).

Рис. 8.11. Использование параметра index позволяет задать порядок элементов в списке

Удаление элементов из списка

Visual Basic позволяет программно удалять элементы из списка с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.RenioveItem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, чтобы удалить из созданного нами в предыдущем примере списка List1 второй элемент, необходим следующий программный код:

List1.Removeitem 1

Совет

Чтобы удалить все элементы из списка, можно использовать метод clear (Очистить). В этом случае программный код выглядит так: List1.Clear.

Свойства ListCount и Listlndex

Свойство ListCount позволяет определить количество элементов в списке. Это значение можно использовать, например, в том случае, если вы хотите обрабатывать элементы списка в цикле. Свойство Listlndex показывает номер выбранного элемента. При выборе первого элемента списка значение свойства равно 0 исходя из того, что нумерация элементов начинается с 0. Если выбран пятый элемент, значение свойства Listlndex будет равно 4.

Рассмотрим пример использования свойства Listindex. В форме, содержащей список ListBox, разместим текстовое поле, в котором будет отображаться выбранное из списка значение (рис. 8.12). Откройте окно редактора кода списка и для события click задайте следующую процедуру:

Private Sub List1_Click()

Text1.Text = List1.List(List1.Listindex)

End Sub

Запустите форму на выполнение. Выбираемое из списка значение отображается в расположенном рядом с ним текстовом поле.

Замечание

Свойства ListCount и Listindex доступны только при выполнении.

Рис. 8.12. Использование свойства Listindex для просмотра выбранного из списка элемента

Стиль оформления списка

Для управления внешним видом списка используется свойство style (Стиль). Оно содержит два значения: Standard и CheckBox. По умолчанию используется значение Standard, которое мы уже рассматривали ранее. При установке для свойства style значения CheckBox элементы списка оформлены в виде флажков. На рис. 8.13 показаны два вида списков в зависимости от значения свойства Style.

Рис. 8.13. Два стиля оформления списков в зависимости от значения свойства Style

Совет

Для изменения значения свойства Style во время выполнения приложения можно использовать константы Visual Basic vbListBoxStandard и vbListBoxCheckBox.

Выбор нескольких элементов из списка

Программа Visual Basic позволяет использовать списки, предоставляющие пользователю выбирать из него несколько элементов. Для создания таких списков предназначено свойство Multiselect (Множественный выбор). Оно может принимать значения, представленные в табл. 8.3.

Таблица 8.3. Значения свойства Multiselect
Значение свойства | Описание
0-Non (Нет) | Стандартный список, используемый по умолчанию. Позволяет выбирать одно значение
1-Simple (Простой множественный выбор) | Разрешен выбор нескольких элементов щелчком мыши или нажатием клавиши <Spacebar> (Пробел). Для отмены выбора необходимо щелкнуть мышью или нажать клавишу <Spacebar> еще раз
2-Extended (Расширенный множественный выбор) | Разрешен выбор нескольких элементов с помощью способа, используемого в Windows. Для выбора элементов, расположенных подряд, необходимо при нажатой клавише <Shift> выбрать первый элемент из выбираемых, а затем последний. При этом будут выбраны все размещенные между ними элементы. Для выбора элементов, расположенных не по порядку, необходимо нажать клавишу <Ctrl> и, удерживая ее нажатой, выделить требуемые элементы списка

Для обработки множественного выбора нельзя использовать свойство Listindex, применяемое при работе с обычными списками. Выбор нескольких элементов списка фиксируется в свойстве Selected, являющимся массивом, размерность которого равна количеству элементов в списке (определяется свойством ListCount). Выбранному элементу списка соответствует значение True соответствующего элемента свойства selected, а остальным — False.

Рассмотрим пример использования свойства Selected. Разместим в форме два списка. В первый список введем элементы с использованием свойства List. Список элементов во втором списке будет формироваться при перемещении на него фокуса после выбора элементов первого списка. Таким образом, второй список будет содержать выбранные в первом списке элементы. Для создания приложения выполните следующие действия:

1. Разместите в форме два списка с помощью кнопки ListBox на панели элементов управления.

2. Используя свойство List первого списка, введите элементы списка.

3. Чтобы разрешить выбор из первого списка нескольких элементов, установите для свойства Multiselect значение 1-Simple.

4. Теперь необходимо задать процедуру формирования элементов второго списка при перемещении на него фокуса. Для этого дважды щелкните мышью на втором списке.

5. В открывшемся окне редактора кода из списка Procedure выберите событие GotFocus (Получение фокуса) и введите следующий код:

Private Sub List2_GotFocus()

List2.Clear

For i = 0 To List1.ListCount — 1

If List1.Selected(i) Then List2.Addltem (List1.List (i))

Next

End Sub

На рис. 8.14 представлен полученный результат.

Рис. 8.14. Отображение выбранных значений во втором списке

Списки типа ComboBox

Списки типа СоmbоВох называют раскрывающимися или полями со списком. Оба этих названия верны. Раскрывающимися их называют потому, что для выбора значения из списка, имеющего установленные по умолчанию свойства, сначала необходимо открыть список, нажав кнопку со стрелкой, расположенную с правой стороны поля ввода. Второе название поле со списком они получили потому, что список типа ComboBox совмещает функции списка и поля ввода. Иными словами, можно не только выбирать данные из списка, но и вводить в поле ввода в верхней части новые значения. Использование списков ListBox дает возможность выдавать большой объем информации, экономя при этом место в форме.

Стилем оформления списка типа comboBox управляет свойство style. Оно может принимать значения, представленные в табл. 8.4.

Таблица 8.4. Значения свойства Style
Значение свойства | Описание
0-Dropdown Combo | Стиль, используемый по умолчанию. Данный список показан на рис. 8.15 слева. Пользователь может ввести значение в текстовое поле, расположенное в верхней части списка, либо открыть список, нажав кнопку с направленной вниз стрелкой с правой стороны поля, и выбрать требуемое значение. Выбранное значение переносится в текстовое поле
1-Simple Combo | Вид данного списка показан на рис. 8.15 в центре. При данном значении список отображается в форме в открытом состоянии. Если все элементы в нем не помещаются, появляется вертикальная полоса прокрутки. Пользователь может ввести значение в текстовое поле, располагающееся в верхней части списка, либо выбрать требуемое значение, которое будет перенесено в текстовое поле
2-Dropdown List | Вид данного списка показан на рис. 8.15 справа

Рис. 8.15. Стили оформления списка типа ComboBox

Замечание

Для установки значения Style можно использовать также внутренние константы Visual Basic vbComboDropDown, vbComboSimple, И vbComboDropDownLis; соответственно.

Добавление элементов в список типа ComboBox

Элементы в список типа ComboBox могут добавляться во время разработки с помощью свойства List и программно с использованием метода Additem так же, как в список типа ListBox. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные, отображаемые списком, можно упорядочить, установив для свойства Sorted (Сортировка) значение True.

Для добавления элементов в список программно используется метод Additem, имеющий приведенный ниже синтаксис:

NameList.AddItem выражение [, index]

где:

  • NameList — наименование списка, задаваемое свойством Name;
  • выражение — элемент списка. Если' это символьная величина, то она должна быть помещена в кавычки;
  • index — порядковый номер элемента в списке.

    Замечание

    Если при добавлении элементов в список параметр index отсутствует, то элемент добавляется в конец списка.

Обычно для программного формирования списка используется процедура Form_Load обработки события. Например, чтобы программно сформировать элементы для списка типа соmbоВох, содержащего список городов, вам достаточно задать следующую процедуру:

Private Sub Form Load()

Combo1.Additem "Москва"

Combo1.Additem "С.Петербург"

Combo1.Additem "Псков"

Combo1.Additem "Новгород"

Combo1. Additem "Чебоксары"

End Sub

Если при формировании списка вы не используете параметр index, элементы в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если к приведенной ниже процедуре добавить строку кода

Combo1.AddItem "Киев",0

то в списке городов Киев будет помещен в первую позицию, а все остальные элементы смещены на одну позицию вниз.

Удаление элементов из списка типа СоmЬоВох

Удаление элементов из списка типа СотЬоВох осуществляется с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.Removeltem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, для удаления из списка, имеющего наименование combol, первого элемента, можно использовать следующий код:

Combo 1. RemoveItem 0

Для удаления всех элементов из списка можно использовать метод clear (Очистить). В этом случае программный код выглядит так: combol. clear.

Доступ к элементам списка

Для получения доступа к выбранному элементу списка типа comboBox можно использовать свойство Text. Значением этого свойства является введенное в текстовое поле списка (для списков, у которых значение style равно 0-Dropdown Combo или 1-Simple Combo) или выбранное из списка значение.

Чтобы получить доступ к элементам списка, используйте свойство List. Значения этого свойства являются массивом, размерность которого равна значению свойства ListCount, то есть количеству элементов в списке. Например, значение первого элемента списка будет равно combol. List (0), второго — Combo1.List (1) и т.д.

Для определения положения элемента в списке типа ComboBox можно использовать свойство Listindex. Например, при выборе первого элемента списка значение свойства Listindex будет равно 0.

Замечание

Значение свойства Listindex равно -1, если из списка не выбран элемент, а также если элемент в текстовое поле списка введен пользователем вручную.

Для получения индекса последнего добавленного в список элемента можно использовать свойство Newindex (Новый индекс).

Линии и контуры

Visual Basic позволяет размещать в форме линии, прямоугольники, скругленные прямоугольники, круги, эллипсы, используемые для объединения в группу схожих по смыслу объектов и улучшения внешнего вида формы.

Линия

Для добавления в форму линии используется кнопка Line (Линия) на панели элементов управления. Установите указатель мыши в то место, где должна начинаться линия, и, не отпуская кнопку мыши, перемещайте его до получения линии нужной длины.

Свойство Borderwidth (Ширина границы) позволяет задать толщину линии. Для изменения толщины, заданной по умолчанию, введите в правый столбец свойства число, которое будет определять толщину линии.

Для изменения размеров линии и ее положения можно использовать мышь и клавиатуру аналогично тому, как это делается для всех элементов управления в форме. Помимо этого, можно использовать свойства X1, X2, YI и Y2, позволяющие изменять перечисленные параметры программно. Свойства X1и YI определяют, соответственно, горизонтальное и вертикальное положение левого края линии, а свойства X2 и Y2 — правого края.

Чтобы задать цвет линии, используйте свойство BorderColor (Цвет границы).

С помощью свойства BorderStyle (Стиль границы) можно указать стиль линии, используя значения, указанные в табл. 8.5.

Таблица 8.5. Значения свойств BorderStyle
Значение | Стиль линии
0-Transparent | Линия отсутствует (имеет цвет фона)
1-Solid | Тонкая линия
2-Dash | Штриховая линия
3-Dot | Пунктирная линия
4-Dash-Dot | Штрихпунктир
5-Dash-Dot-Dot | Штрихпунктир с двойным штрихом
6-lnside Solid | Непрерывная линия

Типы линии в зависимости от значения свойства BorderStyie показаны на рис. 8.16. Для значения 0-Transparent линия не приводится, т. к. она все равно не видна в форме.

Рис. 8.16. Элемент управления Line

Контуры

Для добавления в форму контура предназначена кнопка Shape (Контур) на панели элементов управления. Она позволяет создавать в форме прямоугольник, квадрат, овал, окружность, прямоугольник и квадрат со скругленными углами.

Чтобы разместить в форме одну из вышеперечисленных фигур, выполните следующие действия:

1. Нажмите кнопку Shape (Контур) на панели элементов управления.

2. Установите указатель мыши в то место, где должен начинаться объект, и, не отпуская кнопку мыши, переместите указатель до получения контура требуемого размера.

3. Для придания созданному объекту требуемой формы, установите одно из следующих значений свойства shape, представленных в табл. 8.6.

Таблица 8.6. Значения свойства shape
Значение свойства | Контур
0-Rectangle | Прямоугольник
1-Square | Квадрат
2-Oval | Овал
3-Circle | Окружность
4-Rounded Rectangle | Прямоугольник со скругленными углами
5-Rounded Square | Квадрат со скругленными углами

На рис. 8.17 приведены стандартные контуры, создаваемые в Visual Basic.

Совет

При создании стандартных контуров можно использовать внутренние константы Visual Basic:vbShapeRectangle, vbShapeSquare,vbShapeOval,vbShapeCircie, vbShapeRoundedRectangle И vbShapeRoundedSquare.

Рис. 8.17. Стандартные контуры

Используя свойство BackStyle, укажите, будет ли созданный объект прозрачным.

С помощью свойства Fillstyle можно задать узор заполнения, используя значения из табл. 8.7.

Таблица 8.7. Значения свойства FillStyle
Значение | Узор заполнения
0-Solid | Сплошное заполнение
1-Transparent | Нет заполнения
2-Horizontal Line | Горизонтальная штриховка
3-Vertical Line | Вертикальная штриховка
4-Upward Diagonal | Штриховка по диагонали слева направо
5-Downward Diagonal | Штриховка по диагонали справа налево
6-Cross | Горизонтально-вертикальная штриховка
7-Diagonal Cross | Штриховка по диагонали в обоих направлениях

Свойство FillColor позволяет задать цвет узора заполнения объекта, а свойство BackColor (Цвет фона) — цвет фона.

Свойство BorderStyle предназначено для задания стиля рамки объекта. Оно содержит те же значения, что и для линии.

Для придания контуру объемности используйте свойство SpecialEffect.

Полосы прокрутки

В Visual Basic существуют элементы управления VScrollBar и HScrollBar, называемые полосами прокрутки (рис. 8.18), для размещения в форме которых используются кнопки VScrollBar и HScrollBar на панели элементов управления. Если вы знакомы с документами программы Microsoft Word и другими программными продуктами, работающими в среде Windows, то имеете представление о полосах прокрутки. С ними мы также сталкивались при работе с многострочными текстовыми полями и списками, в которых информация не помещалась целиком в окне просмотра. Элементы управления VScrollBar и HScrollBar отличаются от полос прокрутки, встроенных в перечисленные элементы, так как существуют самостоятельно и используются для управления вводом параметра, значение которого может меняться в некотором диапазоне.

Рис. 8.18. Элементы управления

VScrollBar и HScrollBar

Размещение полосы прокрутки и настройка свойств

Основные свойства, характеризующие элементы управления типа VScrollBar и HScrollBar, представлены в табл. 8.8.

Таблица 8.8. Свойства элементов управления VScrollBar и HScrollBar
Свойство | Назначение
LargeChange, SmallChange | Задают величины, на которые будет смещаться ползунок при щелчке кнопкой мыши на полосе или стрелке прокрутки
Min, Max | Задают диапазон вводимых с помощью полосы прокрутки чисел
Value | Целое число, соответствующее положению ползунка на полосе прокрутки

После размещения полосы прокрутки в форме необходимо, используя свойства Min и мах, задать диапазон значений, устанавливаемых с помощью данного элемента управления. Свойство value (Значение) определяет текущее положение бегунка на полосе прокрутки. Значения данных свойств могут быть только целыми числами и лежать в диапазоне от —32768 до +32767. При этом не обязательно, чтобы значение, задаваемое свойством Min, было меньше значения свойства мах. Вы можете использовать бегунок для отображения данных от большего значения к меньшему.

Значение свойства value меняется при перемещении бегунка и щелчке мыши на полосе прокрутки или на стрелках, расположенных по краям полосы. Для задания величины, на которую будет меняться значение свойства value при щелчке мыши на стрелках, находящихся по краям полосы прокрутки, используется свойство SmallChange (Малое смещение). С помощью свойства LargeChange (Большое смещение) можно задать величину, на которую будет смещаться ползунок при щелчке кнопкой мыши на полосе прокрутки. По умолчанию оба этих свойства имеют значение 1. На практике, свойство smallchange используют для более плавного изменения значения свойства value. Для свойства LargeChange устанавливают значение, равное, примерно, 10% от диапазона изменения свойства value.

Элементы управления типа VScrollBar и HScrollBar для отображения свойства value используют следующие события:

Событие | Назначение
Change | Событие наступает после перемещения бегунка в момент отпускания кнопки мыши или после щелчка мышью в области полосы прокрутки или на кнопках с изображениями стрелок
Load формы | Позволяет получить начальное значение свойства Value при загрузке формы
Scroll | Позволяет получить значение свойства Value при перемещении бегунка до возникновения события change

Рассмотрим пример использования в форме полос прокрутки. Разместим в форме элемент управления shape. Затем добавим в форму элементы управления vscroliBar и HScrollBar. Значение горизонтальной полосы прокрутки будем использовать для изменения формы объекта, задаваемой свойством shape, а значение вертикальной — для задания стиля оформления контура (рис. 8.19).

Рис. 8.19. Использование элементов управления VScrollBar и HScrollBar

Выполните следующие действия:

1. Используя кнопку Shape на панели элементов управления, разместите в форме контур.

2. Разместите в форме горизонтальную и вертикальную полосы прокрутки, воспользовавшись, соответственно, кнопками HScrollBar и VScrollBar на панели элементов управления.

3. Горизонтальную полосу прокрутки будем использовать для изменения типа контура. Свойству Min присвоите значение 0, а свойству мах — значение 5, так как свойство shape (Контур) может принимать значения от О до 5.

4. Вертикальная полоса прокрутки будет служить для изменения стиля оформления контура. Свойству Min присвойте значение 0, а свойству мах — значение 6, так как свойство BorderStyle (Стиль границы) может принимать значения от 0 до 6.

5. В окне редактора кода, используя событие Change, возникающее после перемещения бегунка в момент отпускания кнопки мыши, а также после щелчка мышью в области полосы'прокрутки или на кнопках с изображениями стрелок, расположите следующий код:

Private Sub HScroll1_Change()

Shape1.Shape = HScroll1.Value

End Sub

Private Sub VScroll1_Change()

Shapel.BorderStyle = VScroll1.Value

End Sub

Запустите форму на выполнение. Перемещая поочередно движки полос прокрутки, вы сможете наблюдать, как изменяется тип контура и стиль обрамления.

Элемент управления Frame

Элемент управления Frame является контейнером и служит для объединения других элементов в группу, после чего помещенными в него объектами можно управлять как единым целым. Например, элемент управления Frame можно использовать для объединения в группу размещенных в форме и функционально связанных переключателей.

Для настройки внешнего вида элемента управления Frame применяются свойства, указанные в табл. 8.9.

Таблица 8.9. Свойства элемента управления Frame
Свойство | Назначение
Appearance | Свойство может принимать значения 0-Flat или 1-3D, задающие плоский или объемный вид рамки
BorderStyle | Определяет, будет ли вокруг группы присутствовать рамка. Может принимать значения 0-None (рамка и ее заголовок отсутствуют) и 1-Fixed Single (рамка присутствует)
Caption | Определяет текст, располагающийся в левом верхнем углу рамки. Если из свойства удалить текст, то группа будет объединена сплошной рамкой

На рис. 8.20 показано, как выглядит элемент управления Frame в зависимости от свойств объекта.

Рис. 8.20. Вид элемента управления Frame в зависимости от его свойств


Ch 8.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Создание группы элементов

Элемент управления Frame (Рамка) используется в формах в основном для объединения элементов в группы. Например, вы хотите разместить в форме две группы переключателей, чтобы с помощью первой группы переключателей выбирать страну, а используя вторую группу — наименование города. Все добавляемые в форму переключатели автоматически объединяются в одну группу, если только вы предварительно не разместите в форме два объекта типа Frame и не будете помещать создаваемые переключатели в соответствующую рамку.

При использовании рамки для создания группы элементов выполните следующую последовательность действий:

1. Создайте в форме объект типа Frame с помощью кнопки Frame (Рамка) на панели элементов управления.

2. Разместите в рамке объединяемые в группу элементы (рис. 8.21). Для этого щелкните соответствующую кнопку на панели элементов управления, поместите указатель мыши в рамку и перемещайте его, не отпуская кнопку мыши, до получения требуемого размера создаваемого объекта.

Совет

Чтобы проверить, создана ли группа из расположенных в рамке элементов, выделите элемент управления Frame и переместите его. Если вместе с рамкой переместились расположенные внутри нее объекты, то они все объединены в группу.

Рис. 8.21. Размещенные внутри объекта Frame элементы являются группой

Нельзя поместить в группу элемент управления, размещенный в форме, простым перемещением. Если вы хотите переместить в группу находящийся в форме элемент, выполните следующие действия:

1. Выделите перемещаемый элемент.

2. Выполните команду Cut (Вырезать) меню Edit (Правка).

3. Установите указатель внутрь объекта Frame.

4. Выполните команду Paste (Вставить) меню Edit (Правка).

5. Переместите вставленный объект внутри рамки в требуемое место.

Таймер

В Visual Basic существует элемент управления, который обрабатывает данные системных часов. Этот объект называется таймером. Его можно использовать для выполнения определенных действий через заданный интервал времени.

Для размещения в форме таймера используется кнопка Timer (Таймер) на панели элементов управления формы. Объект данного типа обладает следующими свойствами:

Свойство | Назначение
Interval (Интервал) | Интервал активизации объекта в миллисекундах. Может принимать значение от 0 до 64767 (от 0 до 64,8 секунды)
Enabled .(Доступно) | Устанавливает режим работы таймера. Если значение свойства равно True (Истина), то таймер начинает отсчитывать время сразу же после запуска формы. В противном случае вы должны запустить таймер по какому-либо внешнему событию (например, при нажатии на кнопку). Установка для свойства значения False приостанавливает операции таймера

Событие Timer (Таймер) объекта-таймера наступает через каждый установленный в свойстве interval промежуток времени. В процедуре обработки данного события необходимо определить действия, выполняемые с заданной частотой.

Для запуска таймера можно использовать метод Reset (Установить). Этот метод не связан с каким-либо событием, поэтому вы должны выполнить его при наступлении каких-либо других событий, например при нажатии на кнопку запуска таймера.

Использование таймера

Использование объекта-таймера рассмотрим на примере формы, в которой через заданный интервал времени на экран будет выводиться системное время компьютера. Для создания данной формы выполните следующие действия:

1. Откройте окно для создания нового проекта.

2. Поместите в форму метку для отображения текущего системного времени. Создайте пояснительную надпись к метке.

3. Для создания объекта-таймера нажмите кнопку Timer (Таймер) на панели элементов управления и расположите его в форме.

Замечание

Размещенный в форме элемент управления Timer изображается в виде значка, показанного на рис. 8.22. При запуске формы на выполнение он становится невидимым пользователю приложения.

Рис. 8.22. форма с размещенным в ней объектом Timer

4. Определите интервал времени, через который необходимо производить обновление времени в форме. Для этого воспользуйтесь свойством interval, значение которого задается в миллисекундах. Для обновления времени каждую секунду введите значение 1000.

5. Откройте окно редактора кода и создайте простую процедуру, присваивающую свойству caption метки текущее время:

Private Sub Timer1 Timer()

Label1.Caption = Time

End Sub

Форма с размещенными элементами управления показана на рис. 8.22.

6. Сохраните созданную форму и запустите ее на выполнение. Вы увидите время, обновляемое каждую секунду (рис. 8.23).

Рис. 8.23. Использование таймера в форме

Использование в форме графики

В Visual Basic для отображения в форме графики используются элементы управления image (Изображение) и picture (Графическое окно), создаваемые с помощью кнопок Image и PictureBox на панели элементов управления. Объект image позволяет разместить в форме графические изображения. Более широкое назначение имеет объект Picture, используемый как для размещения графических изображений, так и в качестве контейнера для других элементов управления.

Элемент управления Image

Для размещения изображения в форме выполните следующие действия:

1. Нажмите кнопку Image.

2. Установите указатель мыши в том месте формы, где вы хотите разместить изображение, и, удерживая кнопку мыши в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка требуемого размера.

3. Откройте окно свойств Properties для созданного объекта.

4. Для задания имени графического файла предназначено свойство picture (Изображение). Выберите данное свойство, а затем нажмите кнопку, расположенную в правом столбце. Откроется диалоговое окно Load Picture.

Замечание

Чтобы указать наименование графического файла, задаваемого объектом Image, во время выполнения приложения, можно использовать функцию LoadPicture.

5. Выберите графический файл в одном из следующих форматов:

  • Bitmap — растровое изображение с расширением bmp или dib;
  • ICON — растровое изображение с-расширением ico, имеющее размер 16х16 или 32х32 пикселов и называемое значком;
  • Cursor — растровое изображение с изображением курсора. Имеет расширение сиг;
  • Metafile — метафайл, представляющий собой изображение в виде закодированных линий и образов. Расширение — wmf и emf (расширенный метафайл);
  • файлы в формате jpeg или gif.

6. Нажмите кнопку Открыть. Изображение разместится в форме (рис 8.24).

Рис. 8.24. Размещение графического изображения в форме

Размещенное в форме графическое изображение можно поместить в рамку, выбрав значение 1-Fixed Single свойства BorderStyle. Если при использовании рамки свойство Appearance (Оформление) имеет значение 1-3D, то рамка будет придавать изображению объемность.

Свойство Stretch

Для настройки свойств размещенного в форме графического объекта можно использовать свойство stretch (Растягивание). По умолчанию установлено значение False, указывающее, что при изменении размеров объекта Image размер изображения остается неизменным. Если для свойства Stretch установлено значение True, то при изменении размеров объекта будут соответственно меняться размеры изображения, что может привести к искажению изображения при несоответствии размеров объекта и изображения (рис. 8.25).

Рис. 8.25. Установка для свойства Stretch значения True может привести к искажению изображения

Объекты Image распознают событие click (Нажатие), что позволяет использовать их в качестве графических кнопок управления, например, при создании панели инструментов приложения. При этом необходимо учитывать, что нажатие объекта image не приводит к его вдавливанию, наблюдаемому при нажатии кнопки.

Способы загрузки изображения

Загружать графическое изображение в объект image можно в процессе разработки приложения, а также программно при его выполнении.

Чтобы загрузить изображение при разработке, можно применить два способа. Первый из них мы рассмотрели. Он состоит в использовании свойства Picture: после размещения в форме объекта image вы открываете окно свойств Properties, в правом столбце свойства picture нажимаете кнопку с тремя точками, а затем в открывшемся диалоговом окне Load Picture выбираете требуемый файл.

Второй способ предполагает использование графического изображения, подготовленного в другом приложении, и перенесенного в форму с помощью буфера обмена Windows. Он состоит в следующем:

1. Подготовьте в графическом редакторе изображение.

2. Скопируйте его в буфер обмена Windows.

3. Перейдите в программу Visual Basic.

4. Разместите в форме объект image, используя одноименную кнопку на панели элементов управления.

5. Выберите элемент управления image, чтобы он стал активен.

6. Вставьте в него изображение из буфера обмена, выбрав команду Paste (Вставить) меню Edit (Правка) или нажав комбинацию клавиш <Ctrl>+<V>.

На рис. 8.26 показано графическое изображение, вставленное в объект image формы из буфера обмена Windows.

Рис. 8.26. Вставленное из буфера обмена Windows в объект Image графическое изображение

Для загрузки изображения в объект image во время выполнения приложения используется свойство picture и функция LoadPicture следующего вида:

Image1.Picture = LoadPicture ("имяфайла")

где имяФайла — это имя файла с указанием полного пути к нему. Например, если графический файл Test_image.bmp расположен в папке \Sample диска С, то функция будет выглядеть так:

Imagel.Picture = LoadPicture ("с:\Sample\Test_image.bmp")

Для того чтобы очистить элемент управления image от размещенного в нем изображения, можно воспользоваться функцией LoadPicture следующего вида:

Image1.Picture = LoadPicture

Элемент управления Picture

Элемент управления picture (Графическое окно), размещаемый в форме с помощью кнопки PictureBox на панели элементов управления, обладает более широким набором свойств и методов, чем объект image. Он может использоваться для следующих целей:

  • для отображения графических изображений;
  • в качестве контейнера для других элементов управления;
  • в виде графического окна для вывода текста, графических элементов, анимации.

Отображение графических изображений

Для отображения графических изображений с помощью элемента управления picture используется свойство picture, значением которого является наименование графического файла. Объект данного типа позволяет отображать в форме графические файлы тех же форматов, что и элемент управления Image.

Для загрузки изображения в объект picture во время выполнения приложения применяется свойство Picture и функция LoadPicture следующего вида:

Picture1.Picture = LoadPicture ("имяФайла")

где имяФайла — это имя файла с указанием полного пути к нему.

Объект Picture характеризуется свойством AutoSize. Если это свойство имеет значение True, то при изменении размера графического изображения меняются и размеры объекта. При установке значения False усекается нс поместившаяся в объект часть изображения.

Использование объекта Picture в роли контейнера

Элемент управления picture можно использовать в качестве контейнера для объединения объектов в группы аналогично объекту Frame. Расположенные в графическом окне элементы будут перемещаться вместе с ним, что удобно при создании панелей инструментов, строки состояния.

Замечание

Для создания строки состояния удобнее использовать стандартный элемент управления Microsoft StatusBar (Строка состояния).

Использование объекта Picture для вывода текста и графических элементов

Объект picture можно использовать в качестве графического окна, в которое выводится текст и графические элементы.

Для вывода в графическое окно текста предназначен метод print. Программное размещение графических элементов осуществляется с использованием методов circle (Окружность), Line (Линия), Point (Точка), Pset (Набор точек). Метод PaintPicture позволяет создавать в графическом окне анимацию.

Замечание

Чтобы объект picture можно было использовать для вывода графических элементов и их перевывода при изменении размеров графического окна, необходимо установить значение его свойства AutoRedraw в True.

Стандартные элементы управления Microsoft

Все рассмотренные нами ранее элементы управления, помещаемые в формы, по умолчанию были помещены на панель элементов управления. Помимо них, в состав Visual Basic входит группа элементов для разработки программ,' называемая стандартными элементами управления Microsoft. С их помощью можно создавать панели управления, строки состояния, отображать данные различными способами. В табл. 8.10 приведен список стандартных элементов управления Microsoft с их кратким описанием.

Таблица 8.10. Стандартные элементы управления Microsoft
Элемент управления | Назначение
Animation | Предназначен для воспроизведения не озвученных видеоклипов
CoolBar | Служит контейнером для других элементов управления и используется для создания панелей инструментов
DTPicker | Используется для ввода дат вручную или выбором из элемента управления MonthView
ImageCombo | Усовершенствованный вариант поля со списком
ImageList | Содержит список графических изображений, предназначенных для использования других элементов управления
ListView | Список, позволяющий осуществлять настройку внешнего вида
MonthView | Элемент управления в виде календаря. Позволяет вводить дату
ProgressBar | Индикатор состояния
Slider | Регулятор в виде ползунка
StatusBar | Строка состояния
TabStrip | Создает в форме вкладки
TreeView | Представляет информацию в виде древовидной структуры
ToolBar | Используется для создания панелей инструментов
UpDown | Позволяет создавать кнопки со стрелками, нажатие которых приводит к изменению значения числового параметра

По умолчанию стандартные элементы управления Microsoft не размещены на панели элементов управления. Чтобы их туда добавить, выполните следующие действия:

1. В меню Project (Проект) выберите команду Components (Компоненты) или нажмите комбинацию клавиш <Ctrl>+<T>. Открывается диалоговое окно Components (рис. 8.27).

Рис. 8.27. Диалоговое окно Components

2. На вкладке Controls (Элементы управления) расположен список групп элементов управления. Требуемые нам стандартные элементы управления Microsoft размещены в следующих группах:

  • Microsoft Windows Common Controls 6,0;
  • Microsoft Windows Common Controls-2 6.0;
  • Microsoft Windows Common Controls-3 6.0. Установите для этих групп флажки.

3. Нажмите кнопку ОК. Выбранные нами элементы управления будут добавлены на панель (рис. 8.28).

Рис. 8.28. Панель элементов управления с добавленными стандартными элементами управления Micrisoft

Замечание

После добавления стандартных элементов управления Microsoft на панель инструментов сохраните проект, в котором вы хотите использовать эти элементы. В следующий раз при открытии этого проекта вам не придется снова размещать стандартные элементы управления Microsoft на панели инструментов, так как они там будут находиться по умолчанию.

Если вы хотите разместить на панели элементов управления не все элементы, а только необходимые вам в проекте, то не обязательно в диалоговом окне Components устанавливать флажки для всех трех групп. Группы содержат следующие элементы управления:

Наименование группы | Элементы управления
Microsoft Windows Common Controls 6.0 | ImageCombo, ImageList, ListView, ProgressBar, Slider, StatusBar, TabStrip, TreeView, ToolBar
Microsoft Windows Common Controls-2 6.0 | Animation, DTPicker, MonthView, UpDown
Microsoft Windows Common Controls-3 6.0 | CoolBar

Рассмотрим использование некоторых стандартных элементов управления Microsoft в формах.

Элемент управления ImageList

Элемент управления ImageList является списком, содержащим графические изображения. Изображения, размещенные в этом объекте, не видны во время выполнения, так как объект ImageList используется только для их хранения. Для отображения в форме изображения, расположенного в ImageList, необходимо использовать другие элементы управления, например, ImageCombo.

Чтобы поместить в форму элемент управления ImageList и настроить его свойства, выполните следующее:

1. Нажмите кнопку ImageList на панели элементов управления, установите курсор в форму и нарисуйте рамку небольшого размера.

2. Откройте окно свойств Property Pages (рис. 8.29) для размещенного в форме объекта. Для этого установите на него курсор, нажмите правую кнопку мыши и в открывшемся контекстном меню выберите команду Properties.

3. Откройте вкладку Images, предназначенную для помещения в список графических изображений.

4. Для добавления в список графического изображения нажмите кнопку Insert Picture (Вставить рисунок). С помощью открывшегося диалогового окна Select picture (Выбор рисунка) выберите требуемое изображение и нажмите кнопку Открыть. Изображение будет помещено в область Images одноименной вкладки. В поле Index (Индекс) автоматически появляется значение 1, показывающее индекс размещенного в список графического изображения.

5. В поле Key (Идентификатор) введите имя изображения, по которому можно будет обращаться к данному элементу списка без указания его порядкового номера в списке.

6. Повторяя действия, описанные в пунктах 4 и 5, введите все элементы списка.

Замечание

В графический список imageList можно помещать графические файлы разных форматов. Это могут быть растровые изображения, значки, указатели мыши, файлы в формате GIF и JPEG.

Рис. 8.29. Окно свойств элемента управления ImageList

Управлять (удалять, добавлять, изменять) графическими изображениями в элементе управления imageList можно программно, учитывая при этом, что каждое изображение будет являться частью коллекции с названием ListImages.

Замечание

Понятие коллекция введено в Visual Basic для облегчения изменения свойств группы объектов. Если элементы входят в коллекцию, для изменения их общего свойства можно использовать наименование коллекции и специальную форму оператора цикла For. Иными словами, коллекцию можно сравнить с массивом переменных, так как обращаться к входящим в нее объектам можно как к элементам массива.

Например, чтобы добавить графическое изображение в объект imageList, имеющий название ImageList_test, необходим следующий программный код:

ImageList_test.Add,, LoadPicture("с:\Му bookAPhone.bmp")

Рис. 8.30. Использование элемента управления ImageList для изменения фона формы

Рассмотрим пример использования графического изображения, помещенного в элемент управления imageList, в качестве фонового изображения формы:

1. Добавьте в список элемента управления imageList графическое изображение, которое вы хотите использовать в качестве фона для формы.

2. Откройте окно редактора кода и поместите в нем следующий код:

Private Sub Form Load()

Form1.Picture = ImageList test.Listlmages(6).Picture

End Sub

В этом коде ImageList_test — наименование объекта типа ImageList. ListImages (6) указывает, что выбирается шестой элемент из коллекции. Обращение к элементу списка осуществляется по индексу элемента.

3. Запустите форму на выполнение. Она изменит свой фон (рис. 8.30). Для ее фона использовано графическое изображение из коллекции изображений программы Windows. В нижней части показано открытое окно редактора кода.

Для обращения к элементу списка imageList можно использовать его идентификатор, вводимый в диалоговом окне Property Pages в поле Key. В этом случае программный код будет выглядеть так:

Private Sub Form_Load ()

Form1.Picture = ImageList_test.ListImages("Облака").Picture

End Sub

Элемент управления ImageCombo

Элемент управления ImageCombo представляет собой графическое поле со списком и аналогичен рассмотренному нами ранее объекту ComboBox. Но в отличие от последнего, объект типа imagecombo позволяет добавлять в раскрывающийся список не только текст, но и графические объекты.

Изображения, использующиеся в списке ImageCombo, должны быть помещены в элемент управления imageList, рассмотренный нами в предыдущем разделе этой главы.

Элементы списка ImageCombo являются объектами коллекции comboItem. Для них можно определить два индекса, задаваемых свойствами Image и SelImage, имеющими следующее назначение:

  • image — индекс изображения, выводимого в списке;
  • selimage — индекс выбранного или выделенного изображения.

    Замечание

    Если для элемента списка ImageCombo свойство SelImage не задано, то в левой стороне выбранного или выделенного в списке элемента выводится изображение, заданное свойством Image.

Чтобы добавить элементы в список или удалить их из него, используются методы Add (Добавить) и Remove (Удалить).

Рассмотрим пример отображения списком ImageCombo графических изображений, заданных элементом управления ImageList, показанным на рис. 8.29.

1. Откройте форму, содержащую элемент управления imageList с размещенными графическими изображения в виде кнопок. При размещении этого элемента в форме мы присвоили ему имя ImageList_test.

2. Разместите в форме элемент управления imageCombo. Для этого нажмите кнопку ImageCombo на панели элементов управления, установите указатель мыши в форму и нарисуйте рамку требуемого размера.

3. В окно редактора кода поместите следующую процедуру:

Private Sub Form Load()

ImageCombo1.ImageList = ImageList_test

ImageCombo1.ComboItems.Add,, "Звонок", 1

ImageCombo1.ComboItems.Add,, "Календарь", 2

ImageCombo1.ComboItems.Add,, "Чашка", 3

ImageCombo1.ComboItems.Add,, "Телефон", 4

ImageCombo1.ComboItems(3).Selected = True End Sub

Первая строка в программе указывает, что графические изображения для создаваемого нами списка типа ImageCombo выбираются из объекта с наименованием ImageList_test. Четыре строки добавляют в список графические элементы и текстовую информацию к ним с использованием следующего синтаксиса:

Add([Index], [Key], [Text], [Image], [SelImage], [Indentation]) As ComboItem

Параметр Text задает текст элемента списка, а изображение для него выбирается из объекта ImageList_test. Индекс изображения указывается с помощью параметра Image.

Последняя строка процедуры задает значение, выбираемое из списка по умолчанию.

4. Запустите форму на выполнение, и вы получите результат, показанный на рис. 8.31.

В рассмотренном нами примере для указания значения, выбираемого из списка imageCombo по умолчанию, мы использовали свойство selected, установив для него значение True:

ImageCombol.ComboItems(3).Selected = True

Для определения выбранного пользователем элемента списка можно программно опросить значение свойства SelectedItem. Текст выбранного элемента помещается в свойство Text.

Используя свойство indentation, можно задать отступы элементов в списке. Так удобнее отображать вложенную структуру списков. Для установки отступа свойству indentation необходимо присвоить целое значение, учитывая, что каждый уровень отступа равен 10 пикселам. Программный код для формирования списка, представленного на рис. 8.32, выглядит следующим образом:

Private Sub Form Load()

ImageCombo1.ImageList = ImageList test

ImageCombo1.ComboItems.Add,, "Звонок", 1

ImageCombo1.ComboItems.Add,, "Звонок!",,, 1

ImageCombo1.Comboltems.Add,, "Звонок2",,, 1

ImageCombo1.Comboltems.Add,, "Календарь", 2

ImageCombo1.Comboltems.Add,, "Календарь 1",,, 1

ImageCombo1.ComboItems.Add,, "Календарь2",,, 1

ImageCombo1.ComboItems.Add,, "Чашка", 3

ImageCombo1.ComboItems.Add,, "Телефон", 4

End Sub

Рис. 8.31. В верхней части находится форма с элементом управления imageCombo, в нижней — окно редактора кода с текстом программы

Рис. 8.32. С помощью свойства Indentation можно создать список, отдельные элементы которого имеют отступы

Элемент управления ProgressBar

Некоторые операции вашего приложения могут выполняться довольно долго, например, обработка большого массива данных или сложная выборка из базы данных, содержащей огромное количество записей. В этой ситуации пользователь начинает беспокоиться, не зависла ли программа. Работа продолжительных задач может сопровождаться отображением на экране индикатора процесса выполнения. Используем для этого стандартный элемент управления Microsoft ProgressBar (рис. 8.33).

Рис. 8.33. Использование в форме элемента управления ProgressBar

Настройка элемента управления ProgressBar достаточно проста. Для его размещения в форме используется кнопка ProgressBar на панели элементов управления. Основные свойства данного элемента управления перечислены в табл. 8.11.

Таблица 8.11. Свойства элемента управления ProgressBar
Свойство | Назначение
Height | Высота индикатора
Width | Ширина индикатора
Min | Минимальное значение свойства value. Задается в целых числах
Мах | Максимальное значение свойства Value. Задается в целых числах
Value | Значение свойства определяет, какая часть индикатора закрашена

Свойства Height и width определяют внешний вид индикатора. Значения данных параметров устанавливаются такими, чтобы ширина была значительно больше высоты. В этом случае процесс индикации более нагляден.

Свойства Min и мах задают диапазон изменения значения свойства value. По умолчанию они равны 0 и 100. Если, например, в вашем приложении определенные действия выполняются в цикле, то значения свойств Min и мах следует устанавливать исходя из параметров цикла. При этом в цикле необходимо обновлять значение свойства Value. Ниже приведен фрагмент программы, показывающий обновление данного свойства:

Dim i As Integer

i = 1

Do While i <= 1000

' На месте этих комментариев должны быть выполняемые в цикле действия ProgressBar1.Value = i

i = i + 1

Loop

Замечание

Значения свойств Min и Мах можно задавать как программно, так и в диалоговом окне Property Pages, открываемом при выборе команды Properties контекстного меню объекта ProgressBar.

Элемент управления Slider

Элемент управления Slider представляет собой ползунок, позволяющий вводить в программу числовые значения. Он размещается в форме с помощью кнопки Slider на панели элементов управления.

Для управления внешним видом ползунка используются следующие свойства:
Свойство | Назначение
BorderStyle | Управляет наличием вокруг ползунка сплошной рамки. По умолчанию рамка отсутствует (рис. 8.34, слева)
Orientation | Задает горизонтальное или вертикальное расположение ползунка
TickStyle | Задает расположение делений на линейке бегунка (рис. 8.34, справа)
TickFrequency | Определяет частоту делений на линейке бегунка

Свойство TickStyle задает расположение делений на линейке бегунка и может принимать следующие значения:

  • O-sldBottomRight — у горизонтального бегунка деления расположены снизу, у вертикального — справа;
  • 1-sldTopLeft — у горизонтального бегунка деления расположены сверху, у вертикального — слева;
  • 2-sldBoth — деления расположены по обеим сторонам бегунка;
  • 3-sldNoTicks — деления отсутствуют.

Внешний вид бегунка меняется в зависимости от значения свойства Tickstyle (рис. 8.34).

Рис. 8.34. Оформление ползунка в зависимости от значений свойств BorderStyle и TickStyle

Помимо свойств, влияющих на оформление ползунка, он обладает свойствами, определяющими его поведение.

Свойство | Назначение
LargeChange | Задает величину, на которую будет смещаться ползунок при щелчке кнопкой мыши на линейке или нажатии клавиш <Pagellp> и <PageDown>
Small Change | Задает величину, на которую будет смещаться ползунок при нажатии клавиш < <-- > и < --> >
Min, Max | Задают диапазон значений ползунка
SelectRange | Определяет, сколько значений можно выбрать на линейке ползунка — одно или диапазон значений

После размещения бегунка, в форме необходимо задать диапазон значений, используя свойства Min и мах, устанавливаемые с помощью данного элемента управления. В свойстве value (Значение) хранится введенное посредством бегунка значение.

Элемент управления StatusBar

Со строкой состояния вы постоянно сталкиваетесь при работе в различных приложениях Windows. Например, просматривая текст в Microsoft Word, вы по строке состояния ориентируетесь, на какой странице документа находитесь. При работе с таблицами базы данных вы обращаетесь к строке состояния, чтобы узнать номер обрабатываемой записи. Строка состояния используется в приложении для информирования пользователя о текущем состоянии приложения. Желательно, чтобы разрабатываемое вами приложение также имело строку состояния. До появления элемента управления StatusBar для создания строки состояния применялись искусственно выделяемые области с использованием других элементов управления, например PictureBox, в которых размещались соответствующие надписи.

Для создания в форме строки состояния с помощью стандартного элемента управления StatusBar выполните следующие действия:

1. Нажмите кнопку StatusBar на панели элементов управления.

2. Установите курсор мыши в любое место формы и нарисуйте рамку. Ее размеры и расположение не имеют значения, так как Visual Basic по умолчанию поместит ее внизу формы и растянет на всю ширину (рис. 8.35).

Рис. 8.35. Размещение в форме элемента управления StatusBar

3. Чтобы установить требуемую высоту строки состояния, используйте курсор мыши или свойство Height (Высота).

4. Если вы хотите, чтобы строка состояния располагалась в другом месте, скорректируйте свойство Align. Оно может принимать следующие значения:

  • vbAlignNone — строку состояния можно расположить в любой части формы;
  • vbAlignTop — строка состояния располагается в верхней части формы;
  • vbAlignBottom — строка состояния располагается в нижней части формы. Это значение устанавливается по умолчанию при создании объекта StatusBar. Такое положение формы более привычно для пользователя;
  • vbAlignLeft — строка состояния располагается по левому краю формы;
  • vbAlignRight — строка состояния располагается по правому краю формы.

5. Используя свойство Style, вы можете задать количество панелей, содержащихся в строке состояния. Свойство может принимать следующие значения:

  • sbrNormal — позволяет отобразить в строке состояния несколько панелей, каждая из которых предназначается для вывода параметров. Это значение используется по умолчанию при создании объекта StatusBar. Для настройки свойств панелей строки состояния используется диалоговое окно Property Pages;

    Замечание

    Каждая панель строки состояния является элементом коллекции панелей Panels. Нумерация панелей в коллекции начинается с 1. Количество панелей в строке состояния задается значением свойства count (Количество).

  • sbrSimple — позволяет отобразить в строке состояния одну панель, на которой отображается одна надпись, задаваемая свойством SimpieText.

Настройка панелей строки состояния

Каждая из панелей строки состояния настраивается отдельно. Для настройки панелей можно использовать диалоговое окно Property Pages (рис. 8.36), открываемое при выборе команды Properties контекстного меню объекта StatusBar.

Рис. 8.36. Вкладка Panels диалогового окна Property Pages

В верхней части вкладки Panels (Панели) диалогового окна Property Pages расположено поле index, указывающее номер панели, для которой в данный момент отображаются свойства. Кнопки Insert Panel (Добавить панель) и Remove Panel (Удалить панель) позволяют добавлять или удалять панель из строки состояния.

Замечание

Для программного добавления и удаления панелей используются методы коллекции Panels Add (Добавить) и Remove (Удалить). Для удаления всех панелей из строки состояния используется метод Clear (Очистить).

На вкладке Panels диалогового окна Property Pages можно, используя одноименные поля, настроить свойства панелей, перечисленные в табл. 8.12.

Таблица 8.12. Свойства панелей
Свойство | Назначение
Text | Задает текст, отображаемый на панели. Как правило, значение свойства формируется программно. Чтобы программно изменить значение, выводимое на панель, необходимо присвоить этому свойству текстовое значение. Например: StatusBar1.Panels(1).Text = "Новое значение, выводимое на панель"
ToolTipText | Задает текст подсказки, который будет появляться под курсором при установке его на панель и удерживании там некоторое время
Alignment | Определяет выравнивание информации, отображаемой на панели (по левому краю, по центру, по правому краю)
Style | Задает тип панели
Bevel | Управляет внешним видом панели, устанавливая разные типы эффекта объемности
AutoSize | Определяет, как будет задаваться размер панели
MinWidth | Минимальный размер панели
Picture | Графическое изображение, помещаемое на панель

Свойство style задает тип отображаемой на панели информации. Значения данного свойства представлены в табл. 8.13.

Таблица 8.13. Значения свойства style
Значение свойства | Назначение панели
sbrText | Отображает информацию, задаваемую свойствами Text или Picture
sbrCaps | Отображает состояние, в котором находится клавиша <Caps Lock>. При включении верхнего регистра появляется надпись CAPS
sbrNum | Отображает состояние, в котором находится клавиша <Num Locks». При активной клавише появляется надпись NUM
sbrIns | Отображает состояние, в котором находится клавиша <lnsert>. При активной клавише появляется надпись INS
sbrScrl | Отображает состояние, в котором находится клавиша <Scroll Lock>. При активной клавише появляется надпись SCRL
sbrTime | Показывает текущее время
sbrDate | Показывает текущую дату

Свойство AutoSize определяет, как будет задаваться размер панели из программы, и может принимать следующие значения:

  • NoAutoSize — размер панели задается свойством MinWidth. Это значение свойства Autosize используется по умолчанию;
  • sbrContents — размер панели задается исходя из размера выводимой на ней информации;
  • sbrSpring — размер панелей задается таким образом, чтобы они заполняли всю строку состояния.

Свойство Bevel управляет объемностью панели и может принимать следующие значения:

  • sbrNoBevel — плоская панель;
  • sbrlnsert — вдавленная панель (напоминает текстовое поле). Это значение используется по умолчанию;
  • sbrRaised — выпуклая панель (напоминает кнопку управления).

Элемент управления TabStrip

Visual Basic позволяет создавать формы, содержащие несколько вкладок. Объекты данного типа выгодно применять в тех случаях, когда необходимо разместить большой объем информации или для удобства пользователя требуется сгруппировать в одном месте основную, наиболее часто используемую информацию, отделив ее от менее важной.

Для создания вкладок в форме служит элемент управления TabStrip. Изучим, как разместить данный элемент в форме и настроить его свойства:

1. Откройте форму, в которой вы хотите создать вкладки.

2. Нажмите кнопку TabStrip на панели элементов управления.

3. Установите указатель в форму и, удерживая кнопку мыши в нажатом состоянии, переместите курсор по диагонали так, чтобы получилась рамка размером с форму.

4. Откройте окно свойств созданного объекта. Для этого установите на него курсор, нажмите правую кнопку мыши и выберите в контекстном меню команду Properties.

5. В открывшемся диалоговом окне Property Pages перейдите на вкладку Tabs.

6. Используя кнопку Insert Tab, добавьте в объект TabStrip необходимое количество вкладок.

7. Поле Index указывает номер вкладки, для которой настраиваются свойства. Выбирая поочередно номер нужной вкладки, введите их наименования с помощью свойства caption.

8. Нажмите кнопку ОК для закрытия диалогового окна. Ваша форма показана на рис. 8.37.

Замечание

Элемент управления TabStrip не является контейнером. Координаты размещенных в форме элементов управления задаются относительно самой формы, а не элемента управления TabStrip, и при его перемещении остаются на месте. Для того чтобы размещенные в форме элементы не загораживались объектом TabStrip, его необходимо поместить на задний план командой Send to Back.

Рис. 8.37. Элемент управления TabStrip

Элемент управления UpDown

Элемент управления UpDown предназначен для ввода пользователем числовой информации и представляет собой две кнопки с направленными в противоположные стороны стрелками (рис. 8.38). Этот объект служит только для совместной работы с элементами управления, которые могут использоваться для ввода числовой информации. Например, вы можете применять его для ввода чисел в текстовое поле. В этом случае каждое нажатие кнопки с направленной вверх стрелкой будет увеличивать, а нажатие кнопки с направленной вниз стрелкой — уменьшать размещенное в поле число на определенное значение.

Замечание

Элемент управления UpDown может быть расположен горизонтально. В этом случае кнопка с направленной влево стрелкой используется для уменьшения, а с направленной вправо стрелкой —для увеличения числового значения.

Рис. 8.38. Элемент управления UpDown, предназначенный для ввода числовых значений

Свойства элемента управления UpDown перечислены в табл. 8.14.

Таблица 8.14. Свойства элемента управления UpDown
Свойство | Назначение
Alignment | Указывает, слева или справа от связанного элемента будет располагаться элемент UpDown
AutoBuddy | При установке для данного свойства значения True в качестве связанного с объектом UpDown элемента управления будет использоваться ближайший подходящий объект
BuddyControl | Имя элемента управления, в который будет вводиться числовое значение с помощью элемента управления UpDown
Increment | Шаг, с которым будет изменяться числовое значение
Max | Максимально допустимое значение, вводимое с помощью элемента управления UpDown
Min | Минимально допустимое значение, вводимое с помощью элемента управления UpDown
Orientation | Определяет вертикальное или горизонтальное расположение кнопок в элементе управления
SyncBaddy | Предписывает обновлять значение связанного с ним элемента управления. Должно иметь значение True
Value | Предназначено для считывания значения, введенного с помощью элемента управления UpDown
Wrap | Служит для установки минимального значения при превышении максимального значения

Предупреждение

Для обновления значения, связанного с объектом UpDown элемента управления, значение свойства SyncBaddy обязательно должно быть равно True. Кроме того, необходимо учитывать, что при вводе в связанное поле информации с использованием клавиатуры, свойство value элемента управления UpDown не изменяется. Возникает ситуация, при которой свойство Value не отражает реального значения связанного с ним элемента управления. Чтобы этого избежать, необходимо обновлять значение свойства Value при возникновении события change для связанного элемента управления.

Помимо этого, элемент управления upDown распознает следующие события:

Событие | Возникает
Change | При изменении свойства Value
DownClick | При нажатии кнопки с направленной вниз стрелкой
UpClick | При нажатии кнопки с направленной вверх стрелкой

Элемент управления MonthView

Элемент управления Monthview (рис. 8.39) представляет собой календарь, с помощью которого можно выбирать дату. В его верхней части расположены кнопки со стрелками, позволяющие перемещаться по месяцам. По умолчанию в нижней части календаря отображается текущая дата.

Рис. 8.39. Элемент управления Monthview, предназначенный для ввода дат

Для управления внешним видом календаря используются следующие основные свойства:

  • showToday — при установке значения True в нижней части календаря отображается текущая дата;
  • ShowweekNumbers — при установке значения True с левой стороны календаря отображается столбец с номерами недель. По умолчанию установлено значение False;
  • ScrollRate — определяет шаг, с которым будет осуществляться прокрутка календаря при нажатии кнопок перемещения по месяцам.

Метод DayBold позволяет выделить требуемые даты (например, праздники), полужирным шрифтом.

Свойства, перечисленные в табл. 8.15, позволяют изменить используемый по умолчанию цвет разделов календаря.

Таблица 8.15. Свойства, изменяющие цвет разделов календаря
Свойство | Назначение
ForeColor | Задает цвет дней месяца и линии, расположенной под днями недели
MonthBackColor | Задает цвет фона области, на которой расположены дни месяца
TitleBackColor | Задает цвет области заголовка календаря, в которой расположено название месяца
TitleForeColor | Задает цвет названия месяца
TrailingForeColor | Задает цвет дней не текущего месяца, если они отображаются в календаре

Рис. 8.40. Отображение в форме нескольких месяцев

В форме можно отобразить несколько месяцев, используя свойства MonthRows и MonthColunms. Максимально можно отобразить 12 месяцев. На рис. 8.40 показан календарь, для которого свойство MonthRows имеет значение 2, а свойство MonthColumns — 3.

Работа с календарем

Чтобы определить выбранную в элементе управления Monthview дату, необходимо воспользоваться свойством Value. Помимо этого, данный элемент управления характеризуется дополнительными свойствами, позволяющими определить число, месяц и год выбранной из календаря даты, а также номер недели:

  • Day — день месяца;
  • Month — номер месяца;
  • Year — ГОД;
  • week — номер недели от начала года.

Рис. 8.41. Поля формы отображают выбранную из календаря дату

На рис. 8.41 показана форма, содержащая элемент управления Monthview, и поля, отображающие выбранную из календаря дату, номер месяца и год, а также окно редактора кода с командами. Для отображения параметров в процедуру обработки выбора даты из календаря DateClick помещены следующие команды:

Text1.Text = MonthView1.Value

Text2.Text = MonthView1.Day

Text3.Text = MonthView1.Month

Text4.Text = MonthView1.Year

С помощью элемента управления Monthview можно выбирать диапазон дат. Для этого необходимо установить для свойства MultiSelect значение True. После этого для определения диапазона выбранных дат используются значения свойств SelStart И SelEnd.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 9. Работа с файлами и организация печати.

При проектировании приложения достаточно часто возникает необходимость работать непосредственно с файлами. Это требуется, например, для добавления, удаления файлов или каталогов (папок), записи данных в файлы или чтения из них как программно, так и в интерактивном режиме. Необходимость работы с файлами возникает также при создании программы инсталляции разработанного приложения на пользовательские компьютеры, чтения данных из файлов при инициализации приложения с использованием файлов настройки, организации вывода файлов на печать. Для этих целей Visual Basic 6 предоставляет полный набор функций, работающих с файлами, папками и устройствами, дающий возможность производить с ними все необходимые действия.

В Visual Basic 6 существует понятие типа файла, который определяется организационной структурой хранения информации в файле и способом доступа к этой информации. Принято выделять следующие типы файлов.

Файлы последовательного доступа. Как правило, это текстовые файлы или аналогичные им. Такие файлы представляют собой последовательность символов. При этом данные могут быть с разделителями или без разделителей, то есть содержание файла может иметь некую структуру. Структурной единицей содержимого в подобных файлах, как правило, является строка. Примерами этих файлов могут служить текстовые файлы и файлы инициализации программ.

Файлы произвольного доступа. Это структурированные файлы, которые содержат информацию в виде записей. Примером могут служить файлы баз данных.

Двоичные (бинарные) файлы. Файлы с побайтным доступом. В принципе, это те же файлы с последовательным доступом, но информация в них не организована в строки. Особенность данных файлов — работа с байтами или блоками байтов. К таким файлам можно отнести выполняемые программы, файлы динамических библиотек, файлы документов Word.

Подобное деление файлов на типы достаточно условно и определяется особенностями организации файлов и доступа к данным в них. Например, файл с последовательным доступом можно открыть и в режиме двоичного доступа. Если этот файл имеет разделители, то для работы с ним придется написать специальную процедуру обработки разделителей и разбора данных, так как двоичный доступ обеспечивает побайтную запись/чтение из файла. Очевидно, что это неудобно. Именно поэтому и введено условное деление файлов на типы в зависимости от формата файла и доступа к данным. Соответственно сгруппированы и функции Visual Basic для записи/чтения данных. Мы рассмотрим работу с каждым из типов файлов, понимая, что такое разделение на типы достаточно условно, но позволяет обеспечить наиболее эффективную обработку данных для каждого типа.

Замечание

Вероятно, более корректным было бы сказать не файл последовательного доступа, а файл, открытый для последовательного доступа, не двоичный файл, а файл, открытый для двоичного доступа. Однако далее будем придерживаться именно такой терминологии, которая указывает тип файла.

Тип файла задает оптимальный набор функций записи и чтения данных из файла. Поэтому при работе с файлами для написания эффективной программы всегда необходимо иметь представление о типах файлов, с которыми будет работать программа, и об организации хранения данных в этих файлах. Это дает возможность обеспечить оптимальный доступ и использовать соответствующие этому доступу функции.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Традиционный подход при работе с файлами

Традиционный подход при работе с файлами остается неизменным практически с самых первых версий Visual Basic и заключается в использовании функций и операторов, обеспечивающих прямой доступ к информации в файлах. Функции и операторы, используемые при работе с файлами, приведены в табл. 9.1. В столбце Тип файла этой таблицы приняты следующие сокращения типов файлов:

  • П — файл последовательного доступа;
  • Пр — файл произвольного доступа;
  • Б — бинарный файл.

В данной главе мы рассмотрим только основные функции и операторы, необходимые для получения навыков работы с файлами.

Таблица 9.1. Функции и операторы для работы с файлами
Функция,оператор | Описание | Тип файла
Open | Открывает файл | П, Пр, Б
Close | Закрывает все файлы | П, Пр, Б
Close # | Закрывает файл по идентификатору (дескриптору) | П, Пр, Б
Reset | Закрывает все открытые файлы, записывает содержимое буферов | П, Пр, Б
Print tt | Записывает данные в файл | П
FileCopy | Копирует файл | П, Пр, Б
EOF | Определяет метку конца файла | П, Пр, Б
FileAttr | Возвращает режим доступа открытого файла | П, Пр, Б
FileDateTime | Возвращает дату и время создания файла | П, Пр, Б
FileLen | Возвращает размер файла в байтах | П, Пр, Б
FreeFile | Возвращает номер свободного идентификатора файла (дескриптора) | П, Пр, Б
GetAttr | Получает атрибуты файла | П, Пр, Б
SetAttr | Устанавливает атрибуты файла | П, Пр, Б
Loc | Возвращает номер текущей позиции в файле | Пр, Б
LOF | Возвращает размер открытого файла в байтах | П, Пр, Б
Seek | Устанавливает на заданную номером позицию или запись в файле | П, Пр, Б
Dir | Возвращает содержимое текущей папки | П, Пр, Б
Kill | Удаляет файл | П, Пр, Б
Lock | Блокирует файл при работе в многопользовательской среде | П, Пр, Б
Unlock | Снимает блокировку файла в многопользовательской среде | П, Пр, Б
Name | Задает (переименовывает) имя файла | П, Пр, Б
Get # | Читает данные из файла | Пр.Б
Input | Читает данные из файла | П, Б
Input # | Читает данные из файла | П
Line Input # | Читает строку из файла | П
Put # | Записывает данные в файл | Пр, Б
Write # | Записывает данные в файл | П

Для удобства сгруппируем функции и операторы по выполняемому действию, как это принято в Visual Basic. Такое объединение удобно при выборе функции или оператора для выполнения необходимых действий с файлами (табл. 9.2).

Таблица 9.2. Функции и операторы для работы с файлами по группам
Выполняемое действие | Функции, операторы
Открыть или создать файл | Open
Закрыть файл | Close, Reset
Определение параметров вывода данных | Format, Spc, Tab, Width #
Скопировать файл | FileCopy
Получить информацию о файле | EOF, FileAttr, FlleDateTime, FileLen, FreeFile, GetAttr, Loc, LOF
Организовать управление файлами | Dir, Kill, Lock, Unlock, Name
Прочитать данные из файла | Get #, Input, Input ft, Line Input #
Получить информацию о размере файла | FileLen
Установить атрибуты файла | SetAttr
Найти позиции в файле | Seek
Записать данные в файл | Print tt, Put #, Write ft


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Открытие файлов

Как было указано выше, работа с каждым из типов файлов имеет свои особенности. Однако есть два действия, общие для всех типов файлов — их открытие и закрытие.

Понятно, что перед тем как записать данные в файл или прочитать данные из файла, необходимо сначала открыть этот файл. Открытие файла выполняется оператором open:

Open pathName For mode [access] [lock] As [#]fileNumber [Len=recLength]

где:

  • pathName — полное имя файла;
  • mode — режим доступа к файлу. Может принимать следующие значения: Append, Binary, Input, Output или Random;
  • access — тип доступа к файлу. Определяет характер действий с файлом — чтение или запись данных. Может принимать значения: Read (Чтение), Write (Запись) или Read/Write (Чтение/Запись);
  • lock — тип разрешения доступа к файлу другим процессам. Определяет возможность одновременной работы с файлом нескольких приложений или нескольких пользователей. Может принимать значения: Shared (Общий), Lock Read (Блокировка чтения), Lock Write (Блокировка записи) или Lock Read Write (Блокировка чтения и записи);
  • fileNumber — целочисленное выражение, задающее идентификатор файла (дескриптор). Может иметь значение от 1 до 511 включительно;
  • recLength — число, определяющее размер буфера данных для записи/чтения в файлах прямого доступа. Для файлов произвольного доступа это число задает длину одной записи файла. Может иметь значение до 32,767 (байтов).

При работе оператора Open создается специальный счетчик номеров (идентификаторов) открытых файлов (в операторе это параметр fileNumber) для однозначного определения файла, с которым программа работает в текущий момент.

Если указанный в операторе open файл не найден по заданному пути или не существует, он будет создан этим оператором для режимов доступа Append, Binary, output или Random. Для режима доступа input новый файл не создается.

Важной особенностью режимов доступа является возможность многократного открытия файла для режимов Binary, input и Random, то есть файл можно открыть несколько раз с разными номерами. Но для режимов доступа Output и Append, используемых для записи данных, это недопустимо.

Если номер открываемого файла специально не контролируется и не задается программой, его можно узнать с помощью функции FreeFile, возвращающей последний свободный номер открываемого файла.

Замечание

При использовании оператора Open необходимо, чтобы режим доступа соответствовал типу открываемого файла.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Закрытие файлов

Закрытие файлов выполняется очень просто. Для этого необходимо использовать оператор close, имеющий следующий синтаксис:

Close [fileNumberLlist]

где fileNumberLlist — список закрываемых файлов, представленных номерами файлов и перечисляемых через запятую: [#fileNumber] [,#fileNumber] . . . [,# fileNumber]. При этом номер файла аналогичен номеру файла в функции open.

Предупреждение

Необходимо иметь в виду, что если список файлов не указан, оператор close закрывает все открытые файлы.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с файлами последовательного доступа

Файлы последовательного доступа — это, как правило, текстовые файлы, то есть последовательности ASCII-символов, организованные в строки. Примером может служить файл инициализации Windows NT (рис. 9.1).

При открытии файлов последовательного доступа возможны три режима доступа:

  • Input — открыт для последовательного чтения данных;
  • Output — открыт для последовательной записи данных, при этом информация записывается всегда с начала файла (предыдущая затирается, если в файле уже что-то записано);
  • Append — открыт для добавления данных к уже имеющимся в файле.

Рис. 9.1. Пример файла последовательного доступа


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Чтение данных

Чтение данных из файла последовательного доступа выполняется с помощью функции Input и операторов Input # и Line Input #. Рассмотрим эти функции и операторы.

Функция Input имеет следующий синтаксис:

Input(number, #fileNumber)

где:

  • number — целое число, которое задает количество считываемых из файла символов;
  • fileNumber — номер файла, аналогичный номеру файла в операторе open.

Функция Input считывает из файла заданное количество символов и обычно используется для чтения данных, записанных в файл оператором print #.

Замечание

Следует иметь в виду, что функция input требует знания количества считываемых символов. Поэтому для чтения данных из файла необходимо предварительно вычислить его длину с помощью функции FileLen.

Если в программе требуется прочитать данные из файла, в котором информация в строках имеет структуру с разделителями (в качестве разделителей используются запятые), необходимо применить оператор Input #:

Input #fileNumber, varlist

где:

  • fileNurnber — номер файла, аналогичный номеру файла в операторе open;
  • varlist — список переменных.

При работе этого оператора сначала считывается целая строка, а затем подстроки, отделенные разделителями (запятыми), помещаются в соответствующие переменные списка. Для корректной работы оператора строки файла должны иметь заданную структуру с разделителями. Обычно этот оператор используется в паре с оператором записи write #.

Для чтения всего содержимого файла при помощи оператора Input # необходимо организовать циклическое считывание данных из файла, поскольку данные считываются этим оператором по строкам.

Для построчного чтения данных из последовательного файла применяется оператор Line Input #. Синтаксис этого оператора следующий:

Line Input # fileNurnber, varName

где:

  • fileNurnber — номер файла, аналогичный номеру файла в операторе open;
  • varName — имя переменной.

Оператор Line Input # посимвольно считывает всю строку данных из файла и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13) + CHR(10), причем в переменную varName эти разделители не вставляются.

Замечание

Обычно оператор Line Input # используется в паре с оператором Print #.

Для того чтобы прочитать все данные из файла при помощи оператора Line Input #, необходимо организовать цикл чтения данных.

Для изучения функций и операторов, предназначенных для работы с файлами, создадим небольшое приложение. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFileProject. Используйте для этого окно свойств проекта, которое можно вызвать командой Project1 Properties (Свойства Project1) меню Project (Проект). После переименования проекта эта команда именуется MyFileProject Properties (Свойства MyFileProject).

3. Для выбора файлов потребуются диалоговые окна открытия и сохранения файлов. С помощью диалогового окна Components (Компоненты), вызываемого командой Components меню Project (Проект), подключите к проекту библиотеку Microsoft Common Dialog Control 6.0 и нажмите кнопку ОК.

4. Переименуйте форму проекта, присвоив ей название FormForFile.

5. В свойство caption формы введите заголовок Работаем с файлами.

6. Добавьте в форму элемент управления типа TextBox для ввода/вывода данных и присвойте ему имя txtFile. Придайте текстовому полю достаточно большие размеры, чтобы оно занимало практически все пространство формы. Установите свойство поля Multi-Line в значение True.

7. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления.

Совет

Если панель элементов управления отсутствует на экране, для ее отображения в меню View (Вид) выберите команду ToolBox (Панель инструментов).

8. Присвойте созданному объекту типа CommonDialog имя cdCommonDialog.

9. Для фильтрации файлов в свойство Filter объекта cdCommonDialog введите следующий текст: Все файлы (*. *) |*. * | Текстовые файлы (*. txt) \ *. txt \.

10. Добавьте В форму FormForFile кнопку управления типа CommandButton,

дважды щелкнув мышью кнопку CommandButton на панели элементов управления.

11. После появления объекта в форме назовите эту кнопку cbstart и присвойте свойству Caption значение Выполнить. Созданная в форме кнопка cbstart будет служить для выполнения действий по событию кнопки Click.

Созданное тестовое приложение показано на рис. 9.2.

Полученное приложение можно теперь использовать для изучения работы с файлами. Запрограммируем приложение на чтение данных из файла последовательного доступа. Для этого откроем окно редактора кода и введем следующий код:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Dim nFileLenght As Integer

Private Sub cbStart_Click()

cdCommonDialog.ShowOpen

strFileName = cdCommonDialog.FileName

nFreeFile = FreeFile

If strFileName <> "" Then

Open strFileName For Input As nFreeFile

nFileLenght = FileLen(strFileName)

strFileContent = Input(nFileLenght, #nFreeFile)

txtFile.Text = strFileContent

Close

End If

End Sub

Рис. 9.2. Вид приложения для изучения функций работы с файлами

Работающее приложение показано на рис. 9.3. В данном случае при нажатии кнопки Выполнить открывается диалоговое окно поиска файла. Путь и имя файла, возвращаемое диалоговым окном, хранятся в переменной strFileName. Найденный файл (он должен быть текстовым) открывается при помощи оператора open для чтения данных. Функция input считывает сразу весь файл в переменную strFileContent, содержимое которой затем помещается в текстовое поле txtFile. После выполнения всех действий файл закрывается оператором close.

Чтобы прочитать данные при помощи оператора Line Input #, необходимо заменить текст кода, расположенный сразу после оператора open, на следующий:

Do While Not EOF(nFreeFile)

Line Input #nFreeFile, strFileContent

txtFile.Text = txtFile.Text + strFileContent +Chr$(13) + Chr$(10) Loop Close

В этом цикле данные из файла построчно считываются в переменную strFileContent и помещаются в текстовое поле txtFile. Цикл работает до достижения конца файла, который контролируется функцией EOF. Применение цикла не требует знания длины файла, что иногда предпочтительнее.

Рис. 9.3. Считывание данных из файла

Для изучения работы оператора input # добавьте в форму еще одно текстовое поле. Назовите его txtNumber И установите свойство поля DataFormat

в значение Number. Текст в приложении после оператора open необходимо заменить на следующий:

Dim nFileContent As Integer

Input #nFreeFile, strFileContent, nFileContent

txtFile.Text = strFileContent

txtNumber.Text = nFileContent

Close

Рис. 9.4. Считывание данных из строк файла в переменные

Работающее приложение показано на рис. 9.4. При этом строки открываемого файла имеют структуру, аналогичную следующей строке:

Это файл для проверки функций, 100

то есть текст и число расположены через запятую.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Переход на заданную позицию в файле

Переход на заданную позицию в файле можно организовать с помощью оператора seek, имеющего следующий синтаксис:

Seek #fileNumber, position

где:

  • fileNumber — номер файла, аналогичный номеру файла в операторе open;
  • position — целочисленное выражение, задающее позицию указателя в файле. Позиционирование при этом выполняется посимвольно.

Оператор seek устанавливает указатель на требуемую позицию. Если после этого использовать функции чтения или записи, то действие этих функций будет выполняться начиная с позиции указателя, найденного оператором Seek.

Можно в код приложения MyFileProject непосредственно перед функцией input вставить выражение, задающее позиционирование:

Seek #nFreeFile, 77

nFileLenght = nFileLenght — 76

В этом случае данные из файла будут считаны начиная с 77 по счету символа от начала и до конца файла. При этом необходимо уменьшить число считываемых символов, поскольку считывается весь файл.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Запись данных

Данные в файл последовательного доступа записываются с помощью операторов print # и write #. Оператор write # дополнительно автоматически вставляет в файл разделители, но не дает гибкости при управлении форматированием данных. Как можно было заметить при изучении функций чтения данных, каждая из функций записи работает в паре с определенной функцией чтения. Для оператора print # это функции Input или Line Input #, а для оператора write #t — это Input #.

Совет

Рекомендуется при применении операций записи/чтения данных из файлов использовать именно такие пары функций и операторов записи/чтения.

Рассмотрим оператор print #. Он имеет следующий синтаксис:

Print #fileNumber, [outputlist]

где:

  • fileNumber — номер файла, аналогичный номеру файла в операторе open;
  • outputlist — список выражений или переменных для записи.

Оператор write ft имеет следующий синтаксис:

Write #fileNumber, [outputlist]

где:

  • fileNumber — номер файла, аналогичный номеру в операторе open;
  • outputlist — список выражений или переменных для записи.

При выполнении записи данных в файл оператор write # после каждой строки автоматически вставляет символ перевода каретки CHR(13) и символ новой строки CHR(10).

Заменим код в нашем приложении MyFileProject на следующий:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Private Sub cbStart_Click()

nFreeFile = FreeFile

cdCommonDialog.ShowSave

strFileName = cdCommonDialog.FileName

If strFileName <> "" Then

Open strFileName For Output As nFreeFile

strFileContent = txtFile.Text

Print #nFreeFile, strFileContent

Close

End If

End Sub

В полученном приложении данные, введенные в текстовое поле, будут записываться оператором print # в файл, найденный при помощи диалогового окна сохранения файлов.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с файлами произвольного доступа

Файл с произвольным доступом обладает заранее заданной структурой и состоит из записей. Каждая запись в файле — это некоторая порция данных, которая имеет строго определенный размер и свой конкретный номер в файле. Доступ к данным в файле произвольного доступа осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Примерами файла произвольного доступа являются базы данных, всегда имеющие строго определенную структуру.

При открытии файлов произвольного доступа возможен только один режим доступа — Random. Кстати, этот режим является режимом по умолчанию для функции Open.

Используя возможности Visual Basic, можно создать файл произвольного доступа пользовательской, то есть своей собственной структуры. Продемонстрируем это на небольшом примере. С помощью оператора туре объявим тип переменной, имеющей заданную .структуру записи:

Type PhisFace

PhisFaseID As Integer

FIO As String * 50

End Type

В данном примере объявлена структура в виде записи из двух полей. Первым полем является идентификатор, а вторым — фамилия, имя и отчество.

Замечание

Объявление пользовательского типа данных необходимо осуществлять в программном модуле. Для добавления программного модуля в проект следует выполнить команду Add Module (Добавить модуль) из меню Project (Проект) и на вкладке New (Новый) появившегося диалогового окна Add Module выбрать значок с названием Module (Модуль).


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Открытие файла произвольного доступа

Файл произвольного доступа открывается несколько иначе, чем файл последовательного доступа. Синтаксис оператора open при этом выглядит следующим образом:

Open pathName [For Random] As fileNumber Len = recLength

где:

  • pathName — полное имя файла;
  • fileNumber — номер файла;
  • recLength — длина записи в байтах.

При использовании оператора Open для открытия файла произвольного доступа атрибут For не обязателен, так как в Visual Basic 6 этот параметр устанавливается по умолчанию. Как видно из синтаксиса, в отличие от файла с последовательным доступом, при открытии файла с произвольным доступом необходимо обязательно указывать длину записи. При этом, если длина записи не известна, ее можно вычислить с использованием функции Len.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Чтение данных из файла произвольного доступа

Данные из файла произвольного доступа, как правило, считываются записями. Для этого используется оператор Get #, который имеет следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNumber — номер записи в файле;
  • varName — переменная.

Если параметр recNumber в функции Get не указан, считывается текущая запись, на которой позиционирован указатель.

Для позиционирования указателя можно использовать функцию seek. Синтаксис этого оператора такой же, как для файлов последовательного доступа, но имеет другой смысл. Если для последовательных файлов позиционирование выполняется по символам, то для файлов произвольного доступа — по номеру записи:

Seek #fileNumber, position

где:

  • fileNumber — номер файла;
  • position — целочисленное выражение, которое задает номер записи в файле.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Запись в файл произвольного доступа

Для записи данных в файл произвольного доступа используется оператор Put #, имеющий следующий синтаксис:

Put #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла, аналогичный номеру в операторе open;
  • recNumber — целочисленное выражение, которое задает номер записи в файле;
  • varName — переменная, указывающая источник записываемых данных.

Этот оператор используется только для файлов произвольного доступа и бинарных. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи.

Замечание

При использовании оператора Put необходимо иметь в виду, что данные в записи с указанным в операторе номером будут заменены на те, которые мы записываем в файл. Добавление записей выполняется при помощи этого же оператора, но с некоторыми особенностями. Об этом речь пойдет в следующем разделе.

Рассмотрим небольшой пример. Воспользуемся приложением MyFileApp, изменив его следующим образом:

1. Измените наименование кнопки Выполнить на Запись.

2. Добавьте в форму еще одну кнопку управления.

3. Присвойте созданной кнопке наименование cbRead, используя свойство Name.

4. В свойство Caption введите значение Чтение.

5. Добавьте в приложение программный модуль, воспользовавшись командой Add Module (Добавить модуль) из меню Project (Проект).

6. В код модуля введите текст описания пользовательского типа данных:

Type Phis Face

PhisFaseID As Integer

FIO As String * 50

End Type

7. Откройте окно редактора кода и замените находящийся там код на следующий:

Dim ForFileRecords As PhisFace

Dim nRecNo As Integer

Private Sub SaveRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

ForFileRecords.PhisFaseID = txtNumber.Text

ForFileRecords.FIO = txtFile.Text

Put #1, nRecNo, ForFileRecords

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub ReadRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

Get #1, nRecNo, ForFileRecords

txtNumber.Text = ForFileRecords.PhisFaseID

txtFile.Text = ForFileRecords.FIO

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub Form Load()

nRecNo = 1

End Sub

Private Sub cbStart_Click()

Call SaveRecord

End Sub

Private Sub cbRead_Click()

Call ReadRecord

End Sub

В тексте этого кода мы объявили переменные ForFileRecords пользовательского типа для описания структуры файла и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл требуемой структуры.

8. Запустите приложение. При нажатии кнопки Запись выполняется запись содержимого текстовых полей в файл созданной структуры. При нажатии кнопки Чтение эти данные можно прочитать в текстовом поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает собственную процедуру выполнения действия.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Изменение данных в файле произвольного доступа

Для изменения данных в записях файла (редактирование, добавление, удаление записей) применяется оператор put ft. При его использовании необходимо иметь в виду, что данные в записи будут заменены на те, которые мы передаем в файл. Подчеркнем, что новая запись с данными не создается.

Для добавления записей в файл необходимо указывать номер записи на единицу больший номера последней записи. В этом случае запись будет добавлена в файл, а не изменена. Например:

Put #FileNum, LastRecord + 1, ForFileRecords

Для вычисления текущего номера последней записи LastRecord можно использовать длину записи и размер файла, возвращаемый функцией LOF.

Перейдем к описанию процесса удаления данных из файла произвольного доступа. Существуют два способа. Можно просто очистить соответствующие поля указанных записей, то есть записать в них пустые значения. Однако в этом случае в файле остаются пустые записи. Понятно, что при таком подходе ресурсы (дисковое пространство) используются нерационально.

Для окончательного удаления записей рекомендуется перезаписывать данные в новый файл, пропуская пустые записи. Алгоритм этих действий таков:

1. Создайте новый файл с помощью оператора Open.

2. Перепишите все непустые записи в новый файл, используя оператор Put #.

3. Закройте исходный файл и удалите его при помощи оператора Kill.

4. Переименуйте новый файл в исходный оператором Name.

Получаем тот же самый файл, но уже без пустых записей. При этом экономится пространство диска и время поиска данных в таком файле.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с двоичными файлами

Двоичный файл в корне отличается от файлов последовательного и произвольного доступа. Посмотрите на рис. 9.5. Здесь в качестве примера двоичного файла с помощью редактора Notepad системы Windows открыт выполняемый файл Visual Basic 6.

Рис. 9.5. Пример двоичного файла

Из рисунка видно, что нет смысла просматривать файл в чистом виде, его понимает только специальная программа. Двоичный файл не организован в строки, как файл последовательного доступа, представленный ранее на рис. 9.1. Здесь нельзя выделить строки, записи или иную информационную структуру кроме байтов или блоков байтов.

Двоичный файл открывается только в двух режимах:

  • Binary — двоичный доступ по номеру байта;
  • Random — произвольный доступ.

Для режима доступа Random к двоичным файлам, в отличие от файлов произвольного доступа, запись не имеет строго заданного размера и обычно вычисляется по соответствующему алгоритму или хранится в записях файла.

Работа с двоичными файлами отличается большей свободой выполнения различных действий, чем с файлами последовательного доступа. В отличие от файлов последовательного доступа, двоичный файл открывается сразу и для чтения, и для записи.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Открытие двоичного файла

Двоичный файл открывается по-другому, чем файл последовательного доступа. Синтаксис оператора Open для двоичного файла выглядит следующим образом:

Open pathName For Binary As fileNumber

где:

  • pathName — полное имя файла;
  • fileNumber — номер файла.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Чтение данных из двоичных файлов

Чтение данных из двоичных файлов выполняется с помощью оператора Get #, имеющего следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNuinber — размер записи в байтах;
  • varName — переменная, в которую читаются данные из файла.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Запись данных в двоичные файлы

Для записи данных в двоичные файлы используется оператор put #, имеющий следующий синтаксис:

Put [#]fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNumber — размер записи в байтах;
  • varName — переменная, в которой хранятся данные, записываемые в файл.

Позиционирование в двоичном файле выполняется так же, как в файле последовательного доступа.

Замечание

Оператор Put ft работает в паре с оператором Get #.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с атрибутами файлов

Для работы с атрибутами файлов используются функции GetAttr и SetAttr. Синтаксис функции GetAttr, возвращающей атрибуты файлов, следующий:

GetAttr (pathName)

где pathName — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство.

Функция GetAttr возвращает число, которое определяет атрибуты файла. Интерпретировать это число можно при помощи параметров, описанных в табл. 9.3.

Таблица 9.3. Константы атрибутов файлов
Константа | Описание | Значение
vbNormal | Обычный файл | 0
vbReadOnly | Файл только для чтения | 1
vbHidden | Скрытый файл | 2
vbSystem | Системный файл | 4
vbDirectory | Каталог(папка) | 16
vbArhive | Архивный файл | 32

Аналогично работает функция setAttr, выполняющая установку атрибутов файлов. Синтаксис этой функции следующий:

SetAttr pathName, attributes

где:

  • pathName — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство;
  • attributes — число или выражение, задающее сумму атрибутов.

    Замечание

    В функции SetAttr используются все константы, описанные в табл. 9.3, кроме константы vbDirectory.

Для того чтобы задать несколько атрибутов, можно просто просуммировать указанные константы. Например, для установки атрибутов файла Hidden и Read-only необходимо использовать функцию setAttr следующего вида:

SetAttr "MyFile", vbHidden + vbReadOnly

При этом для файла MyFile будут установлены атрибуты Hidden и Read-only.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с папками и устройствами

Файл находится на самом нижнем уровне хранения информации в файловой системе компьютера. Выше в иерархии файловой системы расположены папки и устройства. Под устройством понимается не только жесткий диск, но и, например, устройство для чтения CD-ROM.

Для операций с папками и устройствами в Visual Basic существует набор функций и операторов (табл. 9.4), которые позволяют создавать и удалять папки, переименовывать их, раскрывать их содержимое.

Таблица 9.4. Функции и операторы для работы с папками и устройствами
Функция, оператор | Выполняемое действие
ChDir | Изменяет текущую папку
ChDrive | Изменяет текущее устройство
MkDir | Создает папку
RmDir | Удаляет папку
Name | Присваивает папке имя или переименовывает папку
CurDir | Возвращает текущий каталог
Dir | Возвращает список файлов папки

Из всего списка функций для работы с папками одной из самых полезных является функция Dir. Действие этой функции напоминает аналогичную команду DOS. С помощью этой функции можно получить список файлов указанной папки. При этом можно применять шаблон имени файла, используя типовые обозначения "*" — множественная подмена, "?" — подмена одного символа.

Функция Dir имеет следующий синтаксис:

Dir(pathName[, attributes])

где:

  • pathName — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство. Для обозначения имени можно применить шаблон по аналогии с DOS. Если файл не найден, то возвращается пустая строка;
  • attributes — атрибуты файлов. Имеют значения, указанные в табл. 9.5. Если атрибуты не назначены, то по умолчанию возвращаются файлы без атрибутов.

Указывая атрибуты для функции Dir, мы назначаем фильтр для списка выводимых файлов. Для того чтобы назначить одновременно несколько атрибутов, их можно просто арифметически сложить.

Указывая конкретное значение файла, функцию Dir можно использовать для подтверждения существования указанного файла на диске. Если указанный файл не существует, то возвращается пустая строка.

Таблица 9.5. Константы атрибутов файлов функции oir
Константа | Значение | Описание
vbNormal | 0 | Задает файлы без атрибутов
vbReadOnly | 1 | Задает файлы только для чтения
vbHidden | 2 | Задает скрытые файлы
vbSystem | 4 | Задает системные файлы
vbVolume | 8 | Задает метку тома
vbDirectory | 16 | - Задает папку (каталог)

Кратко опишем синтаксис еще нескольких полезных функций, используемых при работе с папками.

Для создания папки применяется оператор MkDir, синтаксис которого выглядит следующим образом:

MkDir path

где path — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

Если параметр path не содержит имя устройства, папка будет создана на текущем устройстве.

Для удаления папок используется оператор RmDir, имеющий следующий синтаксис:

RmDir path

где path — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

Совет

При использовании оператора RmDir необходимо иметь в виду, что если удаляемая папка содержит файлы, будет выдаваться системное сообщение об ошибке. Чтобы избежать этого, рекомендуется сначала удалить все файлы из папки с помощью оператора Kill и лишь затем удалить указанную папку

Для выбора другого устройства используется оператор chDrive, имеющий следующий синтаксис:

ChDrive drive где drive — строковое выражение, назначающее новое устройство.

Параметром этой функции является буквенное обозначение устройства вашей системы. При использовании этой функции необходимо иметь в виду, что устройство должно существовать и быть доступным.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Организация печати

Печать текста, то есть вывод данных на принтер, можно организовать при помощи файлового оператора print #. Действительно, с точки зрения вывода данных, в принципе все равно, куда пересылать информацию. Необходимо только правильно указать ее получателя.

Для пересылки данных на принтер используется прямое назначение порта принтера (LPT1, LPT2) в качестве получателя данных. Это можно сделать при помощи оператора открытия файла open:

Open "LPT 1" For Output As #nPrinterHandle

После выполнения этого оператора для адресации данных на принтер необходимо использовать дескриптор (идентификатор файла) #nprinterHandle. Если в приложении не поддерживается вычисление идентификатора файлов, то следует использовать функцию FreeFile для его вычисления. Аналогично можно направить данные в любой другой порт компьютера или сети.

После того как порт открыт для приема данных, можно использовать оператор print #. Следующее выражение посылает на принтер данные для печати:

Print #nPrinterHandle, strExpression

В этом выражении strExpression задает печатаемый текст.

Используя функции и операторы чтения данных из файла, можно организовать циклический построчный вывод файла на печать.

Однако этот метод организации вывода данных на печать имеет свои тонкости. Все операции работы принтера (позиционирование печатающей головки, перевод строки, перевод страницы и др.) теперь потребуется программировать с помощью специальных операторов, которые понимает принтер. Такие операторы называются Esc-кодами (Esc-последовательностями). Их описание прилагается к каждому принтеру и здесь мы не будем их рассматривать.

После завершения печати данных порт закрывается оператором close, который также используется для закрытия файла:

Close #nPrinterHandle

или

Close

При использовании оператора close без дескриптора одновременно с портом закрываются и файлы, из которых выводилась информация.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Система файловых объектов (FSO)

В Visual Basic 6 кроме традиционного применяется принципиально новый метод работы с файлами, который заключается в использовании объектно-ориентированного подхода. В систему файловых объектов FSO (File System Objects) входит набор классов объектов с большим количеством методов.

В этом разделе мы перечислим основные классы системы и обсудим методику их использования. Основные классы объектов, которые входят в состав FSO, указаны в табл. 9.6.

Таблица 9.6. Список основных классбв объектов системы файловых объектов
Класс | Описание
Drive | Класс для работы с устройствами системы. Понятие устройство в данном случае имеет широкое значение и включает в себя, например, жесткий диск, устройство CD-ROM, логический диск
Folder | Класс для работы с папками: создание, удаление, чтение и установка атрибутов папок
Files | Класс для работы с файлами: создание, удаление, копирование файлов, чтение и установка атрибутов файлов
FileSystemObject | Базовый класс системы, на основе которого построены все другие классы. Часть методов и свойств дублируют методы и свойства других классов
TextStream | Специальный класс для работы с текстовыми файлами

Для того чтобы можно было пользоваться объектами FSO, необходимо подключить к проекту библиотеку Microsoft Scripting Runtime в окне подключения ссылок References (Ссылки), открываемом при выполнении команды References меню Project (Проект). В этой библиотеке находятся все классы системы FSO. Просмотреть методы и свойства классов можно с помощью окна Object Browser (Браузер объектов), которое вызывается командой Object Browser меню View (Вид). В этом окне все классы FSO находятся в библиотеке Scripting, которую можно найти по этому имени в верхнем раскрывающемся списке.

Рассмотрим методы и свойства, входящие в эти классы.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс Drive

В классе Drive собраны свойства для работы с устройствами файловой системы (рис. 9.6).

Объекты данного класса содержат свойства, описанные в табл. 9.7.

Таблица 9.7. Список свойств класса Drive
Свойство | Назначение
AvailableSpace | Возвращает значение свободного пространства устройства, доступное пользователю
DriveLetter | Возвращает буквенное обозначение устройства
DriveType | Возвращает тип устройства в виде следующих текстовых значений: "Unknown", "Removable", "Fixed", "Network", "CD-ROM", "RAM Disk"
FileSystem | Возвращает тип файловой системы устройства (FAT, NTFS или CDFS)
FreeSpace | Возвращает общее свободное пространство. Это свойство является аналогом AvailableSpace
IsReady | Указывает готовность устройства к работе: True — готово к работе, False — не готово к работе
Path | Возвращает путь устройства, папки, файла
RootFolder | Возвращает корневую папку указанного устройства
Serial-Number | Возвращает числовой идентификатор тома диска
ShareName | Возвращает сетевое имя указанного устройства
TotalSize | Возвращает общий размер устройства в байтах
VolumeName | Возвращает или устанавливает имя тома устройства

Рис. 9.6. Класс Drive в системе FSO


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс File

В классе File предоставлены свойства и методы для работы с файлами (рис. 9.7).

Рис. 9.7. Класс File в системе FSO

Класс характеризуется свойствами, описанными в табл. 9.8.

Таблица 9.8. Список свойств класса File
Свойство | Описание
Attributes | Возвращает или устанавливает атрибуты файлов и папок. Значения атрибутов такие же, как в аналогичной функции GetAttr традиционной системы функций для работы с файлами (описаны в табл. 9.3). Дополнительно здесь используются еще два атрибута: Alias (числовое значение 64) и Compressed (числовое значение 128)
DateCreated | Возвращает дату и время создания файла
DateLastAccessed | Возвращает дату и время последнего обращения к указанному файлу
DateLastModified | Возвращает дату и время последнего изменения файла
Drive | Возвращает буквенное обозначение устройства, на котором находится файл
Name | Возвращает или устанавливает имя файла
ParentFolder | Возвращает имя родительской папки для файла
Path | Возвращает путь файла
ShortName | Возвращает короткое имя файла по соглашению "8.3" (восемь символов для имени и три для расширения)
ShortPath | Возвращает путь и короткое имя файла по соглашению "8.3"
Size | Возвращает размер файла в байтах
Type | Возвращает краткую информацию о типе файла. Например, для файла с расширением txt это будет "Text Document"

В отличие от класса Drive, класс File содержит методы, список которых приведен в табл. 9.9.

Таблица 9.9. Список методов класса File
Метод | Описание
Copy | Копирует файл
Delete | Удаляет указанный файл
Move | Перемещает файл
OpenAsTextStream | Открывает файл и возвращает имя объекта TextStream для чтения, записи или добавления текстовых данных


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс Folder

Класс Folder позволяет работать с папками (рис. 9.8). В этот класс входят такие же методы и свойства, как и в класс File. Они выполняют те же действия, но только в применении к папкам.

Дополнительно этот класс характеризуется свойствами, описанными в табл. 9.10.

Таблица 9.10. Список свойств класса Folder
Свойство | Описание
Files | Возвращает список файлов, включая системные и скрытые
IsRootFolder | Определяет, является ли указанная папка корневой и возвращает True, если это так, в противном случае возвращает False
SubFolders | Возвращает список папок, входящих в указанную

Рис. 9.8. Класс Folder в системе FSO


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс FileSystemObject

Класс FileSystemObject является базовым для системы файловых объектов и его методы частично дублируют методы предыдущих классов (рис. 9.9). Класс характеризуется единственным свойством Drives, которое возвращает список доступных устройств.

Рис. 9.9. Класс FileSystemObject в системе FSO

Список методов этого класса гораздо богаче. В него входят методы, описанные в табл. 9.1).

Таблица 9.11. Список методов класса FileSystemObject
Метод | Описание
BuildPath | Формирует путь файла
Copy File | Копирует файл
CopyFolder | Копирует папку
CreateFolder | Создает папку
CreateTextFile | Создает текстовый файл
DeleteFile | Удаляет файл
DeleteFolder | Удаляет папку
DriveExists | Запрашивает существование устройства
FileExists | Запрашивает существование файла
FolderExists | Запрашивает существование папки
GetAbsolutePathName | Возвращает полный путь
GetDrive | Возвращает ссылку на объект, связанный с указанным устройством
GetDriveName | Возвращает имя устройства
GetExtensionName | Возвращает полное имя
GetFile | Возвращает ссылку на объект, связанный с указанным файлом
GetFileName | Возвращает имя файла
Get Folder | Возвращает ссылку на объект, связанный с указанной папкой
Get ParentFolderName | Возвращает имя родительской папки
GetSpecialFolder | Возвращает тип папки: Windows, System, Temporary
GetTempName | Возвращает случайное имя файла или папки
MoveFile | Перемещает файл
Move Folder | Перемещает папку
OpenTextFile | Открывает текстовый файл


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Класс TextStream

Класс TextStream предназначен для работы с текстовыми файлами (рис. 9.10).

Рис. 9.10. Класс TextStream в системе FSO

Свойства данного класса описываются в табл. 9.12.

Таблица 9.12. Список свойств класса TextStream
Свойство | Описание
AtAndOfLine | Определяет наличие метки конца строки для указателя позиции в файле
AtAndOfStream | Определяет наличие метки конца файла для указателя позиции в файле
Column | Определяет номер текущей колонки для символа в строке файла
Line | Определяет текущую строку в файле

Кроме свойств, в классе TextStream представлены методы, описанные в табл. 9.13.

Таблица 9.13. Список методов класса TextStream
Метод | Описание
Close | Закрывает файл
Read | Читает указанное количество символов из файла
ReadAll | Читает все содержимое файла
ReadLine | Читает строку из файла
Skip | Пропускает указанное количество символов при чтении файла
SkipLine | Пропускает следующую строку при чтении файла
Write | Записывает заданную текстовую строку в файл
WriteBlankLines | Добавляет указанное количество строк в файл
WriteLine | Записывает заданную текстовую строку и метку новой строки


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Программирование в системе FSO

Новые методы системы FSO расширяют и дополняют традиционные возможности Visual Basic при работе с файлами. Использование системы FSO состоит из трех этапов:

1. Создание объекта системы FSO.

2. Настройка требуемых методов объекта FSO.

3. Настройка доступных свойств объекта FSO.

Создать объект системы FSO можно объявлением переменной типа FSO:

Dim NewFSO As New FileSystemOb]ect

Для создания объекта можно также использовать следующий оператор:

Set NewFSO = CreateObject("Scripting.FileSystemObject")

В данном случае Scripting. FileSystemOb:ect — это требуемый объект с указанием библиотеки.

После этого можно работать со свойствами и методами объекта NewFSO как со всеми другими объектами приложения.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с устройствами и папками

С помощью FSO можно получить полную информацию об устройствах, используя свойства объектов класса Drive системы FSO. Для изучения свойств класса Drive создадим небольшое приложение, собирающее информацию об устройствах. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFSO. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект).

3. Присвойте форме проекта имя frmFormAboutDrive. В свойство Caption формы введите заголовок Сведения об устройстве.

4. Разместите в форме объект типа DriveListBox, дважды нажав кнопку DriveListBox на панели элементов управления. Используя свойство Name, присвойте объекту имя drvSelectDrive.

5. Добавьте в форму элемент управления типа commandButton. Назовите созданную кнопку cbStart.

Созданное приложение показано рис. 9.11.

Рис. 9.11. Приложение для изучения свойств класса Drive

6. Откройте окно редактора и введите приведенный ниже код:

Private Sub GetInfoAboutDrive()

Dim NewFSO As New FileSystemObject, Driver As Drive

Dim sInfoDrv(l To 4) As String, sSayAboutInfo As String

Set Driver = New

FSO.GetDrive(NewFSO.GetDriveName(drvSelectDrive.Drive))

If Driver.IsReady = True Then

sInfoDrv(l) = Driver.SerialNumber

sInfoDrv(2) = Driver.TotalSize / 1048576

sInfoDrv(3) = Driver.FreeSpace / 1048576

sInfoDrv(4) = Driver.FileSystem

sSayAboutInfo = "№ " + sInfoDrv(1) + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Всего: " + s!nfoDrv(2) + _

" МБайт" + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Свободно: " + slnfo0rv(3) + _

" МБайт " + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Файловая система: " + _

sInfoDrv(4) + Chr(10)

Else

sSayAboutInfo = "Устройство не готово" + Chr(10)

End If

'Вывод в окно Immediate

Debug.Print sSayAboutInfo

'Вывод в окно сообщения

MsgBox sSayAboutInfo,, "Сведения об устройстве"

End Sub

Private Sub cbStart_Click ()

GetInfoAboutDrive

End Sub

7. Запустите приложение на выполнение. При нажатии кнопки, расположенной в форме, в окно сообщения выдаются сведения о выбранном устройстве. Одновременно информация выдается в окно Immediate (Непосредственное выполнение).

Замечание

Необходимо напомнить, что для работы с FSO следует подключить к проекту библиотеку Microsoft Scripting Runtime, используя окно подключения ссылок References (Ссылки).

При работе с папками можно выполнять следующие действия:

  • создать папку;
  • удалить папку;
  • переместить папку;
  • скопировать папку;
  • переименовать папку;
  • подтвердить существование папки;
  • найти родительскую папку.

Для работы с папками используются объекты двух классов: Folder или FileSystemObject.

Рассмотрим работу с папками на примере небольшого приложения. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFSOAndFolder. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project!) меню Project (Проект).

3. Присвойте форме проекта имя frmFormFolder. В свойство caption формы введите заголовок Работа с папками.

4. Разместите в форме объект типа DriveListBox, дважды щелкнув мышью кнопку DriveListBox на панели элементов управления. Используя свойство Name, Присвойте объекту ИМЯ drvSelectDrive.

5. Добавьте в форму объект типа DirListBox для поиска папок. Для этого дважды щелкните мышью кнопку DirListBox на панели элементов управления. Используя свойство Name, присвойте объекту имя dirFolders.

6. Добавьте в форму поле типа TextBox и назовите его txtNameFolder. Для пояснения расположите над этим полем метку Label. Размер (длина) метки должен быть равен размеру поля txtNameFolder. Значение свойства Alignment (Выравнивание) метки установите равным 2-Center.

7. Добавьте в форму три кнопки типа CommandButton. Назовите эти кнопки cbCreate, cbDelete, cbRename и, используя свойство Caption, разместите на них, соответственно, надписи Создать, Удалить, Переименовать.

Созданное приложение показано на рис. 9.12.

Рис. 9.12. Приложение для изучения работы с папками

8. Откройте окно редактора и введите приведенный ниже код:

Dim NewFSO As New FileSystemObject, Folder As Folder

Dim sNameFolder As String

Private Sub cbCreate_Click()

' Создание папки

If txtNameFolder <> "" Then

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

MsgBox sSayAboutInfo,, "Корневая папка"

sNameFolder = dirFolders.Path + txtNameFolder.Text

Else

sNameFolder = dirFolders.Path + "\" + txtNameFolder.Text

End If

NewFSO.CreateFolder (sNameFolder)

End If

End Sub

Private Sub cbDelete_Click ()

' Удаление папки

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

NewFSO.DeleteFolder (sNameFolder)

End Sub

Private Sub cbRename_Click()

' Переименование папки

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

Folder.Name = txtNameFolder.Text

End Sub

Private Sub drvSelectDrive Change()

dirFolders.Path = drvSelectDrive.Drive

End Sub

9. Запустите приложение на выполнение. Обратите внимание на синхронизацию Объектов drvSelectDrive (Список устройств) И dirFolders (Список папок), которая выполняется по событию change списка устройств. При работе с примером необходимо помнить, что выбор значения в списке выполняется двойным щелчком мыши, то есть свойство path списка папок обновляется по двойному щелчку мыши.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа с файлами

При работе с файлами в FSO принято делить выполняемые действия на две большие группы.

  • Работа на уровне файлов. К этой группе относится создание, удаление, перемещение, копирование файлов.
  • Работа на уровне данных в файлах. Это ввод, добавление или удаление данных, чтение данных из файлов.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа на уровне файлов

Для создания файла можно использовать метод createTextFile класса FileSystemObject:

Dim NewFSO As New FileSystemObject, NewFile As TextStream

Set NewFile = NewFSO.CreateTextFile ("C:\NewFile.txt")

Для удаления файла используется метод Delete класса File. Необходимо заметить, что перед удалением файл должен быть закрыт с помощью метода close. Программный код, выполняющий удаление файла в приложении, выглядит следующим образом:

Dim NewFile As TextStream, File

Set NewFile = NewFSO.CreateTextFile("c:\NewFile.txt")

NewFile.Close

Set File = NewFSO.GetFile("c:\NewFile.txt")

File.Delete

В этом примере файл сначала создается, а затем удаляется.

Перемещение файлов выполняется с помощью метода Move класса File. Если воспользоваться предыдущим текстом, то код, выполняющий перемещение файла, выглядит следующим образом:

Dim NewFile As TextStream, File

Set NewFile = NewFSO.CreateTextFile("c:\NewFile.txt")

NewFile.Close

Set File = NewFSO.GetFile("c:\NewFile.txt")

File.Move ("c:\NewFile.txt")

При этом, как и при удалении, необходимо закрывать файл.

Копирование файла выполняется аналогично перемещению с использованием метода copy.

Разработаем приложение для изучения работы с файлами. Для этого воспользуемся приложением, созданным в предыдущем примере при рассмотрении работы с папками. Откройте приложение и модифицируйте его следующим образом:

1. Увеличьте размер формы, переставьте кнопки и текстовое поле с меткой, как показано на рис. 9.13. Текст метки измените на Имя файла.

2. Добавьте в форму объект типа FileListBox (Список файлов), дважды щелкнув мышью кнопку FileListBox на панели элементов управления. Используя свойство Name, назовите его filFiles.

3. Измените текст кода в приложении на указанный ниже:

Dim NewFSO As New FileSystemObject, Folder As Folder

Dim sNameFolder As String

Dim sNameFile As String

Dim File

Private Sub cbCreate_Click()

' Создание файла

Dim NewFile As TextStream

sNameFile = dirFolders.Path + "\" + txtNameFile.Text

Set NewFile = NewFSO.CreateTextFile(sNameFile)

filFiles.Refresh

End Sub

Private Sub cbDelete_Click()

' Удаление файла

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

sNameFile = filFiles.Path + filFiles.FileName

Else

sNameFile = filFiles.Path + "\" + filFiles.FileName

End If

Set File = NewFSO.GetFile(sNameFile)

File.Delete

filFiles.Refresh

End Sub

Private Sub cbRename_Click ()

' Переименование файла

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

sNameFile = filFiles.Path + filFiles.FileName

Else

sNameFile = filFiles.Path + "\" + filFiles.FileName

End If

Set File = NewFSO.GetFile(sNameFile)

File.Name = txtNameFile.Text fil

Files.Refresh

End Sub

Private Sub dirFolders Change()

filFiles.Path = dirFolders.Path

End Sub

Private Sub drvSelectDrive_Change()

dirFolders.Path = drvSelectDrive.Drive

End Sub

Private Sub filFiles_Click()

txtNameFile.Text = filFiles.FileName

End Sub

Рис. 9.13. Приложение для изучения работы с файлами

В этом приложении создаются, удаляются и переименовываются файлы. Работа списков синхронизирована по событию change списков устройств и папок.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Работа на уровне данных

Запись данных в файл выполняется с помощью методов write и WriteLine класса TextStream. Если необходимо добавить в файл пустую строку, можно использовать метод WriteBlankLines.

Метод WriteLine отличается от write тем, что первый добавляет в записываемую строку метку конца строки.

Корректная запись данных в файл предполагает выполнение этой операции в три этапа:

1. Открытие файла.

2. Запись данных одним из методов.

3. Закрытие файла.

В программном коде показано применение этих методов для записи данных в файл:

Dim NewFSO, txtNewFile

Set NewFSO = CreateObject("Scripting.FileSystemObject")

Set txtNewFile = NewFSO.CreateTextFile("c:\IniFile.ini". True)

' Запись строки

txtNewFile.Write ("Файл инициализации приложения")

' Запись

txtNewFile.WriteBlankLines (2)

' Запись строки с меткой конца строки

txtNewFile.WriteLine ("Parameter = 70")

txtNewFile.Close

Чтение данных из файла выполняется по блокам, построчно или целиком.

для этого используются соответственно методы Read, ReadLine и ReadAll.

Работу этих методов можно изучить, дополнив предыдущий текст следующим кодом:

' Чтение из файла

Dim File As File

Dim sFileCont As String

Set File = NewFSO.GetFile("c:\IniFile.ini")

Set txtNewFile = File.OpenAsTextStream(ForReading)

sFileCont = txtNewFile.Read(40) I

MsgBox sFileCont

sFileCont = txtNewFile.ReadLine

MsgBox sFileCont

txtNewFile.Close

Замечание

При использовании метода ReadAll необходимо помнить, что для чтения больших файлов требуются соответствующие ресурсы памяти.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Глава 9. Работа с файлами и организация печати.

При проектировании приложения достаточно часто возникает необходимость работать непосредственно с файлами. Это требуется, например, для добавления, удаления файлов или каталогов (папок), записи данных в файлы или чтения из них как программно, так и в интерактивном режиме. Необходимость работы с файлами возникает также при создании программы инсталляции разработанного приложения на пользовательские компьютеры, чтения данных из файлов при инициализации приложения с использованием файлов настройки, организации вывода файлов на печать. Для этих целей Visual Basic 6 предоставляет полный набор функций, работающих с файлами, папками и устройствами, дающий возможность производить с ними все необходимые действия.

В Visual Basic 6 существует понятие типа файла, который определяется организационной структурой хранения информации в файле и способом доступа к этой информации. Принято выделять следующие типы файлов.

Файлы последовательного доступа. Как правило, это текстовые файлы или аналогичные им. Такие файлы представляют собой последовательность символов. При этом данные могут быть с разделителями или без разделителей, то есть содержание файла может иметь некую структуру. Структурной единицей содержимого в подобных файлах, как правило, является строка. Примерами этих файлов могут служить текстовые файлы и файлы инициализации программ.

Файлы произвольного доступа. Это структурированные файлы, которые содержат информацию в виде записей. Примером могут служить файлы баз данных.

Двоичные (бинарные) файлы. Файлы с побайтным доступом. В принципе, это те же файлы с последовательным доступом, но информация в них не организована в строки. Особенность данных файлов — работа с байтами или блоками байтов. К таким файлам можно отнести выполняемые программы, файлы динамических библиотек, файлы документов Word.

Подобное деление файлов на типы достаточно условно и определяется особенностями организации файлов и доступа к данным в них. Например, файл с последовательным доступом можно открыть и в режиме двоичного доступа. Если этот файл имеет разделители, то для работы с ним придется написать специальную процедуру обработки разделителей и разбора данных, так как двоичный доступ обеспечивает побайтную запись/чтение из файла. Очевидно, что это неудобно. Именно поэтому и введено условное деление файлов на типы в зависимости от формата файла и доступа к данным. Соответственно сгруппированы и функции Visual Basic для записи/чтения данных. Мы рассмотрим работу с каждым из типов файлов, понимая, что такое разделение на типы достаточно условно, но позволяет обеспечить наиболее эффективную обработку данных для каждого типа.

Замечание

Вероятно, более корректным было бы сказать не файл последовательного доступа, а файл, открытый для последовательного доступа, не двоичный файл, а файл, открытый для двоичного доступа. Однако далее будем придерживаться именно такой терминологии, которая указывает тип файла.

Тип файла задает оптимальный набор функций записи и чтения данных из файла. Поэтому при работе с файлами для написания эффективной программы всегда необходимо иметь представление о типах файлов, с которыми будет работать программа, и об организации хранения данных в этих файлах. Это дает возможность обеспечить оптимальный доступ и использовать соответствующие этому доступу функции.

Традиционный подход при работе с файлами

Традиционный подход при работе с файлами остается неизменным практически с самых первых версий Visual Basic и заключается в использовании функций и операторов, обеспечивающих прямой доступ к информации в файлах. Функции и операторы, используемые при работе с файлами, приведены в табл. 9.1. В столбце Тип файла этой таблицы приняты следующие сокращения типов файлов:

  • П — файл последовательного доступа;
  • Пр — файл произвольного доступа;
  • Б — бинарный файл.

В данной главе мы рассмотрим только основные функции и операторы, необходимые для получения навыков работы с файлами.

Таблица 9.1. Функции и операторы для работы с файлами
Функция,оператор | Описание | Тип файла
Open | Открывает файл | П, Пр, Б
Close | Закрывает все файлы | П, Пр, Б
Close # | Закрывает файл по идентификатору (дескриптору) | П, Пр, Б
Reset | Закрывает все открытые файлы, записывает содержимое буферов | П, Пр, Б
Print tt | Записывает данные в файл | П
FileCopy | Копирует файл | П, Пр, Б
EOF | Определяет метку конца файла | П, Пр, Б
FileAttr | Возвращает режим доступа открытого файла | П, Пр, Б
FileDateTime | Возвращает дату и время создания файла | П, Пр, Б
FileLen | Возвращает размер файла в байтах | П, Пр, Б
FreeFile | Возвращает номер свободного идентификатора файла (дескриптора) | П, Пр, Б
GetAttr | Получает атрибуты файла | П, Пр, Б
SetAttr | Устанавливает атрибуты файла | П, Пр, Б
Loc | Возвращает номер текущей позиции в файле | Пр, Б
LOF | Возвращает размер открытого файла в байтах | П, Пр, Б
Seek | Устанавливает на заданную номером позицию или запись в файле | П, Пр, Б
Dir | Возвращает содержимое текущей папки | П, Пр, Б
Kill | Удаляет файл | П, Пр, Б
Lock | Блокирует файл при работе в многопользовательской среде | П, Пр, Б
Unlock | Снимает блокировку файла в многопользовательской среде | П, Пр, Б
Name | Задает (переименовывает) имя файла | П, Пр, Б
Get # | Читает данные из файла | Пр.Б
Input | Читает данные из файла | П, Б
Input # | Читает данные из файла | П
Line Input # | Читает строку из файла | П
Put # | Записывает данные в файл | Пр, Б
Write # | Записывает данные в файл | П

Для удобства сгруппируем функции и операторы по выполняемому действию, как это принято в Visual Basic. Такое объединение удобно при выборе функции или оператора для выполнения необходимых действий с файлами (табл. 9.2).

Таблица 9.2. Функции и операторы для работы с файлами по группам
Выполняемое действие | Функции, операторы
Открыть или создать файл | Open
Закрыть файл | Close, Reset
Определение параметров вывода данных | Format, Spc, Tab, Width #
Скопировать файл | FileCopy
Получить информацию о файле | EOF, FileAttr, FlleDateTime, FileLen, FreeFile, GetAttr, Loc, LOF
Организовать управление файлами | Dir, Kill, Lock, Unlock, Name
Прочитать данные из файла | Get #, Input, Input ft, Line Input #
Получить информацию о размере файла | FileLen
Установить атрибуты файла | SetAttr
Найти позиции в файле | Seek
Записать данные в файл | Print tt, Put #, Write ft

Открытие файлов

Как было указано выше, работа с каждым из типов файлов имеет свои особенности. Однако есть два действия, общие для всех типов файлов — их открытие и закрытие.

Понятно, что перед тем как записать данные в файл или прочитать данные из файла, необходимо сначала открыть этот файл. Открытие файла выполняется оператором open:

Open pathName For mode [access] [lock] As [#]fileNumber [Len=recLength]

где:

  • pathName — полное имя файла;
  • mode — режим доступа к файлу. Может принимать следующие значения: Append, Binary, Input, Output или Random;
  • access — тип доступа к файлу. Определяет характер действий с файлом — чтение или запись данных. Может принимать значения: Read (Чтение), Write (Запись) или Read/Write (Чтение/Запись);
  • lock — тип разрешения доступа к файлу другим процессам. Определяет возможность одновременной работы с файлом нескольких приложений или нескольких пользователей. Может принимать значения: Shared (Общий), Lock Read (Блокировка чтения), Lock Write (Блокировка записи) или Lock Read Write (Блокировка чтения и записи);
  • fileNumber — целочисленное выражение, задающее идентификатор файла (дескриптор). Может иметь значение от 1 до 511 включительно;
  • recLength — число, определяющее размер буфера данных для записи/чтения в файлах прямого доступа. Для файлов произвольного доступа это число задает длину одной записи файла. Может иметь значение до 32,767 (байтов).

При работе оператора Open создается специальный счетчик номеров (идентификаторов) открытых файлов (в операторе это параметр fileNumber) для однозначного определения файла, с которым программа работает в текущий момент.

Если указанный в операторе open файл не найден по заданному пути или не существует, он будет создан этим оператором для режимов доступа Append, Binary, output или Random. Для режима доступа input новый файл не создается.

Важной особенностью режимов доступа является возможность многократного открытия файла для режимов Binary, input и Random, то есть файл можно открыть несколько раз с разными номерами. Но для режимов доступа Output и Append, используемых для записи данных, это недопустимо.

Если номер открываемого файла специально не контролируется и не задается программой, его можно узнать с помощью функции FreeFile, возвращающей последний свободный номер открываемого файла.

Замечание

При использовании оператора Open необходимо, чтобы режим доступа соответствовал типу открываемого файла.

Закрытие файлов

Закрытие файлов выполняется очень просто. Для этого необходимо использовать оператор close, имеющий следующий синтаксис:

Close [fileNumberLlist]

где fileNumberLlist — список закрываемых файлов, представленных номерами файлов и перечисляемых через запятую: [#fileNumber] [,#fileNumber] . . . [,# fileNumber]. При этом номер файла аналогичен номеру файла в функции open.

Предупреждение

Необходимо иметь в виду, что если список файлов не указан, оператор close закрывает все открытые файлы.

Работа с файлами последовательного доступа

Файлы последовательного доступа — это, как правило, текстовые файлы, то есть последовательности ASCII-символов, организованные в строки. Примером может служить файл инициализации Windows NT (рис. 9.1).

При открытии файлов последовательного доступа возможны три режима доступа:

  • Input — открыт для последовательного чтения данных;
  • Output — открыт для последовательной записи данных, при этом информация записывается всегда с начала файла (предыдущая затирается, если в файле уже что-то записано);
  • Append — открыт для добавления данных к уже имеющимся в файле.

Рис. 9.1. Пример файла последовательного доступа

Чтение данных

Чтение данных из файла последовательного доступа выполняется с помощью функции Input и операторов Input # и Line Input #. Рассмотрим эти функции и операторы.

Функция Input имеет следующий синтаксис:

Input(number, #fileNumber)

где:

  • number — целое число, которое задает количество считываемых из файла символов;
  • fileNumber — номер файла, аналогичный номеру файла в операторе open.

Функция Input считывает из файла заданное количество символов и обычно используется для чтения данных, записанных в файл оператором print #.

Замечание

Следует иметь в виду, что функция input требует знания количества считываемых символов. Поэтому для чтения данных из файла необходимо предварительно вычислить его длину с помощью функции FileLen.

Если в программе требуется прочитать данные из файла, в котором информация в строках имеет структуру с разделителями (в качестве разделителей используются запятые), необходимо применить оператор Input #:

Input #fileNumber, varlist

где:

  • fileNurnber — номер файла, аналогичный номеру файла в операторе open;
  • varlist — список переменных.

При работе этого оператора сначала считывается целая строка, а затем подстроки, отделенные разделителями (запятыми), помещаются в соответствующие переменные списка. Для корректной работы оператора строки файла должны иметь заданную структуру с разделителями. Обычно этот оператор используется в паре с оператором записи write #.

Для чтения всего содержимого файла при помощи оператора Input # необходимо организовать циклическое считывание данных из файла, поскольку данные считываются этим оператором по строкам.

Для построчного чтения данных из последовательного файла применяется оператор Line Input #. Синтаксис этого оператора следующий:

Line Input # fileNurnber, varName

где:

  • fileNurnber — номер файла, аналогичный номеру файла в операторе open;
  • varName — имя переменной.

Оператор Line Input # посимвольно считывает всю строку данных из файла и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13) + CHR(10), причем в переменную varName эти разделители не вставляются.

Замечание

Обычно оператор Line Input # используется в паре с оператором Print #.

Для того чтобы прочитать все данные из файла при помощи оператора Line Input #, необходимо организовать цикл чтения данных.

Для изучения функций и операторов, предназначенных для работы с файлами, создадим небольшое приложение. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFileProject. Используйте для этого окно свойств проекта, которое можно вызвать командой Project1 Properties (Свойства Project1) меню Project (Проект). После переименования проекта эта команда именуется MyFileProject Properties (Свойства MyFileProject).

3. Для выбора файлов потребуются диалоговые окна открытия и сохранения файлов. С помощью диалогового окна Components (Компоненты), вызываемого командой Components меню Project (Проект), подключите к проекту библиотеку Microsoft Common Dialog Control 6.0 и нажмите кнопку ОК.

4. Переименуйте форму проекта, присвоив ей название FormForFile.

5. В свойство caption формы введите заголовок Работаем с файлами.

6. Добавьте в форму элемент управления типа TextBox для ввода/вывода данных и присвойте ему имя txtFile. Придайте текстовому полю достаточно большие размеры, чтобы оно занимало практически все пространство формы. Установите свойство поля Multi-Line в значение True.

7. Добавьте в форму элемент управления CommonDialog, дважды щелкнув мышью кнопку CommonDialog на панели элементов управления.

Совет

Если панель элементов управления отсутствует на экране, для ее отображения в меню View (Вид) выберите команду ToolBox (Панель инструментов).

8. Присвойте созданному объекту типа CommonDialog имя cdCommonDialog.

9. Для фильтрации файлов в свойство Filter объекта cdCommonDialog введите следующий текст: Все файлы (*. *) |*. * | Текстовые файлы (*. txt) \ *. txt \.

10. Добавьте В форму FormForFile кнопку управления типа CommandButton,

дважды щелкнув мышью кнопку CommandButton на панели элементов управления.

11. После появления объекта в форме назовите эту кнопку cbstart и присвойте свойству Caption значение Выполнить. Созданная в форме кнопка cbstart будет служить для выполнения действий по событию кнопки Click.

Созданное тестовое приложение показано на рис. 9.2.

Полученное приложение можно теперь использовать для изучения работы с файлами. Запрограммируем приложение на чтение данных из файла последовательного доступа. Для этого откроем окно редактора кода и введем следующий код:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Dim nFileLenght As Integer

Private Sub cbStart_Click()

cdCommonDialog.ShowOpen

strFileName = cdCommonDialog.FileName

nFreeFile = FreeFile

If strFileName <> "" Then

Open strFileName For Input As nFreeFile

nFileLenght = FileLen(strFileName)

strFileContent = Input(nFileLenght, #nFreeFile)

txtFile.Text = strFileContent

Close

End If

End Sub

Рис. 9.2. Вид приложения для изучения функций работы с файлами

Работающее приложение показано на рис. 9.3. В данном случае при нажатии кнопки Выполнить открывается диалоговое окно поиска файла. Путь и имя файла, возвращаемое диалоговым окном, хранятся в переменной strFileName. Найденный файл (он должен быть текстовым) открывается при помощи оператора open для чтения данных. Функция input считывает сразу весь файл в переменную strFileContent, содержимое которой затем помещается в текстовое поле txtFile. После выполнения всех действий файл закрывается оператором close.

Чтобы прочитать данные при помощи оператора Line Input #, необходимо заменить текст кода, расположенный сразу после оператора open, на следующий:

Do While Not EOF(nFreeFile)

Line Input #nFreeFile, strFileContent

txtFile.Text = txtFile.Text + strFileContent +Chr$(13) + Chr$(10) Loop Close

В этом цикле данные из файла построчно считываются в переменную strFileContent и помещаются в текстовое поле txtFile. Цикл работает до достижения конца файла, который контролируется функцией EOF. Применение цикла не требует знания длины файла, что иногда предпочтительнее.

Рис. 9.3. Считывание данных из файла

Для изучения работы оператора input # добавьте в форму еще одно текстовое поле. Назовите его txtNumber И установите свойство поля DataFormat

в значение Number. Текст в приложении после оператора open необходимо заменить на следующий:

Dim nFileContent As Integer

Input #nFreeFile, strFileContent, nFileContent

txtFile.Text = strFileContent

txtNumber.Text = nFileContent

Close

Рис. 9.4. Считывание данных из строк файла в переменные

Работающее приложение показано на рис. 9.4. При этом строки открываемого файла имеют структуру, аналогичную следующей строке:

Это файл для проверки функций, 100

то есть текст и число расположены через запятую.

Переход на заданную позицию в файле

Переход на заданную позицию в файле можно организовать с помощью оператора seek, имеющего следующий синтаксис:

Seek #fileNumber, position

где:

  • fileNumber — номер файла, аналогичный номеру файла в операторе open;
  • position — целочисленное выражение, задающее позицию указателя в файле. Позиционирование при этом выполняется посимвольно.

Оператор seek устанавливает указатель на требуемую позицию. Если после этого использовать функции чтения или записи, то действие этих функций будет выполняться начиная с позиции указателя, найденного оператором Seek.

Можно в код приложения MyFileProject непосредственно перед функцией input вставить выражение, задающее позиционирование:

Seek #nFreeFile, 77

nFileLenght = nFileLenght — 76

В этом случае данные из файла будут считаны начиная с 77 по счету символа от начала и до конца файла. При этом необходимо уменьшить число считываемых символов, поскольку считывается весь файл.

Запись данных

Данные в файл последовательного доступа записываются с помощью операторов print # и write #. Оператор write # дополнительно автоматически вставляет в файл разделители, но не дает гибкости при управлении форматированием данных. Как можно было заметить при изучении функций чтения данных, каждая из функций записи работает в паре с определенной функцией чтения. Для оператора print # это функции Input или Line Input #, а для оператора write #t — это Input #.

Совет

Рекомендуется при применении операций записи/чтения данных из файлов использовать именно такие пары функций и операторов записи/чтения.

Рассмотрим оператор print #. Он имеет следующий синтаксис:

Print #fileNumber, [outputlist]

где:

  • fileNumber — номер файла, аналогичный номеру файла в операторе open;
  • outputlist — список выражений или переменных для записи.

Оператор write ft имеет следующий синтаксис:

Write #fileNumber, [outputlist]

где:

  • fileNumber — номер файла, аналогичный номеру в операторе open;
  • outputlist — список выражений или переменных для записи.

При выполнении записи данных в файл оператор write # после каждой строки автоматически вставляет символ перевода каретки CHR(13) и символ новой строки CHR(10).

Заменим код в нашем приложении MyFileProject на следующий:

Dim strFileName As String

Dim strFileContent As String

Dim nFreeFile As Integer

Private Sub cbStart_Click()

nFreeFile = FreeFile

cdCommonDialog.ShowSave

strFileName = cdCommonDialog.FileName

If strFileName <> "" Then

Open strFileName For Output As nFreeFile

strFileContent = txtFile.Text

Print #nFreeFile, strFileContent

Close

End If

End Sub

В полученном приложении данные, введенные в текстовое поле, будут записываться оператором print # в файл, найденный при помощи диалогового окна сохранения файлов.

Работа с файлами произвольного доступа

Файл с произвольным доступом обладает заранее заданной структурой и состоит из записей. Каждая запись в файле — это некоторая порция данных, которая имеет строго определенный размер и свой конкретный номер в файле. Доступ к данным в файле произвольного доступа осуществляется именно по номеру записи. Данные из файла такого типа читаются и записываются записями. Примерами файла произвольного доступа являются базы данных, всегда имеющие строго определенную структуру.

При открытии файлов произвольного доступа возможен только один режим доступа — Random. Кстати, этот режим является режимом по умолчанию для функции Open.

Используя возможности Visual Basic, можно создать файл произвольного доступа пользовательской, то есть своей собственной структуры. Продемонстрируем это на небольшом примере. С помощью оператора туре объявим тип переменной, имеющей заданную .структуру записи:

Type PhisFace

PhisFaseID As Integer

FIO As String * 50

End Type

В данном примере объявлена структура в виде записи из двух полей. Первым полем является идентификатор, а вторым — фамилия, имя и отчество.

Замечание

Объявление пользовательского типа данных необходимо осуществлять в программном модуле. Для добавления программного модуля в проект следует выполнить команду Add Module (Добавить модуль) из меню Project (Проект) и на вкладке New (Новый) появившегося диалогового окна Add Module выбрать значок с названием Module (Модуль).

Открытие файла произвольного доступа

Файл произвольного доступа открывается несколько иначе, чем файл последовательного доступа. Синтаксис оператора open при этом выглядит следующим образом:

Open pathName [For Random] As fileNumber Len = recLength

где:

  • pathName — полное имя файла;
  • fileNumber — номер файла;
  • recLength — длина записи в байтах.

При использовании оператора Open для открытия файла произвольного доступа атрибут For не обязателен, так как в Visual Basic 6 этот параметр устанавливается по умолчанию. Как видно из синтаксиса, в отличие от файла с последовательным доступом, при открытии файла с произвольным доступом необходимо обязательно указывать длину записи. При этом, если длина записи не известна, ее можно вычислить с использованием функции Len.

Чтение данных из файла произвольного доступа

Данные из файла произвольного доступа, как правило, считываются записями. Для этого используется оператор Get #, который имеет следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNumber — номер записи в файле;
  • varName — переменная.

Если параметр recNumber в функции Get не указан, считывается текущая запись, на которой позиционирован указатель.

Для позиционирования указателя можно использовать функцию seek. Синтаксис этого оператора такой же, как для файлов последовательного доступа, но имеет другой смысл. Если для последовательных файлов позиционирование выполняется по символам, то для файлов произвольного доступа — по номеру записи:

Seek #fileNumber, position

где:

  • fileNumber — номер файла;
  • position — целочисленное выражение, которое задает номер записи в файле.

Запись в файл произвольного доступа

Для записи данных в файл произвольного доступа используется оператор Put #, имеющий следующий синтаксис:

Put #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла, аналогичный номеру в операторе open;
  • recNumber — целочисленное выражение, которое задает номер записи в файле;
  • varName — переменная, указывающая источник записываемых данных.

Этот оператор используется только для файлов произвольного доступа и бинарных. Если номер записи не указан, то по умолчанию принимается текущая позиция указателя записи.

Замечание

При использовании оператора Put необходимо иметь в виду, что данные в записи с указанным в операторе номером будут заменены на те, которые мы записываем в файл. Добавление записей выполняется при помощи этого же оператора, но с некоторыми особенностями. Об этом речь пойдет в следующем разделе.

Рассмотрим небольшой пример. Воспользуемся приложением MyFileApp, изменив его следующим образом:

1. Измените наименование кнопки Выполнить на Запись.

2. Добавьте в форму еще одну кнопку управления.

3. Присвойте созданной кнопке наименование cbRead, используя свойство Name.

4. В свойство Caption введите значение Чтение.

5. Добавьте в приложение программный модуль, воспользовавшись командой Add Module (Добавить модуль) из меню Project (Проект).

6. В код модуля введите текст описания пользовательского типа данных:

Type Phis Face

PhisFaseID As Integer

FIO As String * 50

End Type

7. Откройте окно редактора кода и замените находящийся там код на следующий:

Dim ForFileRecords As PhisFace

Dim nRecNo As Integer

Private Sub SaveRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

ForFileRecords.PhisFaseID = txtNumber.Text

ForFileRecords.FIO = txtFile.Text

Put #1, nRecNo, ForFileRecords

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub ReadRecord ()

Open "C:\FilePF.dat" For Random As #1 Len = Len(ForFileRecords)

Get #1, nRecNo, ForFileRecords

txtNumber.Text = ForFileRecords.PhisFaseID

txtFile.Text = ForFileRecords.FIO

nRecNo = nRecNo + 1

Close #1

End Sub

Private Sub Form Load()

nRecNo = 1

End Sub

Private Sub cbStart_Click()

Call SaveRecord

End Sub

Private Sub cbRead_Click()

Call ReadRecord

End Sub

В тексте этого кода мы объявили переменные ForFileRecords пользовательского типа для описания структуры файла и nRecNo в качестве счетчика записей. Открывая файл с доступом Random и указанием длины записи в соответствии с длиной переменной ForFileRecords, мы создаем файл требуемой структуры.

8. Запустите приложение. При нажатии кнопки Запись выполняется запись содержимого текстовых полей в файл созданной структуры. При нажатии кнопки Чтение эти данные можно прочитать в текстовом поле последовательно по записям, начиная с первой. При этом каждая кнопка вызывает собственную процедуру выполнения действия.

Изменение данных в файле произвольного доступа

Для изменения данных в записях файла (редактирование, добавление, удаление записей) применяется оператор put ft. При его использовании необходимо иметь в виду, что данные в записи будут заменены на те, которые мы передаем в файл. Подчеркнем, что новая запись с данными не создается.

Для добавления записей в файл необходимо указывать номер записи на единицу больший номера последней записи. В этом случае запись будет добавлена в файл, а не изменена. Например:

Put #FileNum, LastRecord + 1, ForFileRecords

Для вычисления текущего номера последней записи LastRecord можно использовать длину записи и размер файла, возвращаемый функцией LOF.

Перейдем к описанию процесса удаления данных из файла произвольного доступа. Существуют два способа. Можно просто очистить соответствующие поля указанных записей, то есть записать в них пустые значения. Однако в этом случае в файле остаются пустые записи. Понятно, что при таком подходе ресурсы (дисковое пространство) используются нерационально.

Для окончательного удаления записей рекомендуется перезаписывать данные в новый файл, пропуская пустые записи. Алгоритм этих действий таков:

1. Создайте новый файл с помощью оператора Open.

2. Перепишите все непустые записи в новый файл, используя оператор Put #.

3. Закройте исходный файл и удалите его при помощи оператора Kill.

4. Переименуйте новый файл в исходный оператором Name.

Получаем тот же самый файл, но уже без пустых записей. При этом экономится пространство диска и время поиска данных в таком файле.

Работа с двоичными файлами

Двоичный файл в корне отличается от файлов последовательного и произвольного доступа. Посмотрите на рис. 9.5. Здесь в качестве примера двоичного файла с помощью редактора Notepad системы Windows открыт выполняемый файл Visual Basic 6.

Рис. 9.5. Пример двоичного файла

Из рисунка видно, что нет смысла просматривать файл в чистом виде, его понимает только специальная программа. Двоичный файл не организован в строки, как файл последовательного доступа, представленный ранее на рис. 9.1. Здесь нельзя выделить строки, записи или иную информационную структуру кроме байтов или блоков байтов.

Двоичный файл открывается только в двух режимах:

  • Binary — двоичный доступ по номеру байта;
  • Random — произвольный доступ.

Для режима доступа Random к двоичным файлам, в отличие от файлов произвольного доступа, запись не имеет строго заданного размера и обычно вычисляется по соответствующему алгоритму или хранится в записях файла.

Работа с двоичными файлами отличается большей свободой выполнения различных действий, чем с файлами последовательного доступа. В отличие от файлов последовательного доступа, двоичный файл открывается сразу и для чтения, и для записи.


Ch 9.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Открытие двоичного файла

Двоичный файл открывается по-другому, чем файл последовательного доступа. Синтаксис оператора Open для двоичного файла выглядит следующим образом:

Open pathName For Binary As fileNumber

где:

  • pathName — полное имя файла;
  • fileNumber — номер файла.

Чтение данных из двоичных файлов

Чтение данных из двоичных файлов выполняется с помощью оператора Get #, имеющего следующий синтаксис:

Get #fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNuinber — размер записи в байтах;
  • varName — переменная, в которую читаются данные из файла.

Запись данных в двоичные файлы

Для записи данных в двоичные файлы используется оператор put #, имеющий следующий синтаксис:

Put [#]fileNumber, [recNumber], varName

где:

  • fileNumber — номер файла;
  • recNumber — размер записи в байтах;
  • varName — переменная, в которой хранятся данные, записываемые в файл.

Позиционирование в двоичном файле выполняется так же, как в файле последовательного доступа.

Замечание

Оператор Put ft работает в паре с оператором Get #.

Работа с атрибутами файлов

Для работы с атрибутами файлов используются функции GetAttr и SetAttr. Синтаксис функции GetAttr, возвращающей атрибуты файлов, следующий:

GetAttr (pathName)

где pathName — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство.

Функция GetAttr возвращает число, которое определяет атрибуты файла. Интерпретировать это число можно при помощи параметров, описанных в табл. 9.3.

Таблица 9.3. Константы атрибутов файлов
Константа | Описание | Значение
vbNormal | Обычный файл | 0
vbReadOnly | Файл только для чтения | 1
vbHidden | Скрытый файл | 2
vbSystem | Системный файл | 4
vbDirectory | Каталог(папка) | 16
vbArhive | Архивный файл | 32

Аналогично работает функция setAttr, выполняющая установку атрибутов файлов. Синтаксис этой функции следующий:

SetAttr pathName, attributes

где:

  • pathName — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство;
  • attributes — число или выражение, задающее сумму атрибутов.

    Замечание

    В функции SetAttr используются все константы, описанные в табл. 9.3, кроме константы vbDirectory.

Для того чтобы задать несколько атрибутов, можно просто просуммировать указанные константы. Например, для установки атрибутов файла Hidden и Read-only необходимо использовать функцию setAttr следующего вида:

SetAttr "MyFile", vbHidden + vbReadOnly

При этом для файла MyFile будут установлены атрибуты Hidden и Read-only.

Работа с папками и устройствами

Файл находится на самом нижнем уровне хранения информации в файловой системе компьютера. Выше в иерархии файловой системы расположены папки и устройства. Под устройством понимается не только жесткий диск, но и, например, устройство для чтения CD-ROM.

Для операций с папками и устройствами в Visual Basic существует набор функций и операторов (табл. 9.4), которые позволяют создавать и удалять папки, переименовывать их, раскрывать их содержимое.

Таблица 9.4. Функции и операторы для работы с папками и устройствами
Функция, оператор | Выполняемое действие
ChDir | Изменяет текущую папку
ChDrive | Изменяет текущее устройство
MkDir | Создает папку
RmDir | Удаляет папку
Name | Присваивает папке имя или переименовывает папку
CurDir | Возвращает текущий каталог
Dir | Возвращает список файлов папки

Из всего списка функций для работы с папками одной из самых полезных является функция Dir. Действие этой функции напоминает аналогичную команду DOS. С помощью этой функции можно получить список файлов указанной папки. При этом можно применять шаблон имени файла, используя типовые обозначения "*" — множественная подмена, "?" — подмена одного символа.

Функция Dir имеет следующий синтаксис:

Dir(pathName[, attributes])

где:

  • pathName — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство. Для обозначения имени можно применить шаблон по аналогии с DOS. Если файл не найден, то возвращается пустая строка;
  • attributes — атрибуты файлов. Имеют значения, указанные в табл. 9.5. Если атрибуты не назначены, то по умолчанию возвращаются файлы без атрибутов.

Указывая атрибуты для функции Dir, мы назначаем фильтр для списка выводимых файлов. Для того чтобы назначить одновременно несколько атрибутов, их можно просто арифметически сложить.

Указывая конкретное значение файла, функцию Dir можно использовать для подтверждения существования указанного файла на диске. Если указанный файл не существует, то возвращается пустая строка.

Таблица 9.5. Константы атрибутов файлов функции oir
Константа | Значение | Описание
vbNormal | 0 | Задает файлы без атрибутов
vbReadOnly | 1 | Задает файлы только для чтения
vbHidden | 2 | Задает скрытые файлы
vbSystem | 4 | Задает системные файлы
vbVolume | 8 | Задает метку тома
vbDirectory | 16 | - Задает папку (каталог)

Кратко опишем синтаксис еще нескольких полезных функций, используемых при работе с папками.

Для создания папки применяется оператор MkDir, синтаксис которого выглядит следующим образом:

MkDir path

где path — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

Если параметр path не содержит имя устройства, папка будет создана на текущем устройстве.

Для удаления папок используется оператор RmDir, имеющий следующий синтаксис:

RmDir path

где path — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство.

Совет

При использовании оператора RmDir необходимо иметь в виду, что если удаляемая папка содержит файлы, будет выдаваться системное сообщение об ошибке. Чтобы избежать этого, рекомендуется сначала удалить все файлы из папки с помощью оператора Kill и лишь затем удалить указанную папку

Для выбора другого устройства используется оператор chDrive, имеющий следующий синтаксис:

ChDrive drive где drive — строковое выражение, назначающее новое устройство.

Параметром этой функции является буквенное обозначение устройства вашей системы. При использовании этой функции необходимо иметь в виду, что устройство должно существовать и быть доступным.

Организация печати

Печать текста, то есть вывод данных на принтер, можно организовать при помощи файлового оператора print #. Действительно, с точки зрения вывода данных, в принципе все равно, куда пересылать информацию. Необходимо только правильно указать ее получателя.

Для пересылки данных на принтер используется прямое назначение порта принтера (LPT1, LPT2) в качестве получателя данных. Это можно сделать при помощи оператора открытия файла open:

Open "LPT 1" For Output As #nPrinterHandle

После выполнения этого оператора для адресации данных на принтер необходимо использовать дескриптор (идентификатор файла) #nprinterHandle. Если в приложении не поддерживается вычисление идентификатора файлов, то следует использовать функцию FreeFile для его вычисления. Аналогично можно направить данные в любой другой порт компьютера или сети.

После того как порт открыт для приема данных, можно использовать оператор print #. Следующее выражение посылает на принтер данные для печати:

Print #nPrinterHandle, strExpression

В этом выражении strExpression задает печатаемый текст.

Используя функции и операторы чтения данных из файла, можно организовать циклический построчный вывод файла на печать.

Однако этот метод организации вывода данных на печать имеет свои тонкости. Все операции работы принтера (позиционирование печатающей головки, перевод строки, перевод страницы и др.) теперь потребуется программировать с помощью специальных операторов, которые понимает принтер. Такие операторы называются Esc-кодами (Esc-последовательностями). Их описание прилагается к каждому принтеру и здесь мы не будем их рассматривать.

После завершения печати данных порт закрывается оператором close, который также используется для закрытия файла:

Close #nPrinterHandle

или

Close

При использовании оператора close без дескриптора одновременно с портом закрываются и файлы, из которых выводилась информация.

Система файловых объектов (FSO)

В Visual Basic 6 кроме традиционного применяется принципиально новый метод работы с файлами, который заключается в использовании объектно-ориентированного подхода. В систему файловых объектов FSO (File System Objects) входит набор классов объектов с большим количеством методов.

В этом разделе мы перечислим основные классы системы и обсудим методику их использования. Основные классы объектов, которые входят в состав FSO, указаны в табл. 9.6.

Таблица 9.6. Список основных классбв объектов системы файловых объектов
Класс | Описание
Drive | Класс для работы с устройствами системы. Понятие устройство в данном случае имеет широкое значение и включает в себя, например, жесткий диск, устройство CD-ROM, логический диск
Folder | Класс для работы с папками: создание, удаление, чтение и установка атрибутов папок
Files | Класс для работы с файлами: создание, удаление, копирование файлов, чтение и установка атрибутов файлов
FileSystemObject | Базовый класс системы, на основе которого построены все другие классы. Часть методов и свойств дублируют методы и свойства других классов
TextStream | Специальный класс для работы с текстовыми файлами

Для того чтобы можно было пользоваться объектами FSO, необходимо подключить к проекту библиотеку Microsoft Scripting Runtime в окне подключения ссылок References (Ссылки), открываемом при выполнении команды References меню Project (Проект). В этой библиотеке находятся все классы системы FSO. Просмотреть методы и свойства классов можно с помощью окна Object Browser (Браузер объектов), которое вызывается командой Object Browser меню View (Вид). В этом окне все классы FSO находятся в библиотеке Scripting, которую можно найти по этому имени в верхнем раскрывающемся списке.

Рассмотрим методы и свойства, входящие в эти классы.

Класс Drive

В классе Drive собраны свойства для работы с устройствами файловой системы (рис. 9.6).

Объекты данного класса содержат свойства, описанные в табл. 9.7.

Таблица 9.7. Список свойств класса Drive
Свойство | Назначение
AvailableSpace | Возвращает значение свободного пространства устройства, доступное пользователю
DriveLetter | Возвращает буквенное обозначение устройства
DriveType | Возвращает тип устройства в виде следующих текстовых значений: "Unknown", "Removable", "Fixed", "Network", "CD-ROM", "RAM Disk"
FileSystem | Возвращает тип файловой системы устройства (FAT, NTFS или CDFS)
FreeSpace | Возвращает общее свободное пространство. Это свойство является аналогом AvailableSpace
IsReady | Указывает готовность устройства к работе: True — готово к работе, False — не готово к работе
Path | Возвращает путь устройства, папки, файла
RootFolder | Возвращает корневую папку указанного устройства
Serial-Number | Возвращает числовой идентификатор тома диска
ShareName | Возвращает сетевое имя указанного устройства
TotalSize | Возвращает общий размер устройства в байтах
VolumeName | Возвращает или устанавливает имя тома устройства

Рис. 9.6. Класс Drive в системе FSO

Класс File

В классе File предоставлены свойства и методы для работы с файлами (рис. 9.7).

Рис. 9.7. Класс File в системе FSO

Класс характеризуется свойствами, описанными в табл. 9.8.

Таблица 9.8. Список свойств класса File
Свойство | Описание
Attributes | Возвращает или устанавливает атрибуты файлов и папок. Значения атрибутов такие же, как в аналогичной функции GetAttr традиционной системы функций для работы с файлами (описаны в табл. 9.3). Дополнительно здесь используются еще два атрибута: Alias (числовое значение 64) и Compressed (числовое значение 128)
DateCreated | Возвращает дату и время создания файла
DateLastAccessed | Возвращает дату и время последнего обращения к указанному файлу
DateLastModified | Возвращает дату и время последнего изменения файла
Drive | Возвращает буквенное обозначение устройства, на котором находится файл
Name | Возвращает или устанавливает имя файла
ParentFolder | Возвращает имя родительской папки для файла
Path | Возвращает путь файла
ShortName | Возвращает короткое имя файла по соглашению "8.3" (восемь символов для имени и три для расширения)
ShortPath | Возвращает путь и короткое имя файла по соглашению "8.3"
Size | Возвращает размер файла в байтах
Type | Возвращает краткую информацию о типе файла. Например, для файла с расширением txt это будет "Text Document"

В отличие от класса Drive, класс File содержит методы, список которых приведен в табл. 9.9.

Таблица 9.9. Список методов класса File
Метод | Описание
Copy | Копирует файл
Delete | Удаляет указанный файл
Move | Перемещает файл
OpenAsTextStream | Открывает файл и возвращает имя объекта TextStream для чтения, записи или добавления текстовых данных

Класс Folder

Класс Folder позволяет работать с папками (рис. 9.8). В этот класс входят такие же методы и свойства, как и в класс File. Они выполняют те же действия, но только в применении к папкам.

Дополнительно этот класс характеризуется свойствами, описанными в табл. 9.10.

Таблица 9.10. Список свойств класса Folder
Свойство | Описание
Files | Возвращает список файлов, включая системные и скрытые
IsRootFolder | Определяет, является ли указанная папка корневой и возвращает True, если это так, в противном случае возвращает False
SubFolders | Возвращает список папок, входящих в указанную

Рис. 9.8. Класс Folder в системе FSO

Класс FileSystemObject

Класс FileSystemObject является базовым для системы файловых объектов и его методы частично дублируют методы предыдущих классов (рис. 9.9). Класс характеризуется единственным свойством Drives, которое возвращает список доступных устройств.

Рис. 9.9. Класс FileSystemObject в системе FSO

Список методов этого класса гораздо богаче. В него входят методы, описанные в табл. 9.1).

Таблица 9.11. Список методов класса FileSystemObject
Метод | Описание
BuildPath | Формирует путь файла
Copy File | Копирует файл
CopyFolder | Копирует папку
CreateFolder | Создает папку
CreateTextFile | Создает текстовый файл
DeleteFile | Удаляет файл
DeleteFolder | Удаляет папку
DriveExists | Запрашивает существование устройства
FileExists | Запрашивает существование файла
FolderExists | Запрашивает существование папки
GetAbsolutePathName | Возвращает полный путь
GetDrive | Возвращает ссылку на объект, связанный с указанным устройством
GetDriveName | Возвращает имя устройства
GetExtensionName | Возвращает полное имя
GetFile | Возвращает ссылку на объект, связанный с указанным файлом
GetFileName | Возвращает имя файла
Get Folder | Возвращает ссылку на объект, связанный с указанной папкой
Get ParentFolderName | Возвращает имя родительской папки
GetSpecialFolder | Возвращает тип папки: Windows, System, Temporary
GetTempName | Возвращает случайное имя файла или папки
MoveFile | Перемещает файл
Move Folder | Перемещает папку
OpenTextFile | Открывает текстовый файл

Класс TextStream

Класс TextStream предназначен для работы с текстовыми файлами (рис. 9.10).

Рис. 9.10. Класс TextStream в системе FSO

Свойства данного класса описываются в табл. 9.12.

Таблица 9.12. Список свойств класса TextStream
Свойство | Описание
AtAndOfLine | Определяет наличие метки конца строки для указателя позиции в файле
AtAndOfStream | Определяет наличие метки конца файла для указателя позиции в файле
Column | Определяет номер текущей колонки для символа в строке файла
Line | Определяет текущую строку в файле

Кроме свойств, в классе TextStream представлены методы, описанные в табл. 9.13.

Таблица 9.13. Список методов класса TextStream
Метод | Описание
Close | Закрывает файл
Read | Читает указанное количество символов из файла
ReadAll | Читает все содержимое файла
ReadLine | Читает строку из файла
Skip | Пропускает указанное количество символов при чтении файла
SkipLine | Пропускает следующую строку при чтении файла
Write | Записывает заданную текстовую строку в файл
WriteBlankLines | Добавляет указанное количество строк в файл
WriteLine | Записывает заданную текстовую строку и метку новой строки

Программирование в системе FSO

Новые методы системы FSO расширяют и дополняют традиционные возможности Visual Basic при работе с файлами. Использование системы FSO состоит из трех этапов:

1. Создание объекта системы FSO.

2. Настройка требуемых методов объекта FSO.

3. Настройка доступных свойств объекта FSO.

Создать объект системы FSO можно объявлением переменной типа FSO:

Dim NewFSO As New FileSystemOb]ect

Для создания объекта можно также использовать следующий оператор:

Set NewFSO = CreateObject("Scripting.FileSystemObject")

В данном случае Scripting. FileSystemOb:ect — это требуемый объект с указанием библиотеки.

После этого можно работать со свойствами и методами объекта NewFSO как со всеми другими объектами приложения.

Работа с устройствами и папками

С помощью FSO можно получить полную информацию об устройствах, используя свойства объектов класса Drive системы FSO. Для изучения свойств класса Drive создадим небольшое приложение, собирающее информацию об устройствах. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFSO. Для этого откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект).

3. Присвойте форме проекта имя frmFormAboutDrive. В свойство Caption формы введите заголовок Сведения об устройстве.

4. Разместите в форме объект типа DriveListBox, дважды нажав кнопку DriveListBox на панели элементов управления. Используя свойство Name, присвойте объекту имя drvSelectDrive.

5. Добавьте в форму элемент управления типа commandButton. Назовите созданную кнопку cbStart.

Созданное приложение показано рис. 9.11.

Рис. 9.11. Приложение для изучения свойств класса Drive

6. Откройте окно редактора и введите приведенный ниже код:

Private Sub GetInfoAboutDrive()

Dim NewFSO As New FileSystemObject, Driver As Drive

Dim sInfoDrv(l To 4) As String, sSayAboutInfo As String

Set Driver = New

FSO.GetDrive(NewFSO.GetDriveName(drvSelectDrive.Drive))

If Driver.IsReady = True Then

sInfoDrv(l) = Driver.SerialNumber

sInfoDrv(2) = Driver.TotalSize / 1048576

sInfoDrv(3) = Driver.FreeSpace / 1048576

sInfoDrv(4) = Driver.FileSystem

sSayAboutInfo = "№ " + sInfoDrv(1) + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Всего: " + s!nfoDrv(2) + _

" МБайт" + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Свободно: " + slnfo0rv(3) + _

" МБайт " + Chr(10)

sSayAboutInfo = sSayAboutInfo + "Файловая система: " + _

sInfoDrv(4) + Chr(10)

Else

sSayAboutInfo = "Устройство не готово" + Chr(10)

End If

'Вывод в окно Immediate

Debug.Print sSayAboutInfo

'Вывод в окно сообщения

MsgBox sSayAboutInfo,, "Сведения об устройстве"

End Sub

Private Sub cbStart_Click ()

GetInfoAboutDrive

End Sub

7. Запустите приложение на выполнение. При нажатии кнопки, расположенной в форме, в окно сообщения выдаются сведения о выбранном устройстве. Одновременно информация выдается в окно Immediate (Непосредственное выполнение).

Замечание

Необходимо напомнить, что для работы с FSO следует подключить к проекту библиотеку Microsoft Scripting Runtime, используя окно подключения ссылок References (Ссылки).

При работе с папками можно выполнять следующие действия:

  • создать папку;
  • удалить папку;
  • переместить папку;
  • скопировать папку;
  • переименовать папку;
  • подтвердить существование папки;
  • найти родительскую папку.

Для работы с папками используются объекты двух классов: Folder или FileSystemObject.

Рассмотрим работу с папками на примере небольшого приложения. Выполните следующие действия:

1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.

2. Присвойте проекту имя MyFSOAndFolder. Для этого откройте окно свойств проекта, выбрав команду Projecti Properties (Свойства Project!) меню Project (Проект).

3. Присвойте форме проекта имя frmFormFolder. В свойство caption формы введите заголовок Работа с папками.

4. Разместите в форме объект типа DriveListBox, дважды щелкнув мышью кнопку DriveListBox на панели элементов управления. Используя свойство Name, Присвойте объекту ИМЯ drvSelectDrive.

5. Добавьте в форму объект типа DirListBox для поиска папок. Для этого дважды щелкните мышью кнопку DirListBox на панели элементов управления. Используя свойство Name, присвойте объекту имя dirFolders.

6. Добавьте в форму поле типа TextBox и назовите его txtNameFolder. Для пояснения расположите над этим полем метку Label. Размер (длина) метки должен быть равен размеру поля txtNameFolder. Значение свойства Alignment (Выравнивание) метки установите равным 2-Center.

7. Добавьте в форму три кнопки типа CommandButton. Назовите эти кнопки cbCreate, cbDelete, cbRename и, используя свойство Caption, разместите на них, соответственно, надписи Создать, Удалить, Переименовать.

Созданное приложение показано на рис. 9.12.

Рис. 9.12. Приложение для изучения работы с папками

8. Откройте окно редактора и введите приведенный ниже код:

Dim NewFSO As New FileSystemObject, Folder As Folder

Dim sNameFolder As String

Private Sub cbCreate_Click()

' Создание папки

If txtNameFolder <> "" Then

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

MsgBox sSayAboutInfo,, "Корневая папка"

sNameFolder = dirFolders.Path + txtNameFolder.Text

Else

sNameFolder = dirFolders.Path + "\" + txtNameFolder.Text

End If

NewFSO.CreateFolder (sNameFolder)

End If

End Sub

Private Sub cbDelete_Click ()

' Удаление папки

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

NewFSO.DeleteFolder (sNameFolder)

End Sub

Private Sub cbRename_Click()

' Переименование папки

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

Folder.Name = txtNameFolder.Text

End Sub

Private Sub drvSelectDrive Change()

dirFolders.Path = drvSelectDrive.Drive

End Sub

9. Запустите приложение на выполнение. Обратите внимание на синхронизацию Объектов drvSelectDrive (Список устройств) И dirFolders (Список папок), которая выполняется по событию change списка устройств. При работе с примером необходимо помнить, что выбор значения в списке выполняется двойным щелчком мыши, то есть свойство path списка папок обновляется по двойному щелчку мыши.

Работа с файлами

При работе с файлами в FSO принято делить выполняемые действия на две большие группы.

  • Работа на уровне файлов. К этой группе относится создание, удаление, перемещение, копирование файлов.
  • Работа на уровне данных в файлах. Это ввод, добавление или удаление данных, чтение данных из файлов.

Работа на уровне файлов

Для создания файла можно использовать метод createTextFile класса FileSystemObject:

Dim NewFSO As New FileSystemObject, NewFile As TextStream

Set NewFile = NewFSO.CreateTextFile ("C:\NewFile.txt")

Для удаления файла используется метод Delete класса File. Необходимо заметить, что перед удалением файл должен быть закрыт с помощью метода close. Программный код, выполняющий удаление файла в приложении, выглядит следующим образом:

Dim NewFile As TextStream, File

Set NewFile = NewFSO.CreateTextFile("c:\NewFile.txt")

NewFile.Close

Set File = NewFSO.GetFile("c:\NewFile.txt")

File.Delete

В этом примере файл сначала создается, а затем удаляется.

Перемещение файлов выполняется с помощью метода Move класса File. Если воспользоваться предыдущим текстом, то код, выполняющий перемещение файла, выглядит следующим образом:

Dim NewFile As TextStream, File

Set NewFile = NewFSO.CreateTextFile("c:\NewFile.txt")

NewFile.Close

Set File = NewFSO.GetFile("c:\NewFile.txt")

File.Move ("c:\NewFile.txt")

При этом, как и при удалении, необходимо закрывать файл.

Копирование файла выполняется аналогично перемещению с использованием метода copy.

Разработаем приложение для изучения работы с файлами. Для этого воспользуемся приложением, созданным в предыдущем примере при рассмотрении работы с папками. Откройте приложение и модифицируйте его следующим образом:

1. Увеличьте размер формы, переставьте кнопки и текстовое поле с меткой, как показано на рис. 9.13. Текст метки измените на Имя файла.

2. Добавьте в форму объект типа FileListBox (Список файлов), дважды щелкнув мышью кнопку FileListBox на панели элементов управления. Используя свойство Name, назовите его filFiles.

3. Измените текст кода в приложении на указанный ниже:

Dim NewFSO As New FileSystemObject, Folder As Folder

Dim sNameFolder As String

Dim sNameFile As String

Dim File

Private Sub cbCreate_Click()

' Создание файла

Dim NewFile As TextStream

sNameFile = dirFolders.Path + "\" + txtNameFile.Text

Set NewFile = NewFSO.CreateTextFile(sNameFile)

filFiles.Refresh

End Sub

Private Sub cbDelete_Click()

' Удаление файла

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

sNameFile = filFiles.Path + filFiles.FileName

Else

sNameFile = filFiles.Path + "\" + filFiles.FileName

End If

Set File = NewFSO.GetFile(sNameFile)

File.Delete

filFiles.Refresh

End Sub

Private Sub cbRename_Click ()

' Переименование файла

sNameFolder = dirFolders.Path

Set Folder = NewFSO.GetFolder(sNameFolder)

If Folder.IsRootFolder = True Then

sNameFile = filFiles.Path + filFiles.FileName

Else

sNameFile = filFiles.Path + "\" + filFiles.FileName

End If

Set File = NewFSO.GetFile(sNameFile)

File.Name = txtNameFile.Text fil

Files.Refresh

End Sub

Private Sub dirFolders Change()

filFiles.Path = dirFolders.Path

End Sub

Private Sub drvSelectDrive_Change()

dirFolders.Path = drvSelectDrive.Drive

End Sub

Private Sub filFiles_Click()

txtNameFile.Text = filFiles.FileName

End Sub

Рис. 9.13. Приложение для изучения работы с файлами

В этом приложении создаются, удаляются и переименовываются файлы. Работа списков синхронизирована по событию change списков устройств и папок.

Работа на уровне данных

Запись данных в файл выполняется с помощью методов write и WriteLine класса TextStream. Если необходимо добавить в файл пустую строку, можно использовать метод WriteBlankLines.

Метод WriteLine отличается от write тем, что первый добавляет в записываемую строку метку конца строки.

Корректная запись данных в файл предполагает выполнение этой операции в три этапа:

1. Открытие файла.

2. Запись данных одним из методов.

3. Закрытие файла.

В программном коде показано применение этих методов для записи данных в файл:

Dim NewFSO, txtNewFile

Set NewFSO = CreateObject("Scripting.FileSystemObject")

Set txtNewFile = NewFSO.CreateTextFile("c:\IniFile.ini". True)

' Запись строки

txtNewFile.Write ("Файл инициализации приложения")

' Запись

txtNewFile.WriteBlankLines (2)

' Запись строки с меткой конца строки

txtNewFile.WriteLine ("Parameter = 70")

txtNewFile.Close

Чтение данных из файла выполняется по блокам, построчно или целиком.

для этого используются соответственно методы Read, ReadLine и ReadAll.

Работу этих методов можно изучить, дополнив предыдущий текст следующим кодом:

' Чтение из файла

Dim File As File

Dim sFileCont As String

Set File = NewFSO.GetFile("c:\IniFile.ini")

Set txtNewFile = File.OpenAsTextStream(ForReading)

sFileCont = txtNewFile.Read(40) I

MsgBox sFileCont

sFileCont = txtNewFile.ReadLine

MsgBox sFileCont

txtNewFile.Close

Замечание

При использовании метода ReadAll необходимо помнить, что для чтения больших файлов требуются соответствующие ресурсы памяти.


Введение.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

содержание | вперед

Введение

О Visual Basic 6 написано достаточно много книг, раскрывающих в разной степени возможности данной версии популярного языка программирования. В этой книге мы постарались в первую очередь доступно и подробно показать все новое, что предоставляет пользователю версия Visual Basic 6, не забывая конечно и о возможностях, унаследованных от предыдущих версий.

Обычно Basic ассоциируется с каким-то очень простым в освоении и использовании средством программирования. Это действительно так. На заре компьютерных технологий язык Basic был создан для создания простых программ и использовался в качестве учебного языка для первых шагов при изучении основ программирования с последующим переходом на более сложные и универсальные языки. Это было заложено в название языка BASIC — Beginners All-purpose Symbolic Instructional Code, то есть многоцелевой код символьных инструкций для начинающих. С прогрессом компьютерных технологий развивался и Basic. В настоящее время версия Visual Basic 6 дает возможность решать любые современные задачи разработки приложений. При этом Visual Basic 6 остался достаточно простым в освоении, став в то же время одним из мощных современных языков программирования.

По сути дела последняя версия языка Visual Basic 6 представляет собой интегрированную среду разработки — IDE (Integrated Development Environment). Это означает, что в Visual Basic 6 интегрирован набор инструментов, облегчающих и значительно ускоряющих процесс разработки готового приложения. Такая реализация языка Visual Basic 6 с полным правом позволяет отнести его к средствам быстрой разработки приложений — RAD (Rapid Application Development) и ставит практически в один ряд с такими средствами разработки, как Visual C++, Delphi и другими.

С помощью Visual Basic 6 можно создавать приложения практически для любой области современных компьютерных технологий: бизнес-приложения, игры, мультимедиа, базы данных. При этом приложения могут быть как простыми, так и очень сложными, в зависимости от поставленной задачи.

Простота и мощность языка Visual Basic 6 позволили сделать его встроенным языком для приложений Microsoft Office. Многие независимые разработчики, как например известная своими программами в области бухгалтерского учета фирма "1С", приобретают лицензии на использование языка

Visual Basic в качестве внутреннего языка своих приложений. Поэтому в настоящее время Basic уже не считается учебным языком — знание Visual Basic и его диалектов (VBA, VBScript) становится необходимостью для современного программиста любого уровня.

С появлением версии Visual Basic 6 сбылась мечта программиста — простые приложения можно создавать практически не прибегая к написанию программного кода, а в сложных приложениях рутинный процесс создания программного кода сведен к минимуму. Мастера Visual Basic 6 дают возможность быстро создавать прототипы приложений, готовых для обсуждения и согласования с заказчиком.

В Visual Basic 6 используются все самые современные методы программирования: модель составных объектов СОМ (Component Object Model), распределенная модель составных объектов DCOM (Distributed Component Object Model), технология программных компонентов ActiveX и другие. Суть этих подходов и их реализацию на примерах можно изучить, прочитав посвященные им главы из этой книги.

Книга рассчитана на широкий круг пользователей. Начинающему программисту материалы данной книги помогут быстро изучить язык и все основные возможности Visual Basic 6. Книга будет полезна и читателю, имеющему опыт работы с предыдущими версиями Visual Basic.

Как построена книга

Книга предполагает последовательное изучение материала от более простого к сложному. Глава 1 является вводной. Вы узнаете, как запустить Visual Basic, как получить в нем справочную информацию, познакомитесь с интегрированной средой разработки, с основными рабочими окнами, а также с настройкой среды разработки программы.

Visual Basic б предлагает большой набор специальных средств, помогающих быстрее создать как само приложение, так и его элементы: формы, диалоговые окна, отчеты, базы данных и многое другое, то есть практически все. что связано с разрабатываемым приложением и средой, в которой оно будет работать. В главе 2 рассматривается работа мастера создания приложений Application Wizard и мастера форм баз данных Data Form Wizard, а также шаблоны форм.

Прочитав главу 3, вы научитесь создавать простые приложения, размещать в форме элементы управления и настраивать их свойства. Глава 4 посвящена вопросам, связанным с управлением проекта. Из нее вы узнаете, как настроить свойства проекта, присоединить к нему внешние библиотеки объектов и компоненты, как создать исполняемые файлы приложения.

В главах 5 и 6 рассматриваются основы программирования в Visual Basic. Глава 7 посвящена разработке пользовательского интерфейса. Вы узнаете, каких типов бывают интерфейсы, познакомитесь с работой редактора меню Menu Editor, со средствами, предоставляемыми Visual Basic в распоряжение разработчика для создания панелей инструментов, диалоговых окон, строки состояния.

В главе 8 рассматривается использование при создании приложений различных элементов управления Visual Basic, а также стандартных элементов управления Microsoft, таких как ImageList, ImageCombo, ProgressBar, Slider, StatusBar, UpDown, MonthView.

Глава 9 посвящена работе с файлами и организации печати. При рассмотрении этого вопроса использовались два подхода: традиционный с помощью функций Visual Basic и объектно-ориентированный с помощью системы файловых объектов (FSO).

О том, какие средства предоставляет в распоряжение разработчика программа Visual Basic по отладке приложений и их оптимизации, вы узнаете из главы 10.

В главах 11 и 12 речь идет об использовании в приложениях графики и мультимедиа. О том, как разработать для своего приложения эффективную справочную систему в формате WinHelp или HTML, вы узнаете из главы 13.

В главе 14 обсуждается создание компонентов ActiveX, а в главе 15 — создание собственных классов.

Третья, заключительная часть книги, в которую входят главы с 16 по 20, рассматривает расширенные возможности Visual Basic. В главе 16 вы познакомитесь с вопросами, связанными с проектированием баз данных и нормализацией данных, хранящихся в них, как, используя Visual Data Manager, создавать базы данных и входящие в них таблицы. В этой главе вы познакомитесь также с созданием соединений с сервером баз данных.

Глава 17 посвящена элементам управления данными. Из нее вы узнаете о создании форм для ввода и редактирования данных с помощью компонентов ADO, о подключении компонентов ADO к проекту, об использовании окружения данных при создании формы, о создании ActiveX-компонентов для управления данными. В главе 18 рассматривается создание отчетов в Visual Basic с помощью конструктора отчетов Data Report Designer. Изучив материал главы 19, вы сможете создавать приложения, работающие в Internet. Вопросам бесконфликтной работы группы программистов над одним приложением посвящена глава 20.

Специальные элементы книги

В книге есть много особых специальным образом выделенных вставок. В них содержится дополнительная информация, облегчающая чтение и поиск информации:

Замечание

В замечаниях речь идет о последствиях, к которым приводят те или иные действия.

Совет

В советах рассказывается о некоторых хитростях, которые следует знать, чтобы наиболее эффективно использовать возможности Visual Basic.

Предупреждение

Предупреждения должны помочь вам избежать проблем. В них сказано, чего следует опасаться, а также что нужно делать, чтобы избежать ошибок.

В книге используются различные виды шрифта:

Новые термины выделены курсивом.

Тот текст, который вы должны вводить с клавиатуры, выделен полужирным курсивом.

Команды меню, наименования кнопок, вкладок, опций, флажков, диалоговых окон, областей и т. п. выделены полужирным шрифтом.

Две клавиши, соединенные знаком плюс, — это комбинация клавиш. Нажмите первую клавишу и, не отпуская ее, нажмите вторую. Затем отпустите обе.

При работе с книгой читателю необходимо иметь в виду, что рядом с наименованиями команд меню, диалоговых окон и располагаемых в них элементах даны переводные эквиваленты, а не названия локальной версии.


Введение.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

содержание | вперед

Введение

О Visual Basic 6 написано достаточно много книг, раскрывающих в разной степени возможности данной версии популярного языка программирования. В этой книге мы постарались в первую очередь доступно и подробно показать все новое, что предоставляет пользователю версия Visual Basic 6, не забывая конечно и о возможностях, унаследованных от предыдущих версий.

Обычно Basic ассоциируется с каким-то очень простым в освоении и использовании средством программирования. Это действительно так. На заре компьютерных технологий язык Basic был создан для создания простых программ и использовался в качестве учебного языка для первых шагов при изучении основ программирования с последующим переходом на более сложные и универсальные языки. Это было заложено в название языка BASIC — Beginners All-purpose Symbolic Instructional Code, то есть многоцелевой код символьных инструкций для начинающих. С прогрессом компьютерных технологий развивался и Basic. В настоящее время версия Visual Basic 6 дает возможность решать любые современные задачи разработки приложений. При этом Visual Basic 6 остался достаточно простым в освоении, став в то же время одним из мощных современных языков программирования.

По сути дела последняя версия языка Visual Basic 6 представляет собой интегрированную среду разработки — IDE (Integrated Development Environment). Это означает, что в Visual Basic 6 интегрирован набор инструментов, облегчающих и значительно ускоряющих процесс разработки готового приложения. Такая реализация языка Visual Basic 6 с полным правом позволяет отнести его к средствам быстрой разработки приложений — RAD (Rapid Application Development) и ставит практически в один ряд с такими средствами разработки, как Visual C++, Delphi и другими.

С помощью Visual Basic 6 можно создавать приложения практически для любой области современных компьютерных технологий: бизнес-приложения, игры, мультимедиа, базы данных. При этом приложения могут быть как простыми, так и очень сложными, в зависимости от поставленной задачи.

Простота и мощность языка Visual Basic 6 позволили сделать его встроенным языком для приложений Microsoft Office. Многие независимые разработчики, как например известная своими программами в области бухгалтерского учета фирма "1С", приобретают лицензии на использование языка

Visual Basic в качестве внутреннего языка своих приложений. Поэтому в настоящее время Basic уже не считается учебным языком — знание Visual Basic и его диалектов (VBA, VBScript) становится необходимостью для современного программиста любого уровня.

С появлением версии Visual Basic 6 сбылась мечта программиста — простые приложения можно создавать практически не прибегая к написанию программного кода, а в сложных приложениях рутинный процесс создания программного кода сведен к минимуму. Мастера Visual Basic 6 дают возможность быстро создавать прототипы приложений, готовых для обсуждения и согласования с заказчиком.

В Visual Basic 6 используются все самые современные методы программирования: модель составных объектов СОМ (Component Object Model), распределенная модель составных объектов DCOM (Distributed Component Object Model), технология программных компонентов ActiveX и другие. Суть этих подходов и их реализацию на примерах можно изучить, прочитав посвященные им главы из этой книги.

Книга рассчитана на широкий круг пользователей. Начинающему программисту материалы данной книги помогут быстро изучить язык и все основные возможности Visual Basic 6. Книга будет полезна и читателю, имеющему опыт работы с предыдущими версиями Visual Basic.


Введение.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Как построена книга

Книга предполагает последовательное изучение материала от более простого к сложному. Глава 1 является вводной. Вы узнаете, как запустить Visual Basic, как получить в нем справочную информацию, познакомитесь с интегрированной средой разработки, с основными рабочими окнами, а также с настройкой среды разработки программы.

Visual Basic б предлагает большой набор специальных средств, помогающих быстрее создать как само приложение, так и его элементы: формы, диалоговые окна, отчеты, базы данных и многое другое, то есть практически все. что связано с разрабатываемым приложением и средой, в которой оно будет работать. В главе 2 рассматривается работа мастера создания приложений Application Wizard и мастера форм баз данных Data Form Wizard, а также шаблоны форм.

Прочитав главу 3, вы научитесь создавать простые приложения, размещать в форме элементы управления и настраивать их свойства. Глава 4 посвящена вопросам, связанным с управлением проекта. Из нее вы узнаете, как настроить свойства проекта, присоединить к нему внешние библиотеки объектов и компоненты, как создать исполняемые файлы приложения.

В главах 5 и 6 рассматриваются основы программирования в Visual Basic. Глава 7 посвящена разработке пользовательского интерфейса. Вы узнаете, каких типов бывают интерфейсы, познакомитесь с работой редактора меню Menu Editor, со средствами, предоставляемыми Visual Basic в распоряжение разработчика для создания панелей инструментов, диалоговых окон, строки состояния.

В главе 8 рассматривается использование при создании приложений различных элементов управления Visual Basic, а также стандартных элементов управления Microsoft, таких как ImageList, ImageCombo, ProgressBar, Slider, StatusBar, UpDown, MonthView.

Глава 9 посвящена работе с файлами и организации печати. При рассмотрении этого вопроса использовались два подхода: традиционный с помощью функций Visual Basic и объектно-ориентированный с помощью системы файловых объектов (FSO).

О том, какие средства предоставляет в распоряжение разработчика программа Visual Basic по отладке приложений и их оптимизации, вы узнаете из главы 10.

В главах 11 и 12 речь идет об использовании в приложениях графики и мультимедиа. О том, как разработать для своего приложения эффективную справочную систему в формате WinHelp или HTML, вы узнаете из главы 13.

В главе 14 обсуждается создание компонентов ActiveX, а в главе 15 — создание собственных классов.

Третья, заключительная часть книги, в которую входят главы с 16 по 20, рассматривает расширенные возможности Visual Basic. В главе 16 вы познакомитесь с вопросами, связанными с проектированием баз данных и нормализацией данных, хранящихся в них, как, используя Visual Data Manager, создавать базы данных и входящие в них таблицы. В этой главе вы познакомитесь также с созданием соединений с сервером баз данных.

Глава 17 посвящена элементам управления данными. Из нее вы узнаете о создании форм для ввода и редактирования данных с помощью компонентов ADO, о подключении компонентов ADO к проекту, об использовании окружения данных при создании формы, о создании ActiveX-компонентов для управления данными. В главе 18 рассматривается создание отчетов в Visual Basic с помощью конструктора отчетов Data Report Designer. Изучив материал главы 19, вы сможете создавать приложения, работающие в Internet. Вопросам бесконфликтной работы группы программистов над одним приложением посвящена глава 20.


Введение.htm

Пользовательского поиска

● Ищу рекламные места. Куплю интернет трафик дорого
● Покупаю ссылки с сайтов. Обращайтесь

назад | содержание | вперед

Специальные элементы книги

В книге есть много особых специальным образом выделенных вставок. В них содержится дополнительная информация, облегчающая чтение и поиск информации:

Замечание

В замечаниях речь идет о последствиях, к которым приводят те или иные действия.

Совет

В советах рассказывается о некоторых хитростях, которые следует знать, чтобы наиболее эффективно использовать возможности Visual Basic.

Предупреждение

Предупреждения должны помочь вам избежать проблем. В них сказано, чего следует опасаться, а также что нужно делать, чтобы избежать ошибок.

В книге используются различные виды шрифта:

Новые термины выделены курсивом.

Тот текст, который вы должны вводить с клавиатуры, выделен полужирным курсивом.

Команды меню, наименования кнопок, вкладок, опций, флажков, диалоговых окон, областей и т. п. выделены полужирным шрифтом.

Две клавиши, соединенные знаком плюс, — это комбинация клавиш. Нажмите первую клавишу и, не отпуская ее, нажмите вторую. Затем отпустите обе.

При работе с книгой читателю необходимо иметь в виду, что рядом с наименованиями команд меню, диалоговых окон и располагаемых в них элементах даны переводные эквиваленты, а не названия локальной версии.