Всем доброго времени суток! Файл не прилагаю потому что вопрос носит общий характер. Подскажите как сделать чтобы после выделения текста внутри пользовательской формы (текст внутри TextBox) при нажатии на правую кнопку мыши выходило полнофункциональное меню типа Copy-Paste-Cut (что-то типа буфера обмена).
Всем доброго времени суток! Файл не прилагаю потому что вопрос носит общий характер. Подскажите как сделать чтобы после выделения текста внутри пользовательской формы (текст внутри TextBox) при нажатии на правую кнопку мыши выходило полнофункциональное меню типа Copy-Paste-Cut (что-то типа буфера обмена).flash708
Вы имеете ввиду Ctrl+C и т.д.? Лично меня устроит и такой вариант, но я пытаюсь создать такой файл, чтобы было удобней работать с ним не только мне
Вы имеете ввиду Ctrl+C и т.д.? Лично меня устроит и такой вариант, но я пытаюсь создать такой файл, чтобы было удобней работать с ним не только мнеflash708
Попадался примерчик создания меню. Посмотрите может что пригодится:
[vba]
Код
Option Explicit
Dim p As CommandBar
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then СозданиеМеню_ЗаполнениеЭтогоМенюЭлементами_и_ЕгоОтображение End Sub
'Создаём модуль, и вставляем в него такой код:
Sub СозданиеМеню_ЗаполнениеЭтогоМенюЭлементами_и_ЕгоОтображение() Dim ctrl, NewMenu, DemoMode On Error Resume Next: Application.CommandBars.Add "Моё контекстное меню", msoBarPopup
: Set p = Application.CommandBars("Моё контекстное меню") 'p.Reset - почему-то не работает ' очистка меню от прежних пунктов (если каждый раз добавляем разные пункты) For Each ctrl In p.Controls: ctrl.Delete: Next ' а вот так пункты меню удаляются
Function AddItemIntoPopup(ByRef Comm_Bar, _ ByVal B_Type As Integer, _ ByVal B_Face As Integer, _ ByVal On_Action As String, _ ByVal B_Caption As String, _ Optional ByVal Begin_Group As Boolean = False, _ Optional Tag As String = "") As CommandBarControl ' добавляет контролы в меню Comm_Bar ' type=1 - это кнопка, type=4 - это комбобокс, 10 - popup Dim Add_Control On Error Resume Next Set Add_Control = Comm_Bar.Controls.Add(Type:=B_Type) With Add_Control If B_Face > 0 Then .FaceId = B_Face: .Tag = Tag: .OnAction = On_Action: .Caption = B_Caption: If Begin_Group Then .BeginGroup = True 'If надо_сделать_пункт_недоступным Then .Enabled = False End With End Function
[/vba]
Попадался примерчик создания меню. Посмотрите может что пригодится:
[vba]
Код
Option Explicit
Dim p As CommandBar
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then СозданиеМеню_ЗаполнениеЭтогоМенюЭлементами_и_ЕгоОтображение End Sub
'Создаём модуль, и вставляем в него такой код:
Sub СозданиеМеню_ЗаполнениеЭтогоМенюЭлементами_и_ЕгоОтображение() Dim ctrl, NewMenu, DemoMode On Error Resume Next: Application.CommandBars.Add "Моё контекстное меню", msoBarPopup
: Set p = Application.CommandBars("Моё контекстное меню") 'p.Reset - почему-то не работает ' очистка меню от прежних пунктов (если каждый раз добавляем разные пункты) For Each ctrl In p.Controls: ctrl.Delete: Next ' а вот так пункты меню удаляются
Function AddItemIntoPopup(ByRef Comm_Bar, _ ByVal B_Type As Integer, _ ByVal B_Face As Integer, _ ByVal On_Action As String, _ ByVal B_Caption As String, _ Optional ByVal Begin_Group As Boolean = False, _ Optional Tag As String = "") As CommandBarControl ' добавляет контролы в меню Comm_Bar ' type=1 - это кнопка, type=4 - это комбобокс, 10 - popup Dim Add_Control On Error Resume Next Set Add_Control = Comm_Bar.Controls.Add(Type:=B_Type) With Add_Control If B_Face > 0 Then .FaceId = B_Face: .Tag = Tag: .OnAction = On_Action: .Caption = B_Caption: If Begin_Group Then .BeginGroup = True 'If надо_сделать_пункт_недоступным Then .Enabled = False End With End Function