Проектирование интерфейса. Объекты диалоговых окон
Метод Move (Сдвинуть)
Результат вызова этого метода - сдвиг диалогового окна, одного элемента управления или одновременный сдвиг всех элементов управления коллекции Controls диалогового окна.
Для диалогового окна или отдельного элемента вызов метода имеет вид:
объект. Move ([Left [, Top [, Width [, Height [, Layout]]]]])
а для коллекции Controls:
объект. Move (X, Y)
Здесь объект - имя сдвигаемого объекта или коллекции, объекты которой сдвигаются. Все параметры в скобках в первом варианте вызова необязательны. Параметры Left и Top задают координаты верхнего левого угла объекта в точках, а Width и Height - ширину и высоту объекта в точках (все четыре имеют тип Single ). Булев параметр Layout определяет, будет ли для объекта-родителя инициировано событие Layout. Во втором варианте параметры X и Y обязательны, они задают смещение всех объектов коллекции по горизонтали и вертикали (отрицательные значения - сдвиг влево и вверх, положительные - вправо и вниз).
Метод Move можно использовать как для сдвига объекта, так и для изменения его размеров. Например, чтобы при двойном щелчке изображения Image1, имеющего координату верхней границы 18 и высоту 70, поднять его верхнюю границу и увеличить высоту на 10 точек, можно использовать процедуру.
Private Sub Image1_DblClick (ByVal Cancel As MSForms. ReturnBoolean) Me. Image1. Move Top:=8, Height:=80 End Sub
Метод Paste (Вставить)
Вставляет содержимое буфера обмена в объект. Вызов метода имеет вид:
объект. Paste
где объект - тот объект, в который происходит вставка. Если этот объект - поле ввода или комбинированный список, содержимое буфера обмена трактуется как текст. В диалоговое окно, форму или страницу может вставляться любой объект, попавший в буфер обмена.
Реализация операций Cut, Copy, Paste в диалоговых окнах
При работе с текстами трудно обойтись без этих, ставших привычными операций. Покажем на примере, как можно реализовать их в диалоговых окнах. Рассмотрим диалоговое окно, содержащее три поля ввода TextBox1, TextBox2, TextBox3 и три командные кнопки CommandButton1, CommandButton2 и CommandButton3 со стандартными изображениями Cut, Copy, Paste: Вот как выглядит это диалоговое окно в момент открытия:
Наша цель состоит в том, чтобы кнопки работали "стандартным" образом, позволяя, копировать выделенные тексты в буфер из любого текстового окна, удалять выделенные тексты, помещая их в буфер, и, наконец, приклеивать содержимое буфера в точку вставки текстового окна. Методами Cut, Copy, Paste текстовые окна обладают, и единственная проблема состоит в том, что, когда работатет обработчик события Click соответствующей командной кнопки, ему каким-то образом необходимо знать, к какому же полю ввода применить соответствующую операцию. Для этой цели мы приспособили события Exit текстовых окон. При выходе из текстового окна обработчик события Exit запоминает его имя в глобальной переменной. Поэтому, если после выхода будет нажата одна из командных кнопок - Cut, Copy или Paste, ее обработчик по имени элемента управления сумеет понять, к какому полю ввода применить операцию. Этих объяснений, видимо, достаточно, чтобы разобраться в программном коде, решающем поставленную задачу:
Option Explicit Private GlobalName As String Private Sub CommandButton1_Click () Controls (GlobalName). Cut End Sub Private Sub CommandButton2_Click () Controls (GlobalName). Copy End Sub Private Sub CommandButton3_Click () Controls (GlobalName). Paste End Sub Private Sub TextBox1_Exit (ByVal Cancel As MSForms. ReturnBoolean) GlobalName = "TextBox1" Cancel = False End Sub Private Sub TextBox2_Exit (ByVal Cancel As MSForms. ReturnBoolean) GlobalName = "TextBox2" Cancel = False End Sub Private Sub TextBox3_Exit (ByVal Cancel As MSForms. ReturnBoolean) GlobalName = "TextBox3" Cancel = False End Sub Private Sub UserForm_Initialize () TextBox1. Text = "Это мой текст" TextBox2. Text = "Это ее текст" TextBox3. Text = "Это его текст" End Sub13.2.
В заключение приведем диалоговое окно, после того, как нажимались кнопки, текст копировался, удалялся, вставлялся.
Метод RedoAction (Повторить действие)
Применяется к диалоговому окну, рамке и странице для того, чтобы восстановить результат последнего действия, отмененного посредством Undo. Вызов метода имеет вид:
BooleanVar = объект. RedoAction
где объект - это объект, для которого требуется повторить последнее отмененное действие. При успешном вызове метод присвоит булевой переменной BooleanVar значение True, а при невозможности выполниться - False.
Возможность применения метода RedoAction зависит от значения свойства CanRedo объекта, вызывающего метод. Если CanRedo равно False, метод неприменим. Пример использования метода RedoAction приведен ниже в описании метода Undo.
Метод Remove (Удалить)
Позволяет удалить элемент коллекций Controls, Pages и Tabs или элемент управления из диалогового окна, страницы или формы. Удаляться могут лишь объекты, добавленные динамически в процессе работы программы. Попытка удалить объект, созданный на этапе проектирования диалогового окна, приведет к ошибке. Вызов метода имеет вид:
объект. Remove (collectionindex)
где объект - идентифицирует объект (коллекцию), к которому применяется метод, а обязательный параметр collectionindex задает номер или индекс удаляемого элемента коллекции (он может быть числом или строкой-именем элемента).
Метод RemoveItem (Удалить элемент)
С помощью этого метода можно удалять элементы из списков и комбинированных списков. В списках с несколькими столбцами метод RemoveItem удаляет всю строку элементов. Его вызов имеет вид:
BooleanVar = объект. RemoveItem (index)
где объект - идентифицирует объект (список) из которого удаляется элемент, а index - указывает номер удаляемой строки (первая строка в списке имеет номер 0 ). В переменной BooleanVar после выполнения удаления возвращается False. Поэтому чаще при вызове используется только правая часть присвоения. Например, для удаления из списка ListBox1 выбранного в данный момент элемента можно использовать вызов:
ListBox1. RemoveItem (ListBox1. ListIndex)
Метод RemoveItem не удаляет строки из списков, данные в которых связанны с объектом приложения (т. е. из списков с установленным свойством RowSource ).
Метод Repaint (Перерисовать)
Этот метод предназначен для восстановления модифицированных изображений диалоговых окон, рамок и страниц. Поскольку система сама перерисовывает изменные элементы управления, использовать метод Repaint следует лишь тогда, когда пользователь немедленно должен увидеть результаты модификации, не дожидаясь, пока это сделает система. Вызов метода имеет вид:
Boolean = объект. Repaint
где объект - идентифицирует восстанавливаемый объект.