16.07.2009, 09:40 | #1 |
Программатор
|
Поставить курсор на контрол на форме
Добрый день, много уважаемые коллеги.
Ситуация: есть форма, на форме таб, на табе грид, под гридом группа полей. Все это один датасорс. У пользователей есть такой бзик. Хотят чтобы при клике на грид курсор автоматом вставал на одно из полей группы под гридом. Подскажите как это сделать. Единственное, что пришлов голову - этона активе сделать control.setfocus();. Но курсор встает на этот контрол только при открытии формы или при переходе между записями кнопками PageUp/PageDown. Что то я туплю. Как сделать, чтобы курсор ВСЕГДА вставал на этот контрол первым - при активации таба, при открытии формы, при клике мышкой на грид. Помогите... Заранее спасибо!! |
|
16.07.2009, 09:45 | #2 |
Программатор
|
Нашол в WinApi::setCursorPos(). но что туда передавать и то ли это что мен нужно?
|
|
16.07.2009, 10:06 | #3 |
Участник
|
setCursorPos - это, насколько я помню, чтобы ставить текстовый курсор на нужную позицию в текстовом контроле. А в данном случае нужен WinApi::setFocus(), по идее это то же самое, что и control.setFocus(). Осталось вставить в нужные обработчики событий - можно попробовать перекрыть gotFocus() на табе, на гриде, на форме и т.д.
|
|
16.07.2009, 10:14 | #4 |
MCTS
|
1) При открытии формы:
X++: public void run() { super(); control.setFocus(); } X++: public boolean selectControl(FormControl _control) // метод формы { boolean ret; if (_control && _control.id() == grid.id()) control.setFocus(); else ret = super(_control); return ret; } X++: public void pageActivated() // метод этого таба { super(); control.setFocus(); } |
|
16.07.2009, 10:52 | #5 |
Участник
|
этот код не даст срабатывать active у datasource, то бишь переходить со строки на строку. Надо его как-то искусственно заставить сработать...
|
|
16.07.2009, 12:07 | #6 |
Программатор
|
Простите, что ничегоне отвечал - поменял почту и антиспам не пропускал письма с аксфорума
Да, приведенный код Eldar9x не подойдет. Глючит так, как написал vanokh. Ладно, будем отбиваться отпользователей не популярными методами |
|
16.07.2009, 13:23 | #7 |
Участник
|
вы же сами всё написали)
"при активации таба, при открытии формы, при клике мышкой на грид" в соответствующих методах этих контролов напишите НужныйКонтрол.setFocus(); или я чегото не понимаю?) зы эльдар все правильно вам написал...
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
16.07.2009, 13:53 | #8 |
Программатор
|
Нужно чтобы при клике мышкой на грид активировалось это поле и вылазил лукап на нем. Какой метод на гриде лучше перекрыть? После заполнения поля на грид нада потом вернуться.
Последний раз редактировалось Sada; 16.07.2009 в 14:34. |
|
16.07.2009, 15:28 | #9 |
MCTS
|
Прямо ФортБаяр какой-то
|
|
16.07.2009, 15:41 | #10 |
Программатор
|
В условиях жосткого кризиса пользователи все меньше хотят делать что либо руками. Принято волевое мужское решение послать всех в леса на заработки. Тема закрыта. Друзья, Всем спасибо!
|
|
Теги |
контрол, курсор |
|
|