Учебное пособие Рекомендовано учебно-методическим советом угаэс уфа-2006

Вид материалаУчебное пособие

Содержание


2.10. Массивы объектов
2.11. Создание группы переключателей
2.11.1. Порядок размещения переключателей в рамках
2.12. Несколько форм в проекте
2.12.2. Создание и вывод на экран окна диалога
ИмяФормы.Show [style] [,ownerform]
Создание формы диалога из шаблона Form
Рис. 2.40. Форма с компонентом Animation
End Sub В модуле формы FrmMyDialog наберите код: Private Sub Form_Load()
Шаблон формы Dialog
Private Sub CancelButton_Click()
Шаблон формы About Dialog
Private Sub Form_Load()
Шаблон формы Log in Dialog
Рис. 2.44. Форма Log in Dialog
Public LoginSucceeded As Boolean
Общий модуль проекта
Public Sub GetFontDefault(obj As Object)
Public Sub GetFontCmnDlg(obj As Object, CmnDlg As CommonDialog)
Контрольные вопросы
...
Полное содержание
Подобный материал:
1   2   3   4   5   6   7   8   9   10

2.10. Массивы объектов


Массивом объектов называется совокупность однотипных объектов с одинаковыми именами. Для создания массива объектов на этапе конструирования необходимо:

  1. Создать на объекте-контейнере, например, на Frame1 первый объект, и задать ему имя, например, Option1
  2. Скопировать объект в буфер обмена (нажмите Ctrl+C)
  3. Выделить объект-контейнер, на котором будут размещаться объекты, в данном случае – Frame1
  4. Вставить объект из буфера обмена (нажмите Ctrl+V) и подтвердить в окне диалога Visual Basic создание массива.
  5. Повторить п.3, п. 4 для вставки необходимого количество объектов.







Рис. 2.38. Создание массива объектов


Можно создать массив из объектов уже размещенных в контейнере. Для этого в окне свойств задайте свойству Name объектов одно и то же значение, например Option1. После ввода имени для второго объекта, появится окно диалога Visual Basic, в котором следует выбрать "Да" для создания массива.

Массив объектов создается, как правило, для написания более простого и краткого программного кода. В программном коде, при обращении к объекту массива указывается его индекс: ИмяОбъекта(Индекс), например Option1(5).

2.11. Создание группы переключателей


Группа переключателей – два и более переключателей – OptionButton, свойство Value которых, взаимозависимо. В группе переключателей нельзя выбрать (установить для свойства Value значение True) более одного переключателя.

Для создания группы переключателей используются объекты-контейнеры, например, форма - Form, рамка - Frame (чаще всего) и графическое поле - Picture. Рамка позволяет объединить переключатели в группу не только логически, но и визуально. Отметим, что переключатели в группе совсем необязательно должны быть массивом объектов.

2.11.1. Порядок размещения переключателей в рамках

  • Если рамка группирует переключатели, то сначала создается объект – рамка, а затем на нем размещаются переключатели.
  • Если рамка не группирует переключатели, то сначала на каком-либо контейнере размещаются переключатели (при этом создается группа), далее поверх них размещается рамка (которая объединяет переключатели лишь визуально) и затем в контекстном меню рамки выбирается команда: Send to Back.

Используя для выделенной группы переключателей приемы вырезания (Ctrl+Х) и вставки (Ctrl+V), можно переносить их с одного объекта-контейнера на другой.

2.12. Несколько форм в проекте

2.12.1. Шаблоны форм диалога


Шаблоны форм можно использовать при создании проектов в среде проектирования Visual Basic в качестве вспомогательных окон диалога, временно появляющиеся на экране с какими-либо сообщениями для пользователя. Как правило такие окна бывают модальными (VbModal), т.е. "прекращающими" работу пользователя с другими окнами приложения, пока пользователь не закроет модальное окно.

В Visual Basic имеются шаблоны форм диалога, например:
  • Dialog – простой диалог
  • About Dialog – о программе
  • Log in Dialog – диалог регистрации

2.12.2. Создание и вывод на экран окна диалога


Для создания окна диалога можно воспользоваться одним из шаблонов форм, представляемых Visual Basic. Выполните команду меню Project, Add Form, в окне Add Form выберите нужную форму. В окне Project появятся новые формы проекта.




Рис. 2.39. Создание окон диалога


Чтобы открыть форму в конструкторе форм необходимо в окне Project выполнить двойной щелчок на названии формы.

Для вывода на экран окна диалога используется метод Show:


ИмяФормы.Show [style] [,ownerform]

где

style – стиль формы: VbModal – модальная, VbModaless – не модальная (по умолчанию)

ownerform – собственник формы, часто используется ключевое слово Me, обозначающее форму, в модуле которой был вызван метод, например:

frmDialog.Show vbModal, Me

Создание формы диалога из шаблона Form


Свою форму диалога можно создать из шаблона Form, установив необходимые свойства формы и разместив на ней нужные компоненты. В данном случае форма будет предназначена для просмотра видео-клипов. Для этого добавьте на панель General компонент Microsoft Windows Common Controls 2-6.0.





Добавьте в стандартный проект форму Form и установите свойства формы:

Name=FrmMyDialog, BackColor=ToolTip, BorderStyle=VbFixedDialog.

Добавьте на форму кнопки CmdYes (Да) со свойством Default=True и CmdNo (Нет) со свойством Cancel=True.

Добавьте на форму компоненты CommonDialog и Animation.

Для компонента Animation установите свойство Center=True.

Рис. 2.40. Форма с компонентом Animation

Для вывода формы необходимо в модуле главной формы проекта, например в событии Click кнопки Command1 набрать код:


Private Sub Command1_Click()

FrmMyDialog.Show vbModal, Me

End Sub



    В модуле формы FrmMyDialog наберите код:



Private Sub Form_Load()

CommonDialog1.InitDir="C:\Program Files\Microsoft Visual Studio" _

&"\Common\Graphics\Avis\"

End Sub


Private Sub CmdNo_Click()

Animation1.Stop

Animation1.Close

CommonDialog1.InitDir = CurDir

Unload Me

End Sub


Private Sub CmdYes_Click()

On Error GoTo MtkErr

CommonDialog1.Flags = cdlOFNFileMustExist

CommonDialog1.Filter = "аудио-видио файлы (*.avi)|*.avi"

CommonDialog1.ShowOpen

If CommonDialog1.FileName = Empty Then Exit Sub

Animation1.Open CommonDialog1.FileName

Animation1.Play

Exit Sub

MtkErr:

MsgBox "Ошибка: " & Err.Description,vbCritical,"CommonDialogError"

End Sub

Шаблон формы Dialog


Форма Dialog используется для вывода сообщений и запросов, например, на продолжение работы приложения. Свойство формы BorderStyle имеет значение VbFixedDialog. На форме расположены кнопки OKButton, свойство Default=True и CancelButton, свойство Cancel=True.

Добавьте в форму Dialog элемент управления Label с надписью " Закрыть приложение?", как показано на рис. 2.41. Чтобы узнать, какая кнопка была нажата пользователем, введем открытую переменную BlnDlgRet логического типа.




Рис. 2.41. Форма Dialog



В модуле формы Dialog наберите код обработки событий


Public BlnDlgRet As Boolean 'переменная, возвращающая результат (да, нет)


Private Sub CancelButton_Click()

BlnDlgRet = False

Unload Me

End Sub


Private Sub OKButton_Click()

BlnDlgRet = True

Unload Me

End Sub


Форму Dialog можно использовать в модуле главной формы проекта, например, в событии QueryUnload для подтверждения закрытия формы:


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Dialog.Show vbModal, Me

If Dialog.BlnDlgRet = True Then Cancel = False

End Sub

Шаблон формы About Dialog


Форма About Dialog содержит информацию о приложении и ее разработчике.




Свойство формы BorderStyle=VbFixedDialog. На форме расположена кнопка cmdOK со свойствами Default=True и Cancel=True, а также кнопка cmdSysInfo.

Модуль формы About Dialog содержит обработчики событий, позволяющие: считать из реестра путь к файлу msinfo32.exe (информация о системе), открыть файл, вывести надписи при загрузке формы, выгрузить форму.

Рис. 2.42. Форма About Dialog

При загрузке формы используется следующий код


Private Sub Form_Load()

Me.Caption = "About " & App.Title 'Название приложения

lblVersion.Caption= "Version " & App.Major & "." & App.Minor _

& "." & App.Revision

lblTitle.Caption = App.Title

End Sub





Рис.2. 43. Информация о системе (файл msinfo32.exe)

Шаблон формы Log in Dialog


Форма Log in Dialog предназначена для регистрации пользователя.




Свойство формы BorderStyle=VbFixedDialog.

На форме расположены надписи, кнопка cmdOK со свойством Default=True, кнопка cmdCancel со свойством Cancel=True, а также текстовое поле txtUserName и поле txtPassword со свойством PasswordChar="*".

Рис. 2.44. Форма Log in Dialog

Модуль формы Log in Dialog содержит обработчики событий кнопок и открытую переменную LoginSucceeded со значением True, если пароль введен верно, иначе – False. При закрытии формы используется метод Hide, не выгружающий ее из оперативной памяти. Пример:


Public LoginSucceeded As Boolean 'открытая переменная


