Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/58: Рейтинг темы: голосов - 58, средняя оценка - 4.84
В работе
24 / 19 / 6
Регистрация: 13.07.2018
Сообщений: 829
Записей в блоге: 12

Контекстное меню для TextBox на форме

22.03.2019, 17:46. Показов 12909. Ответов 71

Студворк — интернет-сервис помощи студентам
Форумчане добрый вечер!
Подскажите сложно сделать контекстное на поле TextBox типа:

Отменить
_________
Вырезать
Копировать
Вставить
Удалить
__________
Выделить все

Причем если функция недоступна, поле меню Enable = False.

Добавлено через 9 минут
Через макросы не нашел все те команды, которые нужны.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2019, 17:46
Ответы с готовыми решениями:

По следам темы "Контекстное меню для TextBox на форме"
Выделено из https://www.cyberforum.ru/ms-access/thread2423596.html Eugene-LS, Eugene-LS, Здравствуйте подключил ваш код V5 к базе...

Одно контекстное меню для 5 textbox'ов
У меня 5 текстбоксов. Нужно для каждого текстбокса создать контекстное меню с одной кнопкой "свернуть строки". Как это проще...

Свое контекстное меню для TextBox
Много написано в сети о контекстном меню для текстбокса для VB-6 а вот для VB.net ничего не нашел. Нашел, как убрать родимое...

71
Модератор
Эксперт MS Access
 Аватар для shanemac51
12235 / 5082 / 814
Регистрация: 07.08.2010
Сообщений: 14,950
Записей в блоге: 4
25.03.2019, 06:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от VinniPuh Посмотреть сообщение
Интересно, как скоро запортятся и поперепутаются ранее введенные данные в БД, ибо по любому ТС в спешке может вместо - Скопировать, нажать - Вставить, т.к. у него, после вчерашнего корпоратива рука дрогнула, а он и не заметил, что не в туда мышом ткнул, и пошел другие данные редактировать?
зато мое предложение в п.15 и п.22 явно не заинтересовало ТС, хотя это бы более способствовало сохранности данных
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 07:04
Цитата Сообщение от VinniPuh Посмотреть сообщение
нтересно, как скоро запортятся и поперепутаются ранее введенные данные в БД, ибо по любому ТС в спешке может вместо - Скопировать, нажать - Вставить,
В примере используются стандартные пункты меню TextBox + пара добавочных ...
Идея: Вместо стандартного - пишем своё.
... что и было реализовано.
0
 Аватар для VinniPuh
9147 / 6176 / 594
Регистрация: 27.03.2013
Сообщений: 20,046
25.03.2019, 07:12
Цитата Сообщение от shanemac51 Посмотреть сообщение
...надо только не разрешать корректировку/удаление старых записей...
Ааа, ну да, и я про тоже.
Хотя и сам смысл такого контекстного меню, теряет смысл, ибо не будет же ТС в одной новой записи, введя в одно поле данные - Копировать, а затем - Вставлять одно и тоже еще в десяток полей, зачем то размножая одинаковые данные.
Такая рационализация, по облегчению работы, и ударный Стахоновский труд, только в кошмарном сне могут присниться, что и произошло сегодня во сне.

Добавлено через 7 минут
Цитата Сообщение от Eugene-LS Посмотреть сообщение
...используются стандартные меню TextBox +...
Я так, (типа про контекстное меню при вводе данных) УЖЕ не делаю, ибо был печальный опыт, на рабочей БД с большим количеством даннных , а корпоративы очень уж частыми.
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 07:18
Цитата Сообщение от VinniPuh Посмотреть сообщение
Ааа, ну да, и я про тоже.
А если MultiLine? (редактор длинного текста) = Актуально!
Например у меня:
Миниатюры
Контекстное меню для TextBox на форме  
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 07:24
Лучший ответ Сообщение было отмечено vb001 как решение

Решение

