Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как перейти к следующему доступному элементу окна?

472
17 декабря 2005 года
Vovka
139 / / 10.02.2005
На диалоговом окне есть несколько полей ввода, кнопок ...
Курсор стоит на первом поле. Второе поле недоступно.
Как по нажатию на клавишу Enter перейти на следующий доступный элемент окна?
2.4K
17 декабря 2005 года
dinasok51
219 / / 12.11.2005
Цитата:
Originally posted by Vovka
На диалоговом окне есть несколько полей ввода, кнопок ...
Курсор стоит на первом поле. Второе поле недоступно.
Как по нажатию на клавишу Enter перейти на следующий доступный элемент окна?




Есть встроенный механизм навигации по ТАБ, а Enter используется обычно для окончания ввода
Если ты переопределишь значение клавиши, то твоя программа станет уникальной в части управления,
т.к. нужно сказать пользователям что нажимать вместо Enter.


А по поводу как:

1. нужен новый обработчик клавиатуры, кот
перехватывает нажатия нужных тебе клавиш
OnKeyDown(); ОnKeyUp()

2. Переход от одного элемента к другому можно
организовать с пом. SetFocus()

472
17 декабря 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by dinasok51
Есть встроенный механизм навигации по ТАБ, а Enter используется обычно для окончания ввода
Если ты переопределишь значение клавиши, то твоя программа станет уникальной в части управления,
т.к. нужно сказать пользователям что нажимать вместо Enter.


А по поводу как:

1. нужен новый обработчик клавиатуры, кот
перехватывает нажатия нужных тебе клавиш
OnKeyDown(); ОnKeyUp()


Здесь проблем нет.

Цитата:

2. Переход от одного элемента к другому можно
организовать с пом. SetFocus()


А вот как в случае что следующий элемент может быть недоступным? Я имею ввиду может есть какая-нибудь функция чтобы перейти на следующий доступный элемент, а не самому вычислять какой из них доступен?

А как можно иммитировать клавишу ТАБ ?

2.4K
17 декабря 2005 года
dinasok51
219 / / 12.11.2005
Цитата:
Originally posted by Vovka
А вот как в случае что следующий элемент может быть недоступным? Я имею ввиду может есть какая-нибудь функция чтобы перейти на следующий доступный элемент, а не самому вычислять какой из них доступен?


SetWindowLong() управляет всеми прибамбасами: WS_VISIBLE, WS_DISABLED а так же WS_TABSTOP

Устанавливаешь или вбрасываешь WS_TABSTOP
и по TAB IMHO должно работать так как ты желаешь

Программно переходишь по GetNextDlgTabItem()

Цитата:
Originally posted by Vovka
А как можно иммитировать клавишу ТАБ ?


SendMessage( .... WM_KEYDOWN..... ) в соответствующее окно, значения для lparam и wparam найдешь

472
17 декабря 2005 года
Vovka
139 / / 10.02.2005
Спасибо!
472
18 декабря 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by dinasok51
SetWindowLong() управляет всеми прибамбасами: WS_VISIBLE, WS_DISABLED а так же WS_TABSTOP

Устанавливаешь или вбрасываешь WS_TABSTOP
и по TAB IMHO должно работать так как ты желаешь

Программно переходишь по GetNextDlgTabItem()

SendMessage( .... WM_KEYDOWN..... ) в соответствующее окно, значения для lparam и wparam найдешь


Получилось так:
::SendMessage(m_hWnd, WM_NEXTDLGCTL, 0, 0);

Но появилась следующая проблема:
Разместил в окне диалога CEdit и растянул его по вертикали на несколько строк.
Теперь мне нужно чтобы если текст в CEdit не вмещается в одной строке, то переносился бы на другую строку (без символов перевода строки). В диалоге есть обработка OnOK() где я и перехожу на следующий элемент.
Если устанавливаю свойство Multiline=true - текст переносится, но при этом по "Enter" OnOK() не вызывается, а если Multiline=false, то OnOK() вызывается!
Как можно в данном случае отловить нажатие клавиши "Enter"?

2.4K
18 декабря 2005 года
dinasok51
219 / / 12.11.2005
Эта ситуация вполне нормальная, тк невозможно отличить Enter перевода строки от окончания ввода.

Нужен дополнительный признак, напр. специальная комбинация клавиш, кот указывает что след. Enter это конец.

Но нажатие ОК IMHO лучше, тк привычней для всех.
Обычно редакторах так и делают:
Нажимают кнопки или выбирают пункты меню,
а не вынуждают вводить что-то, к тексту не относящееся
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог