Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/24: Рейтинг темы: голосов - 24, средняя оценка - 4.54
vb001
4 / 3 / 1
Регистрация: 13.07.2018
Сообщений: 395
1

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

22.03.2019, 17:46. Просмотров 4730. Ответов 71

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

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

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

Добавлено через 9 минут
Через макросы не нашел все те команды, которые нужны.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2019, 17:46
Ответы с готовыми решениями:

Контекстное меню для работы в Runtime
Доброго времени суток). Прошу помощи в написании контекстного меню для работы в Runtime access с...

Контекстное меню через VBA для отчёта
Нужно быстро убрать стандартное контекстное меню в отчётах и вместо него добавить меню с...

Контекстное меню
не могу найти пример как работать с контекстным меню Только это...

Контекстное меню
Уважаемые, проблемы такова... Как к контестному меню прицепить свое действие, т.е. как его создать...

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

71
shanemac51
Модератор
Эксперт MS Access
8718 / 3398 / 533
Регистрация: 07.08.2010
Сообщений: 9,520
Записей в блоге: 2
25.03.2019, 06:47 41
Цитата Сообщение от VinniPuh Посмотреть сообщение
Интересно, как скоро запортятся и поперепутаются ранее введенные данные в БД, ибо по любому ТС в спешке может вместо - Скопировать, нажать - Вставить, т.к. у него, после вчерашнего корпоратива рука дрогнула, а он и не заметил, что не в туда мышом ткнул, и пошел другие данные редактировать?
зато мое предложение в п.15 и п.22 явно не заинтересовало ТС, хотя это бы более способствовало сохранности данных
0
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 07:04 42
Цитата Сообщение от VinniPuh Посмотреть сообщение
нтересно, как скоро запортятся и поперепутаются ранее введенные данные в БД, ибо по любому ТС в спешке может вместо - Скопировать, нажать - Вставить,
В примере используются стандартные пункты меню TextBox + пара добавочных ...
Идея: Вместо стандартного - пишем своё.
... что и было реализовано.
0
VinniPuh
6593 / 3913 / 430
Регистрация: 27.03.2013
Сообщений: 14,483
25.03.2019, 07:12 43
Цитата Сообщение от shanemac51 Посмотреть сообщение
...надо только не разрешать корректировку/удаление старых записей...
Ааа, ну да, и я про тоже.
Хотя и сам смысл такого контекстного меню, теряет смысл, ибо не будет же ТС в одной новой записи, введя в одно поле данные - Копировать, а затем - Вставлять одно и тоже еще в десяток полей, зачем то размножая одинаковые данные.
Такая рационализация, по облегчению работы, и ударный Стахоновский труд, только в кошмарном сне могут присниться, что и произошло сегодня во сне.

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

Решение

VinniPuh, BTW - результат скрина = http://msa.polarcom.ru/st/s0000131.htm
0
vb001
4 / 3 / 1
Регистрация: 13.07.2018
Сообщений: 395
25.03.2019, 07:26  [ТС] 46
Eugene-LS, То что надо. Спасибо!!! Как всегда четко!!!
0
vb001
4 / 3 / 1
Регистрация: 13.07.2018
Сообщений: 395
25.03.2019, 07:31  [ТС] 47
Только вот хрень какая-то не понятная.
При первом запуске все равно выводит ошибку как на скрине.
Нажимаешь ОЧИСТИТЬ БУФЕР и после ошибка не беспокоит
0
Миниатюры
Контекстное меню для TextBox на форме  
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 08:28 48
Цитата Сообщение от vb001 Посмотреть сообщение
При первом запуске все равно выводит ошибку как на скрине.
Ну тут MSA не внятен, к сожалению.
Попробуйте методом исключения поработать.
Для начала удалите функцию IsTextInClipboard() (и все вызовы на неё)
возможно дело в ней...
Если так, переходим на API по работе с Clipboard приложения (+1 не короткий модуль)