Событие кнопки "Cancel"


Private Sub cmdCancel_Click()

LoginSucceeded = False

Me.Hide 'введенный пароль не стирается

End Sub

Событие кнопки "OK"


Private Sub cmdOK_Click()

If txtPassword = "psw" Then

LoginSucceeded = True

Me.Hide 'введенный пароль не стирается

Else

MsgBox "Invalid Password, try again!", , "Login"

txtPassword.SetFocus

SendKeys "{Home}+{End}" 'выделить текст

End If

End Sub

Общий модуль проекта


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

Установить шрифт по умолчанию для объекта.


Public Sub GetFontDefault(obj As Object)

With obj.Font

.Name = "MS Sans Serif"

.Size = 8

.Bold = False

.Italic = False

.Strikethrough = False

.Underline = False

End With

obj.ForeColor = vbButtonText

End Sub


Установить шрифт, выбранный в общем диалоге, для объекта.


Public Sub GetFontCmnDlg(obj As Object, CmnDlg As CommonDialog)

With obj.Font

.Name = CmnDlg.FontName

.Size = CmnDlg.FontSize

.Bold = CmnDlg.FontBold

.Italic = CmnDlg.FontItalic

.Strikethrough = CmnDlg.FontStrikethru

.Underline = CmnDlg.FontUnderline

End With

obj.ForeColor = CmnDlg.Color

End Sub





Рис. 2.45. Выбор атрибутов шрифта, в общем диалоге (CommonDialog)


Пример использования процедур модуля Module1 для присвоения цвета метке Label1. Установки флага – доступны экранные и принтерные шрифты и эффекты (Видоизменение).


Private Sub CmdModal_Click()

Call Module1.GetFontDefault(Label1)

.CancelError = True

On Error GoTo MtkErr

CommonDialog1.Flags=cdlCFBoth + cdlCFEffects

CommonDialog1.FontName = Label1.Font.Name

CommonDialog1.ShowFont

Call Module1.GetFontCmnDlg(Label1, CommonDialog1)

Exit Sub

MtkErr:

If Err.Number <> cdlCancel Then

MsgBox "Ошибка: " & Err.Description,vbCritical Or vbOKOnly, _

"CommonDialogError"

End If

End Sub

Контрольные вопросы


Все вопросы относятся к языку программирования Visual Basic


  1. Какое расширение имеет файл проекта?
  2. Как называется кнопка для отображения панели General?
  3. Как называется кнопка для отображения свойств выбранного объекта?
  4. Какая команда меню для отображения окна с дополнительными компонентами?
  5. Какая команда меню Format предназначена для блокирования объектов на форме?
  6. Какой элемент управления используется для создания надписи?
  7. Какой элемент управления используется для ввода данных?
  8. Какой элемент управления используется для переключателя?
  9. Какой элемент управления используется для флажка?
  10. Какой элемент управления объединяются в группы?
  11. Какой элемент управления используется для отображения списка дисков?
  12. Какой элемент управления используется для отображения списка папок?
  13. Какой элемент управления используется для отображения списка файлов?
  14. Какое свойство элемента управления FileListBox задает маску для выбора файлов?
  15. Какой метод элемента управления FileListBox, используется для обновления списка?
  16. На какие компоненты можно вывести графические изображения?
  17. Какие компоненты можно вывести данные методом Print?
  18. Для чего предназначено свойство Font?
  19. Для чего предназначено свойство ToolTipText?
  20. В каком свойстве элемента управления ComboBox содержатся данные?
  21. В каком свойстве элемента управления ListBox содержится текущий номер элемента списка?
  22. В каком свойстве элемента управления ListBox содержится текущее значение?
  23. Какое свойство позволяет скрыть заголовок формы?
  24. Какое свойство позволяет автоматически развернуть форму на весь экран сразу после запуска проекта?
  25. Какое свойство позволяет задавать положение формы на экране сразу после запуска проекта?
  26. Какое свойство позволяет форме получать сообщение о событиях нажатия клавиш?
  27. Какое событие происходит дважды при двойном щелчке на форме?
  28. Нажатие каких клавиши может вызвать в форме событие KeyPress?
  29. Нажатие каких клавиши может вызвать в форме событие KeyDown?
  30. Что возвращает функция InputBox при нажатии кнопки ОК в окне диалога?
  31. Что возвращает функция InputBox при нажатии кнопки Cancel в окне диалога?
  32. Для чего предназначена функция MsgBox Visual Basic?
  33. Что возвращает функция MsgBox Visual Basic при нажатии кнопок в окне диалога?
  34. Что возвращает окно "Открытие файла" компонента CommonDialog при нажатии кнопки "Отрыть"?
  35. Для чего предназначена функция "Me"?