01.06.2006, 10:28 | #1 |
Программатор
|
Странное поведение контрола
Доброго времени суток, уважаемые Дамы и Господа!!!
Ситуация: на форме перекрыл метод task(). Там отлавливаю нажатие ентера на определенном контроле и увеличиваю свою переменную Qty на величину этого контрола(контрол типа real). Есть второй контрол, у него есть дисплейный метод (тоже real), который возвращает Qty. Проблема: дисплейный метод выводит округленное значение по правилу округления, а мне этого совсем не нада. Почему так??? Подскажите пожалуйста, что делать. И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. С уважением - Sada... |
|
01.06.2006, 10:45 | #2 |
Участник
|
Цитата:
Сообщение от Sada
И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает.
С уважением - Sada... |
|
01.06.2006, 10:48 | #3 |
Программатор
|
Цитата:
Сообщение от KMV
Если перекрытом методе enter() не вызывать super() курсор останеться в контроле.
|
|
01.06.2006, 10:54 | #4 |
Участник
|
Дисплейный метод делает округление, т.к. у него есть тип. Округление происходит в соответствии с настройками этого типа.
|
|
01.06.2006, 11:01 | #5 |
Участник
|
SetFocus() прекрасно работает. Вот пример.
Код: public int task(int _taskId) { int ret; ; ret = super(_taskId); if (_taskId == 288) // Enter { if (!RealEdit.realValue()) l = 1; else l = 1 / RealEdit.realValue(); RealEdit.setFocus(); // Возвращаемся на прежний контрол } return ret; } |
|
|
За это сообщение автора поблагодарили: Sada (1), VKUR (1). |
01.06.2006, 11:04 | #6 |
Участник
|
Цитата:
Сообщение от Sada
Не помогло....
|
|
01.06.2006, 11:05 | #7 |
Программатор
|
Цитата:
Сообщение от Neosy
SetFocus() прекрасно работает. Вот пример.
Код: public int task(int _taskId) { int ret; ; ret = super(_taskId); if (_taskId == 288) // Enter { if (!RealEdit.realValue()) l = 1; else l = 1 / RealEdit.realValue(); RealEdit.setFocus(); // Возвращаемся на прежний контрол } return ret; } С этим разобрались... но вот как быть с округлением???... |
|
01.06.2006, 11:09 | #8 |
----------------
|
С округлением - надо завести EDT с большим кол-вом знаков после запятой и именно его возвращатьв методе. Только есть одна мелочь - они всегда будут все показываться, даже если все =0
а в task можно просто taskId заменить на 0 (до super) |
|
01.06.2006, 11:10 | #9 |
Axapta
|
Посмотрите на возвращаемый EDT дисплей-метода. Он имеет нужную вам точность? Округление так же может быть где-нибудь в коде.
Последний раз редактировалось oip; 01.06.2006 в 11:13. |
|
01.06.2006, 11:21 | #10 |
Программатор
|
Да, действительно... Про то что EDT в таких случаях требуется я и не знал .Всем огромное спасибо!!! Все работает как надо
С уважением - Sada... |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|