VinniPuh, BTW - результат скрина = http://msa.polarcom.ru/st/s0000131.htm
0
В работе
24 / 19 / 6
Регистрация: 13.07.2018
Сообщений: 829
Записей в блоге: 12
25.03.2019, 07:26  [ТС]
Eugene-LS, То что надо. Спасибо!!! Как всегда четко!!!
0
В работе
24 / 19 / 6
Регистрация: 13.07.2018
Сообщений: 829
Записей в блоге: 12
25.03.2019, 07:31  [ТС]
Только вот хрень какая-то не понятная.
При первом запуске все равно выводит ошибку как на скрине.
Нажимаешь ОЧИСТИТЬ БУФЕР и после ошибка не беспокоит
Миниатюры
Контекстное меню для TextBox на форме  
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 08:28
Цитата Сообщение от vb001 Посмотреть сообщение
При первом запуске все равно выводит ошибку как на скрине.
Ну тут MSA не внятен, к сожалению.
Попробуйте методом исключения поработать.
Для начала удалите функцию IsTextInClipboard() (и все вызовы на неё)
возможно дело в ней...
Если так, переходим на API по работе с Clipboard приложения (+1 не короткий модуль)

Добавлено через 47 минут
Цитата Сообщение от vb001 Посмотреть сообщение
Только вот хрень какая-то не понятная.
Вопрос:
В моём примере - или в вашем приложении?
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
25.03.2019, 08:40
Все эти копировать\вставить прекрасно работают в Word. Зачем велосипед изобретать?
А контекстное меню своё удобно для запуска своих же функций.
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 08:57
Цитата Сообщение от alvk Посмотреть сообщение
Зачем велосипед изобретать?
Вы правы! - незачем!
Так... балуемся ...
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 09:51
vb001, Вот вариант с API ...
Попробуйте пожалуйста
Вложения
Тип файла: zip TextBoxMenu_v05.zip (45.5 Кб, 26 просмотров)
1
604 / 127 / 45
Регистрация: 12.04.2015
Сообщений: 519
25.03.2019, 19:30
эт здорово, но у меня все равно ошибка не ушла в новом варианте исполнения. не понятно почему.... офис тот же - только RUS )
впрочем ладно - главное пример, разбираться есть с чем и это дико интересно для человека увлеченного MS ACCESS
спасибо Вам

Добавлено через 2 минуты
О! на последнем варианте без ошибки! чудо ))))
0
604 / 127 / 45
Регистрация: 12.04.2015
Сообщений: 519
25.03.2019, 22:16
Eugene-LS, спасибо. Разобрал ваш ранний вариант - построил по своему типу, но с учетом проверки на полноту буфера обмена, обработки события текущей записи и т.п. все вышло в т.ч. принцип понятен. а последняя ваша работа оч "накручена". )
0
604 / 127 / 45
Регистрация: 12.04.2015
Сообщений: 519
25.03.2019, 22:22
Цитата Сообщение от alvk Посмотреть сообщение
контекстное меню своё удобно для запуска своих же функций
все верно. тут мы разобрали лишь в "учебных" целях на примере. Лично я получил отличный опыт,
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 22:35
Цитата Сообщение от glsn Посмотреть сообщение
последняя ваша работа оч "накручена".
По моему там проще изначального варианта ...
Ну API-шку по поводу буфера обмена пришлось воткнуть ибо "лёгкий вариант" глючил у вас.

