SASH |
Отправлено: 22.12.2004, 14:10 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 58
|
В программе есть некоторое количество TEdit'ov и ComboBox'ov.
Как можно сделать переход между ними не Tab'om, а клавишами вверх, вниз, вправо, влево? |
|
AVC |
Отправлено: 22.12.2004, 14:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Перехватывать нажатия и засылать tab на right/down и shift tab на left/up или рассчитывать след/пред компонент и самому переность фокус.
Но это все впустую. User'ы эти не пользуются и, неразумные, продолжают жать tab или тянуться за мышом. |
|
olegenty |
Отправлено: 23.12.2004, 08:59 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
замечу, что AVC погорячился. если протсо подсовывать TAB вместо стрелок, то никогда не переместишься внутри по вводимой строке. от этого пользователь станет грустный-грустный. но вариант всё же есть — надо отслеживать в какой позиции находится курсор в поле ввода и если достигнуты границы текста, вот тогда переходить на близлежащие контролы. и всё же я не стал бы TAB подсовывать, а воспользовался бы
CODE |
if (TWinControl *c = FindNextControl(ActiveControl, true, true, false))
{
c->SetFocus();
}
|
|
|
AVC |
Отправлено: 23.12.2004, 09:10 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Да, с табами наверно погорячился. Все ни как не доходили руки проверить, так и осталось на уровне идеи.
Рассчитываю по дереву компонентов куда перенести фокус. С FindNextControl были какие то заморочки, так что пришлось сделать самому.
Но второе утверждение остается в силие. Мои пользователи этим не пользуются. Вот такой грустный каламбур.
Отредактировано AVC — 23/12/2004, 09:28 |
|
olegenty |
Отправлено: 23.12.2004, 09:22 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
у меня было наоборот: заказчик ОТКАЗЫВАЛСЯ принимать программу, где переход между контролами осуществлялся не по Enter. пришлось удовлетворить (отказавшись от Default на кнопках с MoralResult = mrOk).
|
|