powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Отслеживание нажатой клавиши
13 сообщений из 13, страница 1 из 1
Отслеживание нажатой клавиши
    #38360363
enerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Столкнулся с задачей - заблокировать возможность вставки в конкретное поле на форме. Ввод должен осуществляться исключительно вручную. Первое, что мне захотелось сделать - поймать нажатие кнопок Ctrl (или комбинации Ctrl+V) и Shift (соответствующая комбинация: Shift+Insert). Подскажите как это можно сделать или предложите другой вариант решения проблемы. Заранее спасибо.
Используемая среда: Oracle Forms 6i.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360396
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггера на отлов нажатия любых клавиш у Forms нет. Можно сделать Java Bean или PJC.
Но само желание довольно странное - не user friendly.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360399
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант - чистить буфер обмена, но это тоже не тривиально - вроде команды clear_region нет, но есть копирования в буфер
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360402
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алымов АнатолийКак вариант - чистить буфер обмена, но это тоже не тривиально - вроде команды clear_region нет, но есть копирования в буфер
Из простого:
В триггере WHEN-NEW-ITEM-INSTANCE нужного элемента сделать:
Код: plsql
1.
2.
3.
CLEAR_ITEM;
SELECT_ALL;
COPY_REGION;


Это очистит буфер обмена, но и значение самого элемента.
Можно это реализовать на каком-нибудь другом элементе ввода и сделать go_item на нужный
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360415
OldBoyOdeSu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enerty,

если нет желания делать PJC, который игнорирует Ctrl+V, то как вариант можно:
не помню как в 6i, вроде там тоже есть fmrpcweb.res и fmrpcweb_utf8.res, прописать там комбинацию Ctrl+V и повесить триггер на айтем внутри которого null;
эта идея похожа на рабочую...
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360503
enerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алымов Анатолий, я тоже об этом сначала подумал, но там можно в 2 окна работать. При входе буфер почистится, а вот при смене окна уже нет. Так что не вариант. Все равно спасибо.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360507
enerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OldBoyOdeSu,
Можно по-подробнее? Я недавно начал осваивать Oracle Forms.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360520
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enertyАлымов Анатолий, я тоже об этом сначала подумал, но там можно в 2 окна работать. При входе буфер почистится, а вот при смене окна уже нет. Так что не вариант. Все равно спасибо.
Можно и по таймеру очищать.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360526
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алымов АнатолийenertyАлымов Анатолий, я тоже об этом сначала подумал, но там можно в 2 окна работать. При входе буфер почистится, а вот при смене окна уже нет. Так что не вариант. Все равно спасибо.
Можно и по таймеру очищать.
Или по WHEN-WINDOW-ACTIVATED
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360682
OldBoyOdeSu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WHEN-NEW-ITEM-INSTANCE не панацея;
1)Item получил фокус, сработал WHEN-NEW-ITEM-INSTANCE;
2)Юзер открыл блокнот, скопировал оттуда текст;
3)Юзер свернул блокнот;
4)Юзер нажал Ctrl-V и текст успешно вставится, триггер WHEN-NEW-ITEM-INSTANCE не срабатывает;

самое грамотное написать PJC, расширяющий базовый тип oracle.forms.ui.VTextField, там работы то на пару минут. Если нет желания (или возможности) связываться с Java, то как вариант прописать эту комбинацию для формсов, чтоб при нажатии на неё форм вызывал триггер который ничего не делает, глянь http://gskaushik.blogspot.ru/2009/05/oracle-terminal-reference-forms-6i.html
так же попробуй вбить в гугл oracle forms 6i key mapping, у меня 11 формс, с 6 не работал
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360823
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PJC работает только в клиент-серверной архитектуре. Не знаю как у автора используются формы, под application-сервером или локально.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360829
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OldBoyOdeSuWHEN-NEW-ITEM-INSTANCE не панацея;

4)Юзер нажал Ctrl-V и текст успешно вставится, триггер WHEN-NEW-ITEM-INSTANCE не срабатывает;

На этот случай я и написал, про WHEN-WINDOW-ACTIVATED.
А менять назначения клавиш для всех форм слишком уж ради одного поля - в других формах наоборот может активно использоваться вставка из буфера.
Необходимо также учесть, что сочетаний несколько.
...
Рейтинг: 0 / 0
Отслеживание нажатой клавиши
    #38360993
enerty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. WHEN-WINDOW-ACTIVATED с чисткой буфера помогло. А версия у меня локальная, так что JAVA тут не поможет. Проблема решена.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Отслеживание нажатой клавиши
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]