KeyEvent. Как отслеживать клавиатурный ввод?

Автор dndn, 13 июля 2014, 08:26

0 Пользователи и 1 гость просматривают эту тему.

dndn

Надо при вводе в текстовое поле после нажатия "Enter" завершить ввод, добавить значение в список, очистить поле ввода и ожидать ввода следующего значения. Чтобы без дополнительного нажатия на кнопку "Добавить"
Подскажите, пожалста...  ???

vladboscaneanu

Возможно  Вас заинтересует другой способ ,а именно ,макро при потери фокуса данного элемента .только нужен ещё  один элемент(поле),дабы при нажатии энтер
курсор переместился  к нему .

rami

Так уж получилось, что этот вопрос мы обсудили в другой теме http://forumooo.ru/index.php/topic,4146.0.html
Цитата: vladboscaneanu от 15 июля 2014, 04:17Возможно  Вас заинтересует другой способ
Нас интересуют все способы 8-) . Будем рады узнать и ваш. В файле * CheckBox1.ods , в диалоговом окне введите слово в текстовое поле (в правом верхнем углу) и нажмите "Tab" , слово добавится в список.

Hasim

#3
Чтобы "при вводе в текстовое поле после нажатия "Enter" завершить ввод, добавить значение в список, очистить поле ввода и ожидать ввода следующего значения" нужно слегка изменить пример rami:
1. Изменить Main2 на:
Sub Main2(oEvent  as com.sun.star.awt.KeyEvent)
If oEvent.KeyCode=1280 Then  'или так: If oEvent.KeyCode=com.sun.star.awt.Key.RETURN Then
If oDialog1.getControl("TextField1").text="" Then Exit Sub
oDialog1.getControl("ListBox1").addItem(oDialog1.getControl("TextField1").text,0)
oDialog1.getControl("TextField1").text=""
oDialog1.getControl("TextField1").setFocus()
End If
End Sub

2. Этот новый Main2 повесить на событие "Отпускание клавиши" (вместо прежнего "При потере фокуса") текстового поля TextField1.
   (Лучше на "Отпускание клавиши", а не на "Нажатие клавиши", хотя можно и так.)

rami

Hasim, результат тот же, но ваше предложение лучше. В этом случае строчка кода oDialog1.getControl("TextField1").setFocus() не нужна, т.к. фокус не перемещается. И "Tab" свободен для других целей.

dndn

Hasim, как же ж все просто и элегантно! Спасибо!  :beer:

dndn

Цитата: rami от 15 июля 2014, 15:43Hasim, результат тот же, но ваше предложение лучше. В этом случае строчка кода 
Код:
oDialog1.getControl("TextField1").setFocus()
не нужна, т.к. фокус не перемещается. И "Tab" свободен для других целей.

А в моем случае еще лучше и тем, что теперь кнопку "Добавить" можно добавить в корзину :)
и место, отведенное под нее ранее, теперь свободно для других целей  ;)