Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1888.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.52 Mб
Скачать

6.2.15. Сохранение данных перед выходом из диалогового окна

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

Допустим, в диалоговом окне Myform2 есть поле ввода txtName, куда пользователь вводит свою фамилию, список LstColors, где он выбирает любимый цвет, флажок chOpt (Caption равно Полная оптимизация) и две командных кнопки: cmdCancel (Caption равно Отказ) и cmdOK (Caption равно Готово). Сохранить информацию, указанную в этом окне, можно следующим образом:

' Объявления глобальных переменных (на уровне модуля Module)

Public strName As String ' фамилия

Public strColor As String ' любимый цвет

Public varOptim As Variant ' признак полной оптимизации

Public btnCancelled As Boolean ' признак отказа от ввода

' Процедуры диалогового окна

Private Sub UserForm_Initialize()

btnCancelled = True ' инициализация признака отказа

With Me.LstColors ' задание элементов списка:

.AddItem "белый"

.AddItem "черный"

.AddItem "синий"

.AddItem "красный"

.AddItem "зеленый"

.AddItem "желтый"

.AddItem "голубой"

.ListIndex = 1 'выбор элемента списка "черный"

End With

End Sub

Private Sub cmdCancel_Click() ' нажата кнопка "Отказ"

btnCancelled = True

Unload Me

End Sub

Private Sub cmdOK_Click() ' нажата кнопка "Готово"

With Me ' Сохранение данных:

strName = .txtName.Text

strColor = .LstColors.Value

varOptim = chOpt.Value

End With

btnCancelled = False

Unload Me

End Sub

Ниже приведен пример процедуры, использующей окно Myform:

Sub exPrMyform2()

Dim Optimization As String

Myform2.Show 'вывод окна

If btnCancelled = True Then ' выход по кнопке "Отказ"

MsgBox "Отказ от ввода данных", vbExclamation

Else ' выход по кнопке "Готово"

If varOptim = 0 Then

Optimization = "Без оптимизации"

Else

Optimization = "С полной оптимизацией"

End If

MsgBox "Фамилия " & strName & _

". Любимый цвет " & strColor & Chr(13) & Optimization

End If

End Sub

На рис. 6.21 показано это окно с заполненным полем Фамилия и установленным флажком. После выхода из окна по нажатию кнопки Готово на экране появляется окно с сообщением, приведенное на рис. 6.22.

Рис. 6.21. Окно с данными перед выходом

Рис. 6.22. Окно с сообщением после нажатия на кнопку Готово

6.2.16. Закрытие диалогового окна

Диалоговые окна в Excel всегда работают в режиме модального диалога. Это значит, что пользователь должен полностью завершить работу в окне и закрыть его, прежде чем сможет перейти к действиям, не связанным с работой в этом окне. Для завершения работы с диалоговым окном применяется оператор Unload (Выгрузить), вызываемый при сообщении программе о желании пользователя завершить работу в этом диалоговом окне. Обычно в диалоговое окно включается одна или несколько кнопок, выбор которых приводит к завершению работы в нем (Отказ, Выход, Готово, Конец работы и т. п.).

В предыдущем примере был использован оператор Unload для выхода из диалогового окна после сохранения введенных пользователем данных.

Ниже приводится пример вставки данных (фамилии пользователя) из того же диалогового окна Myform в активный документ перед закрытием окна:

Private Sub cmdOK_Click() ' нажата кнопка "Готово"

ActiveDocument.Content.InsertAfter txtName.Text

Unload Myform

End Sub

Другая возможность убрать окно с экрана – использовать метод Hide: MyForm.Hide.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]