Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 3....doc
Скачиваний:
37
Добавлен:
17.12.2018
Размер:
1.65 Mб
Скачать

Метод SetDefaultTabOrder (Установить стандартный порядок обхода)

Устанавливает для диалогового окна, рамки или страницы стандартный порядок обхода их элементов управления при нажатии клавиши Tab. Этот порядок соответствует обходу элементов слева направо и сверху вниз и совпадает с лексикографическим порядком на координатах левых верхних углов элементов <Left, Top>. Вызов метода имеет вид:

объект. SetDefaultTabOrder

где объект - объект, для которого устанавливается стандартный порядок.

Метод SetFocus (Установить фокус)

Устанавливает фокус на вызвавший этот метод элемент управления. При невозможности это сделать фокус остается на прежнем месте, и возбуждается ошибка. Вызов метода имеет вид:

объект. SetFocus

где объект - объект, который стремится попасть в фокус.

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

Метод UndoAction (Отменить действие)

Отменяет последнее действие, выполненное в диалоговом окне, рамке или на странице. Подтверждающий возможность отмены действия признак - значение True свойства CanUndo. Если оно равно False, последнее действие, совершенное в диалоговом окне, отменить нельзя.

Вызов метода имеет вид:

Boolean = объект. UndoAction

где объект - объект, для которго отменяется последнее действие.

Типичные действия, которые можно отменять методом UndoAction и восстанавливать методом RedoAction, - ввод и выделение текста в поле ввода, выделение элемента в списке, установка значений флажков, переключателей и выключателей и т. п. А вот добавление элемента в список отмене не подлежит.

Реализация операций Undo и Redo в диалоговых окнах

Чуть ранее мы рассмотрели пример диалогового окна, в котором созданы аналоги стандартных кнопок Copy, Cut и Paste. Конечно же, во многих ситуациях полезно уметь создавать аналоги и других кнопок, к которым привыкли пользователи. Сейчас мы рассмотрим пример диалогового окна, в котором появятся кнопки Undo и Redo, позволяющие отменять или восстанавливать те или иные действия. Как мы уже говорили, не все действия пользователя при его работе в диалоговом окне могут быть отменены. Тем не менее, наличие таких кнопок упрощает его работу.

Рассмотрим в качестве примера диалоговое окно UndoAndRedo, где помещены поле ввода NewText, список ListBox1 и три командные кнопки CommandButton1, CommandButton2, CommandButton3. Обработчики события Click командных кнопок задают операции Undo, Add (Добавить элемент) и Redo. Текст, введенный в поле NewText, будет добавляться в качестве нового элемента в список ListBox1 при выборе кнопки Add, а выбор Undo и Redo должен приводить к отмене последнего действия или к восстановлению его результата. Если же отмена или восстановление не представляется возможной, то подается звуковой сигнал. Вот как выглядит диалоговое окно в процессе работы:

Рис. 13. 14.  Диалоговое окно с кнопками Undo и Redo

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

Private Sub CommandButton1_Click ()

If UndoAndRedo. CanUndo = True Then ' отмена возможна

UndoAndRedo. UndoAction

Else ' отмена невозможна

Beep

End If

End Sub

Private Sub CommandButton2_Click ()

If NewText. Text <> "" Then ' вставка новой рубрики

ListBox1. AddItem (NewText. Text)

Else ' текст не введен

Beep

End If

End Sub

Private Sub CommandButton3_Click ()

If UndoAndRedo. CanRedo = True Then ' восстановление возможно

UndoAndRedo. RedoAction

Else ' восстановление невозможно

Beep

End If

End Sub

Private Sub UserForm_Initialize ()

ListBox1. AddItem "черный"

ListBox1. AddItem "белый"

End Sub

Пример 13.3. (html, txt)

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