Добавлено через 47 минут
Цитата Сообщение от vb001 Посмотреть сообщение
Только вот хрень какая-то не понятная.
Вопрос:
В моём примере - или в вашем приложении?
1
alvk
Эксперт MS Access
5895 / 3774 / 209
Регистрация: 12.08.2011
Сообщений: 10,001
25.03.2019, 08:40 49
Все эти копировать\вставить прекрасно работают в Word. Зачем велосипед изобретать?
А контекстное меню своё удобно для запуска своих же функций.
0
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 08:57 50
Цитата Сообщение от alvk Посмотреть сообщение
Зачем велосипед изобретать?
Вы правы! - незачем!
Так... балуемся ...
0
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 09:51 51
vb001, Вот вариант с API ...
Попробуйте пожалуйста
1
Вложения
Тип файла: zip TextBoxMenu_v05.zip (45.5 Кб, 6 просмотров)
glsn
186 / 73 / 21
Регистрация: 12.04.2015
Сообщений: 293
25.03.2019, 19:30 52
эт здорово, но у меня все равно ошибка не ушла в новом варианте исполнения. не понятно почему.... офис тот же - только RUS )
впрочем ладно - главное пример, разбираться есть с чем и это дико интересно для человека увлеченного MS ACCESS
спасибо Вам

Добавлено через 2 минуты
О! на последнем варианте без ошибки! чудо ))))
0
glsn
186 / 73 / 21
Регистрация: 12.04.2015
Сообщений: 293
25.03.2019, 22:16 53
Eugene-LS, спасибо. Разобрал ваш ранний вариант - построил по своему типу, но с учетом проверки на полноту буфера обмена, обработки события текущей записи и т.п. все вышло в т.ч. принцип понятен. а последняя ваша работа оч "накручена". )
Контекстное меню для TextBox на форме
0
glsn
186 / 73 / 21
Регистрация: 12.04.2015
Сообщений: 293
25.03.2019, 22:22 54
Цитата Сообщение от alvk Посмотреть сообщение
контекстное меню своё удобно для запуска своих же функций
все верно. тут мы разобрали лишь в "учебных" целях на примере. Лично я получил отличный опыт,
0
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 22:35 55
Цитата Сообщение от glsn Посмотреть сообщение
последняя ваша работа оч "накручена".
По моему там проще изначального варианта ...
Ну API-шку по поводу буфера обмена пришлось воткнуть ибо "лёгкий вариант" глючил у вас.

Что показалось вам сложным (непонятным)?
0
glsn
186 / 73 / 21
Регистрация: 12.04.2015
Сообщений: 293
25.03.2019, 22:41 56
Цитата Сообщение от 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
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
25.03.2019, 22:52 57
Цитата Сообщение от glsn Посмотреть сообщение
это я так понимаю - подключаем библиотеку
задаем If на случай работы с разными версиями VBA
Да, так и есть. Смотреть вам туда не нужно - пользуйтесь да и всё.
А как иначе?! - если "по простенькому" не пошло.
2
vb001
4 / 3 / 1
Регистрация: 13.07.2018
Сообщений: 395
26.03.2019, 13:25  [ТС] 58
Eugene-LS, спасибо. Последняя версия работает четко. Буду внедрять в проект.
0
vb001
4 / 3 / 1
Регистрация: 13.07.2018
Сообщений: 395
26.03.2019, 19:36  [ТС] 59
Eugene-LS, подскажите как убрать программно стандартное меню Access. Не задача в том, что вами созданное меню идеально работает на определенных TextBox. Но так как мы в свойствах разрешаем контекстное меню в форме, пользователь щелкает по любому полю формы и у него выскакивает стандартное меню Access. Как его убрать, но на TextBox чтобы работало
0
Eugene-LS
4145 / 2449 / 477
Регистрация: 05.10.2016
Сообщений: 6,794
26.03.2019, 19:46 60
Цитата Сообщение от vb001 Посмотреть сообщение
подскажите как убрать программно стандартное меню Access.
И сразу ко мне ...
Спасибо конечно за доверие.
Но я тут не один ... и могу быть занят или отсутствовать ...

как минимум формы:
Form.ShortcutMenu Property
0
26.03.2019, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2019, 19:46

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru