|
|
#1 |
|
Программатор
|
Странное поведение контрола
Доброго времени суток, уважаемые Дамы и Господа!!!
Ситуация: на форме перекрыл метод task(). Там отлавливаю нажатие ентера на определенном контроле и увеличиваю свою переменную Qty на величину этого контрола(контрол типа real). Есть второй контрол, у него есть дисплейный метод (тоже real), который возвращает Qty. Проблема: дисплейный метод выводит округленное значение по правилу округления, а мне этого совсем не нада. Почему так??? Подскажите пожалуйста, что делать. И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает. С уважением - Sada... |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Сообщение от Sada
И еще вопросик: как после нажатия Enter вернуть курсор в тот же контрол??? вызывал методы контролов и enter() и gotfocus() и setFocus() ничего не помогает.
С уважением - Sada... |
|
|
|
|
#3 |
|
Программатор
|
Цитата:
Сообщение от KMV
Если перекрытом методе enter() не вызывать super() курсор останеться в контроле.
|
|
|
|
|
#4 |
|
Участник
|
Дисплейный метод делает округление, т.к. у него есть тип. Округление происходит в соответствии с настройками этого типа.
|
|
|
|
|
#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). | |
|
|
#6 |
|
Участник
|
Цитата:
Сообщение от Sada
Не помогло....
|
|
|
|
|
#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;
} Спасибо большое С этим разобрались... но вот как быть с округлением???...
|
|
|
|
|
#8 |
|
----------------
|
С округлением - надо завести EDT с большим кол-вом знаков после запятой и именно его возвращатьв методе. Только есть одна мелочь - они всегда будут все показываться, даже если все =0
а в task можно просто taskId заменить на 0 (до super) |
|
|
|
|
#9 |
|
Axapta
|
Посмотрите на возвращаемый EDT дисплей-метода. Он имеет нужную вам точность? Округление так же может быть где-нибудь в коде.
Последний раз редактировалось oip; 01.06.2006 в 11:13. |
|
|
|
|
#10 |
|
Программатор
|
Да, действительно...
Про то что EDT в таких случаях требуется я и не знал .Всем огромное спасибо!!! Все работает как надо С уважением - Sada... |
|
|