Как в TextBox изменить всплывающее меню на другое?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vitaliy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 14.05.2003 (Ср) 13:35

Как в TextBox изменить всплывающее меню на другое?

Сообщение Vitaliy » 14.05.2003 (Ср) 13:44

При клике правой кнопкой мыши на текстбоксе в VB6 (да и других версиях) появляется стандартное меню (типа "Вырезать","Копировать",
"Вставить" и др.). Каким образом вместо этого меню выводить то, которое мне нужно; или хотя бы как вообще от него избавиться (в смысле, ОТ СТАНДАРТНОГО меню)?. ПОМОГИТЕ!!! :oops:

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 14.05.2003 (Ср) 17:42

Есть маленькая хитрость:


Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbRightButton Then
Text1.Enabled = False
PopupMenu mnuYourMenu
Text1.Enabled = True
End If

End Sub

Vitaliy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 14.05.2003 (Ср) 13:35

Сообщение Vitaliy » 15.05.2003 (Чт) 14:14

Спасибо Rainbow!!!
А еще хотелось бы в стандартное меню свой пункт вставить... :oops:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.05.2003 (Чт) 14:17

В этой хитрости есть один небольшой недостаток :)
Если Text1 был в фокусе, то после Text1.Enabled=False фокус потеряется
Lasciate ogni speranza, voi ch'entrate.

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 15.05.2003 (Чт) 14:37

А также исходное меню доступно по Shift+F10 на клавиатуре
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

John_mc
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 112
Зарегистрирован: 15.06.2002 (Сб) 6:18
Откуда: Russia, Новосибирск

Сообщение John_mc » 15.05.2003 (Чт) 15:16

:idea: А можно текстбокс заменить на RichTextBox - Проблем не будет. Я сделал так же!

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 15.05.2003 (Чт) 16:23

Сколько вы тут всего правильного написали!
Попробуем разобраться:

2 alibek - можно считать, что правый клик это аналог левого клика и насильно выставлять фокус в этот текстбокс. В конце концов, над ним будут операции производиться

2 Vi - можно поймать событие Text1_KeyDown и обработать Shift + F10 также, как правй клик

2 Vitali - честно признаться, не знаю, можно ли вставить свой пункт меню в стандартное... Но реализовать самому аналоги совсем не сложно :)

2 John_mc - Идея, однако! :wink: Думаю, так и надо сделать!

goro
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 03.12.2002 (Вт) 11:45
Откуда: Украина, Запорожье

Сообщение goro » 15.05.2003 (Чт) 17:59

А еще зайди на vbaccelerator.com и поищи там.
ПРЕВЕД

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 07.08.2003 (Чт) 19:47

Rainbow писал(а):честно признаться, не знаю, можно ли вставить свой пункт меню в стандартное... Но реализовать самому аналоги совсем не сложно :)


Можно! Прогуляйся до www.pscode.com и посмотри в поиске что-то вроде windows menu, там пара примеров валяется.
Только Rainbow как всегда права, зачем извращаться, если такое меню самому слепить ничего не стоит? Это даже лучше, чем перехватывать системное и подрисовывать пункт. На мно-о-ого строчек кода меньше.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 07.08.2003 (Чт) 22:25

В этой хитрости есть один небольшой недостаток
Если Text1 был в фокусе, то после Text1.Enabled=False фокус потеряется

Дык можно же запомнить номер символа, затем Text1.SetFocus, и поставить программно курсор на то же место. :idea:
Нет меня больше


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 3

    TopList