Основы офисного программирования и язык VBA


Реализация операций Cut, Copy, Paste в диалоговых окнах


При работе с текстами трудно обойтись без этих, ставших привычными операций. Покажем на примере, как можно реализовать их в диалоговых окнах. Рассмотрим диалоговое окно, содержащее три поля ввода TextBox1, TextBox2, TextBox3 и три командные кнопки CommandButton1, CommandButton2 и CommandButton3 со стандартными изображениями Cut, Copy, Paste: Вот как выглядит это диалоговое окно в момент открытия:

Окно "Удалить, Копировать, Вставить" в момент открытия

Рис. 13. 12.  Окно "Удалить, Копировать, Вставить" в момент открытия

Наша цель состоит в том, чтобы кнопки работали "стандартным" образом, позволяя, копировать выделенные тексты в буфер из любого текстового окна, удалять выделенные тексты, помещая их в буфер, и, наконец, приклеивать содержимое буфера в точку вставки текстового окна. Методами 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 Sub

Пример 13.2.

В заключение приведем диалоговое окно, после того, как нажимались кнопки, текст копировался, удалялся, вставлялся.


Рис. 13.13. 




Начало  Назад  Вперед



Книжный магазин