Что показалось вам сложным (непонятным)?
0
604 / 127 / 45
Регистрация: 12.04.2015
Сообщений: 519
25.03.2019, 22:41
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Что показалось вам сложным (непонятным)?
ой, да таи нужно смотреть - один только текст пугает (его объем)
я просто вообще не работал с API
это я так понимаю - подключаем библиотеку
задаем If на случай работы с разными версиями VBA
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Compare Database
Option Explicit
 
 
#If VBA7 Then
    Private Declare PtrSafe Function OpenClipboard Lib "user32.dll" (ByVal hWnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function EmptyClipboard Lib "user32.dll" () As LongPtr
    Private Declare PtrSafe Function CloseClipboard Lib "user32.dll" () As LongPtr
    Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As LongPtr) As LongPtr
    Private Declare PtrSafe Function GetClipboardData Lib "user32.dll" (ByVal wFormat As LongPtr) As LongPtr
    Private Declare PtrSafe Function SetClipboardData Lib "user32.dll" (ByVal wFormat As LongPtr, ByVal hMem As LongPtr) As LongPtr
    Private Declare PtrSafe Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As LongPtr, ByVal dwBytes As LongPtr) As LongPtr
    Private Declare PtrSafe Function GlobalLock Lib "kernel32.dll" (ByVal hMem As LongPtr) As LongPtr
    Private Declare PtrSafe Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As LongPtr) As LongPtr
    Private Declare PtrSafe Function GlobalSize Lib "kernel32" (ByVal hMem As LongPtr) As LongPtr
    Private Declare PtrSafe Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As LongPtr, ByVal lpString2 As LongPtr) As LongPtr
 #Else
    Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
    Private Declare Function EmptyClipboard Lib "user32.dll" () As Long
    Private Declare Function CloseClipboard Lib "user32.dll" () As Long
    Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
    Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
    Private Declare Function SetClipboardData Lib "user32.dll" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function GlobalAlloc Lib "kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalLock Lib "kernel32.dll" (ByVal hMem As Long) As Long
    Private Declare Function GlobalUnlock Lib "kernel32.dll" (ByVal hMem As Long) As Long
    Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
    Private Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyW" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
#End If
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
25.03.2019, 22:52
Цитата Сообщение от glsn Посмотреть сообщение
это я так понимаю - подключаем библиотеку
задаем If на случай работы с разными версиями VBA
Да, так и есть. Смотреть вам туда не нужно - пользуйтесь да и всё.
А как иначе?! - если "по простенькому" не пошло.
2
В работе
24 / 19 / 6
Регистрация: 13.07.2018
Сообщений: 829
Записей в блоге: 12
26.03.2019, 13:25  [ТС]
Eugene-LS, спасибо. Последняя версия работает четко. Буду внедрять в проект.
0
В работе
24 / 19 / 6
Регистрация: 13.07.2018
Сообщений: 829
Записей в блоге: 12
26.03.2019, 19:36  [ТС]
Eugene-LS, подскажите как убрать программно стандартное меню Access. Не задача в том, что вами созданное меню идеально работает на определенных TextBox. Но так как мы в свойствах разрешаем контекстное меню в форме, пользователь щелкает по любому полю формы и у него выскакивает стандартное меню Access. Как его убрать, но на TextBox чтобы работало
0
Эксперт MS Access
 Аватар для Eugene-LS
13227 / 5912 / 1519
Регистрация: 05.10.2016
Сообщений: 16,559
26.03.2019, 19:46
Цитата Сообщение от vb001 Посмотреть сообщение
подскажите как убрать программно стандартное меню Access.
И сразу ко мне ...
Спасибо конечно за доверие.
Но я тут не один ... и могу быть занят или отсутствовать ...

как минимум формы:
Form.ShortcutMenu Property
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2019, 19:46
Помогаю со студенческими работами здесь

Создать контекстное меню для нескольких TextBox
Все наверное знают, что при нажатии текста например в ворде и т.д правой клавишей мыши появляется панель, где кнопки - копировать,...

Контекстное меню в виде объектов на форме
Привет ! Нужно создать на форме подобие контекстного меню с разделительными линиями. Чтобы каждый пункт меню был отдельным объектом,...

Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню
Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню???

TextBox: вырубить контекстное меню + правильная обработка вставки из буфера
Добрый день! Есть 2 вопроса, первичный поиск результатов не дал. У меня есть свой класс типа TextBoxMyClass : TextBox. 1...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru